廣聯達軟體開發筆試題
阿新 • • 發佈:2019-02-11
1.[程式設計]給定一個整數,獲得它的逆序數,如整數87231,逆序後為13278
// nixushu.cpp : Defines the entry point for the console application. // //思路是先轉成字串再操作 #include "stdafx.h" #include <string> #include <iostream> //返回值為計算出的逆序數 int fun(int num) { char an[20]; int len, t, neg = 0; //len:字串的長度,t:交換臨時變數,此種情況定義成int和char是一樣的 if(num < 0) { num = -num; neg = 1; //看來neg是標識num是否為負數,如果為負數,只計算整數部分 } sprintf(an, "%d", num); //把一個格式化資料寫到字串中 len = strlen(an); //返回字串的長度 for(int i = 0; i < len/2; i++) //前後交換 { t = an[i]; an[i] = an[len-1-i]; an[len-1-i] = t; } num = atoi(an); //把字串轉換成整數等 return neg?-num:num; } int _tmain(int argc, _TCHAR* argv[]) { int num = 0; std::cin>>num; std::cout<<fun(num)<<std::endl; return 0; }
// nixushu2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> int _tmain(int argc, _TCHAR* argv[]) { std::cout<<"輸出方式2"<<std::endl; int num; std::cin>>num; for(; num > 0; num = num/10) { std::cout<<(num%10); } return 0; }
2.[程式設計]兩個無序連結串列A和B,將其合併為遞增排列的一個連結串列
#include<stdio.h> #include<stdlib.h> struct stud/*定義連結串列*/ { int data; struct stud *next; }; void pai_xue(struct stud *head1,struct stud *head2,int count1,int count2)/*氣泡排序法*/ { int i,j,temp=0; struct stud *p; for(i=0;i<count1-1;++i) for(p=head1->next;p->next!=NULL;p=p->next)/*對連結串列1進行排序*/ { if(p->data>p->next->data) { temp=p->data; p->data=p->next->data; p->next->data=temp; } } for(i=0;i<count2-1;++i) for(p=head2->next;p->next!=NULL;p=p->next)/*對連結串列2進行排序*/ { if(p->data>p->next->data) { temp=p->data; p->data=p->next->data; p->next->data=temp; } } printf("\n連結串列1排完序後\n");/*輸出連結串列1和2*/ p=head1->next; while(p) { printf("%d",p->data); p=p->next; } printf("\n"); printf("\n連結串列2排完序後\n"); p=head2->next; while(p) { printf("%d",p->data); p=p->next; } printf("\n"); } void main() { struct stud *head1,*head2,*p,*q,*head3; int count1=1,count2=1; head3=(struct stud *)malloc(sizeof(struct stud *));/*定義連結串列頭結點,並分配空間*/ head3->next=NULL; head1=(struct stud *)malloc(sizeof(struct stud *)); head2=(struct stud *)malloc(sizeof(struct stud *)); p=(struct stud *)malloc(sizeof(struct stud *)); q=(struct stud *)malloc(sizeof(struct stud *)); head1->next=NULL; head2->next=NULL; printf("輸入一個數據以999結束\n"); scanf("%d",&p->data); while(p->data!=999)/*連結串列1輸入資料*/ { count1++; p->next=head1->next; head1->next=p; printf("輸入一個數據以999結束\n"); p=(struct stud *)malloc(sizeof(struct stud *)); scanf("%d",&p->data); } printf("現在開始給第二個連結串列輸入資料\n"); printf("輸入一個數據以999結束\n"); scanf("%d",&q->data); while(q->data!=999)/*連結串列2輸入資料*/ { count2++; q->next=head2->next; head2->next=q; printf("輸入一個數據以999結束\n"); q=(struct stud *)malloc(sizeof(struct stud *)); scanf("%d",&q->data); } pai_xue(head1,head2,count1,count2); head1=head1->next; head2=head2->next; while(head1!=NULL&&head2!=NULL)/*將排序好的連結串列1和2 的資料匯入連結串列3*/ { if(head1->data<=head2->data) { p=head1->next; head1->next=head3->next; head3->next=head1; head1=p; } else { q=head2->next; head2->next=head3->next; head3->next=head2; head2=q; } } if(head1!=NULL)/*如果有連結串列1或2的資料不為空,將剩下的資料匯入連結串列3中*/ { p=head1; while(p!=NULL) { q=p->next; p->next=head3->next; head3->next=p; p=q; } } if(head2!=NULL) { q=head2; while(q!=NULL) { p=q->next; q->next=head3->next; head3->next=q; q=p; } } q=head3->next;/*將連結串列倒置,原來是由大到小,倒置成由小到大*/ head3->next=NULL; while(q!=NULL) { p=q->next; q->next=head3->next; head3->next=q; q=p; } printf("兩個連結串列合併後由小到大為\n"); p=head3->next; while(p) { printf("%d",p->data); p=p->next; } }
3.[程式設計]找出兩個排序陣列的合集,如[1,3,4,5,6],[3,5,7,9],合集是[3,5],用一種高效的方法程式設計實現
4.[程式設計]將一個句子的單詞反過來(單詞原樣),比如"i am cheating"變成"cheating am i"
5.[設計]有一個遙控,有四個按鈕,編號為0,1,2,3,其中0,2控制電器1和電器2的開,1,3控制電器1,2的關,設計一個系統,要求能夠開關客廳的電視和臥室的燈,設計一個系統,設計相關的類,要求具有較好的擴充套件性,最好採用UML方式,或者描述類的主要屬性和關鍵操作
論述題:描述自己在開發過程解決的一個最成功的問題,描述這個問題,並說明是用什麼方法、途徑解決的,給出必要的資料結構和演算法