2012復試筆試題以及自己的答案_第1頁
2012復試筆試題以及自己的答案_第2頁
2012復試筆試題以及自己的答案_第3頁
2012復試筆試題以及自己的答案_第4頁
2012復試筆試題以及自己的答案_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、程序設計 C 語言一、程序段中的錯誤:分析錯誤的原因,并進行修改。(每個 5 分,共 10 分)、1、函數 swap 將兩個字符串(字符數組作實參,長度不超過 100)的內容進行交換。 void swap(char *pa,char *pb)char *temp; temp=pa; pa=pb; pb=temp;錯誤原因:只是將 swap 中的局部變量 pa 和 pb 的值進行了交換,而作為實參的字符數組中的內容并沒有改變。改正:void swap(char *pa,char *pb)if(strlen(pa)!=strlen(pb)exit(-1);char tmp;i=-1;while(p

2、a+i)tmp=pai; pai=pbi; pbi=tmp;2、程序片段為: char pa=”ABCDE”; char *pb=”EFG”; pb1=A; pb=pa; strcpy(pa,”ABCDEFGXYZ”); pb=”DU”;錯誤點一:pb1=A,錯誤原因:pb 指向一個常量字符串,不可修改其串中某個元素。錯誤點二:strcpy(pa,”ABCDEFGXYZ”),錯誤原因:pa 字符數組長度不夠,導致溢出。二、簡答題(共 30 分)1、設 arr 為整型數組,num 和 item 為整型變量,N=數組元素個數-1。需要查找 item 是否在數組中,如果程序片段為 for(num=N

3、;arrnum!=item;num-); pr f(“%dn”,num); 可能導致的異常結果是什么?為什么?(8 分)異常結果:num 為負數,當查找的 item 不在數組中的時候,num 會變?yōu)樨摂担敝琳抑?item,這時查找已經越界了。2、設有遞歸函數:value(n)x;if(n=0)return0;elsescanf(“%d”,&x);return(value(n-1)+x); 如該函數被調用時,參數 n 值為 4,輸入的 x 的值依次為 11,22,33,44,函數調用結束時返回值是多少?并用圖描述函數遞歸執(zhí)行過程。(10 分)程序段的功能是將輸入的 n 個值求和,因此返回值是:

4、11+22+33+44=110。函數遞歸執(zhí)行過程:Value(4)x=11;value(3)x=22;value(2)x=33;value(1)x=44;value(0)return 11+99return 22+77return 33+44return 44+0return 0=1103、數組作為函數參數有三種形式: 1)實參是數組元素; 2)形參是指針,實參是數組; 3)函數的形參和實參都是數組分別是采用什么參數傳遞方式?(5 分)參數傳遞方式分別為:傳值、 傳地址、傳地址。4、采用高度抽象概念有利于程序設計,C 語言中循環(huán)語句do s whi);對應的顯示控制結構是什么?請使用偽代碼形式

5、(通過條件轉移指令)表達。(7 分)L:s;cmp B,0 jnzL;三、程序設計(共 45 分,每題的算法 50%,語法 30%,完整 20%)1、編寫完整程序:利用 2 個函數對輸入的兩個分數進行加、減、乘、除四則運算和輸出用分數表示的結果。(注:輸入格式為:%ld/%ld%c%ld/%ld,輸出格式為%ld/%ld),例如:輸入 1/4+1/3,輸出:7/12 (10 分)#include#includelong fz1,fm1,fz2,fm2,fz3,fm3;char op;long(long a,long b)r;whi)r=a%b; a=b;b=r;return a;void co

6、mpute()long zxg; switch(op)case +:case -:zxg=fm1*fm2/ fz1=zxg/fm1*fz1; fz2=zxg/fm2*fz2;(fm1,fm2);if(op=+)fz3=fz1+fz2; else fz3=fz1-fz2; fm3=zxg;break; case *:fz3=fz1*fz2; fm3=fm1*fm2; break;case /:fz3=fz1*fm2; fm3=fm1*fz2; break;default:exit(-1);zxg=(fz3,fm3);fz3=fz3/zxg;fm3=fm3/zxg;prf(%ld/%ldn,fz3

7、,fm3);main()while(scanf(%ld/%ld%c%ld/%ld,&fz1,&fm1,&op,&fz2,&fm2)!=EOF)compute();system(pause);return 0;2、編寫函數,將單鏈表進行逆序,即表頭變表尾,表尾變表頭(15 分) 其點定義為:struct nodenum, struct node *next ;函數原型為:void turn(struct node *head)struct nodenum;struct node*next;void turn(struct node *head)struct node *tmp1=NULL; st

8、ruct node *tmp2=head-next;while(tmp2)head-next=tmp2-next; tmp2-next=tmp1; tmp1=tmp2;tmp2=head-next;head-next=tmp1;3、編寫完整程序:接收從鍵盤輸入的僅由數字字符的字符串(假設字符串的最大長度為 50),統計并輸出每個數字(09)的重復次數。(8 分)#include #includemain()char ch;num10=0;prf(string:n);while(scanf(%c,&ch)!=EOF&ch!=q)numch-0+;i;for(i=0;i10;i+)prf(%d 出

9、現%d 次n,i,numi);system(pause);return 0;4、編寫完整程序,采用結構數組和指向結構的指針,接收輸入的 100 個學生信息(包括學號和 C 語言課程期末總成績),輸出最高、最低成績和分別對應的學號(可能有多個同學都是最高分,可能有多個同學都是最低分)。(12 分)#include #include struct nodenum; cj;main()struct node stu100;max=-1,min=200;i; for(i=0;imax)max=stui.cj;if(stui.cjmin=stui.cj;prf(max=%dn,max);for(i=0;i100;i+)if(stui.cj=max)prf(%dn,stui num);prf(min=%dn,min);for(i=0;i100;i+)if(stui.cj=min)prf(%dn,stui.num);system(pause);return 0;四、從程序執(zhí)行效率方面考慮,請簡述 C 語言采取的一些措施和原因。(15 分)(指針 、內存管理) ,這個下看看吧哈工大大數問題:a+aa+aaa+.+n 個 a=? #include#include

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論