C語言程序設計上機試題詳解版_第1頁
C語言程序設計上機試題詳解版_第2頁
C語言程序設計上機試題詳解版_第3頁
C語言程序設計上機試題詳解版_第4頁
C語言程序設計上機試題詳解版_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一套:1.1 填空 給定程序中,函數fun的功能是:將形參n所指變量中,各位上為偶函數的數去除,剩余的書按原來從高位到低位的順序組成一個新的數,并通過形參指針n傳回所指變量。void fun(unsigned long *n) unsigned long x=0, i; int t; i=1; while(*n)/*found*/ t=*n % 10 ;/*found*/ if(t%2!= 0) x=x+t*i; i=i*10; *n =*n /10; /*found*/ *n=x; 1.2 改錯 給定程序MODI1.C 中函數fun的功能是:計算n!。double fun ( int n

2、) double result = 1.0 ;/*found*/ if (n = 0) return 1.0 ; while( n 1 & n 170 )/*found*/ result *= n-; return result ;1.3 程序 請編寫一個函數fun,它的功能是:將一個數字字符串轉換為一個整數(不得調用C語言提供的將字符串轉換為整數的函數)。long fun ( char *p) /* 以下代碼僅供參考 */ int i, len, t; /* len為串長,t為正負標識 */ long x=0; len=strlen(p); if(p0=-) t=-1; len-; p+;

3、else t=1; /* 以下完成數字字符串轉換為一個數字 */ while(*p) x = x*10-48+(*p+); return x*t; 第二套:2.1填空 給定程序中,函數fun的功能是將形參給定的字符串、整數、浮點數些到文本文件中,再用字符方式從此文本文件中逐個讀入并顯示在終端屏幕上。void fun(char *s, int a, double f)/*found*/ FILE * fp; char ch; fp = fopen(file1.txt, w); fprintf(fp, %s %d %fn, s, a, f); fclose(fp); fp = fopen(file

4、1.txt, r); printf(nThe result :nn); ch = fgetc(fp);/*found*/ while (!feof(fp) /*found*/ putchar(ch); ch = fgetc(fp); putchar(n); fclose(fp); 2.2 改錯 給定程序MODI1.C中函數fun的功能是:依次取出字符串中所有數字字符,形成新的字符串,并取代原字符串。請改正函數fun中指定部位的錯誤,使它能得出正確的結果。#include void fun(char *s) int i,j; for(i=0,j=0; si!=0; i+) if(si=0 & s

5、i=9)/*found*/ sj+=si;/*found*/ sj=0;2.3程序 請編寫函數fun,函數的功能是:將M行N列的二維數組中的字符數據,按列的順序依次放到一個字符串中。void fun(char sN, char *b) int i,j,n=0; for(i=0; i N;i+) /* 請?zhí)顚懴鄳Z句完成其功能 */ for(j = 0 ; j next=NULL; for(i=1; idata=rand()%m; s-next=p-next; p-next=s; p=p-next; /*found*/ return h;3.3程序 請編寫函數fun,函數的功能是:統計一行字符串

6、中單詞的個數,作為函數值返回。一行字符串在主函數中輸入,規(guī)定所有單詞由小寫字母組成,單詞之間由若干個空格隔開,一行的開始沒有空格。(有問題)int fun( char *s) int k = 1 ; while(*s) if (*s = ) k+ ; s+ ; return k ; 第四套:4.1填空 程序通過定義學生結構體變量,存儲了學生的學號、姓名和3門課的成績。所有學生數據均以二進制方式輸出到文件中。函數fun的功能是從形參filename所指的文件中讀入學生數據,并按照學號從小到大排列后,再用二進制方式把排序后的學生數據輸出到filename所指的文件中,覆蓋原來的文件內容。#defi

7、ne N 5typedef struct student long sno; char name10; float score3; STU;void fun(char *filename) FILE *fp; int i, j; STU sN, t;/*found*/ fp = fopen(filename, rb); fread(s, sizeof(STU), N, fp); fclose(fp); for (i=0; iN-1; i+) for (j=i+1; jsj.sno) t = si; si = sj; sj = t; fp = fopen(filename, wb);/*foun

8、d*/ fwrite(s, sizeof(STU), N, fp); fclose(fp);4.2改錯 給定程序MODI1.C中函數fun的功能是:在字符串的最前端假如n個*號,形成新串,并且覆蓋原串。注意:字符串的長度最長允許為79。void fun ( char s, int n ) char a80 , *p; int i;/*found*/ p=s; for(i=0; in; i+) ai=*; do ai=*p; i+;/*found*/ while(*p+); ai=0; strcpy(s,a);4.3程序 請編寫函數fun,函數的功能是:統計各年齡段的人數。N個年齡通過調用隨機函

9、數獲得,并放在主函數的age數組中;要求函數把0至9歲年齡段的人數放在d0中,把10至19歲年齡段的認輸放在d1中,把20至29歲年齡段的人數放在d2中,期于依此類推,把100歲(含100)以上年齡的人數都放在d10中。結果在主函數中輸出。void fun( int *a, int *b) int i, j ; for(i = 0 ; i M ; i+) bi = 0 ; for(i = 0 ; i 10) bM - 1+ ; else bj+ ; 第五套:5.1填空 給定程序中,函數fun的功能是將參數給定的字符串、整數、浮點數寫到文本文件中,再用字符串方式從此文本文件中逐個讀入,并調用庫函

10、數atoi和atof將字符串轉換成響應的整數、浮點數,然后將其顯示在屏幕上。void fun(char *s, int a, double f)/*found*/ FILE * fp; char str100, str1100, str2100; int a1; double f1; fp = fopen(file1.txt, w); fprintf(fp, %s %d %fn, s, a, f);/*found*/ fclose(fp) ; fp = fopen(file1.txt, r);/*found*/ fscanf(fp,%s%s%s, str, str1, str2); fclos

11、e(fp); a1 = atoi(str1); f1 = atof(str2); printf(nThe result :nn%s %d %fn, str, a1, f1);5.2改錯 給定程序MODI1.C中函數fun的功能是:對N名學生的學習成績按從高到低的順序找出前m(10)名學生出來,并將這些學生數據存放在一個動態(tài)分配的連續(xù)存儲區(qū)中,此存儲區(qū)的首笛子作為函數值返回。typedef struct ss char num10; int s; STU;STU *fun(STU a, int m) STU bN, *t; int i,j,k;/*found*/ t=(STU *)calloc(

12、sizeof(STU),m); for(i=0; iN; i+) bi=ai; for(k=0; km; k+) for(i=j=0; i bj.s) j=i;/*found*/ tk=bj; bj.s=0; return t;5.3程序 請編寫函數fun,函數的功能是:刪去一維數組中所有相同的數,使之只剩一個。數組中的數已按由小到大的順序排列,函數返回刪除后數組中數據的個數。例如,一維數組中的數據是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。刪除后,數組中的內容應該是:2 3 4 5 6 7 8 9 10。int fun(int a, int n) i

13、nt i, j = 1, k = a0 ; for(i = 1 ; i sl) return t; else return s;6.3程序 請編寫函數fun函數的功能是:移動字符串中的內容,移動的規(guī)則如下:把第1到第m個字符,平移到字符串的最后,把第m+1到最后的字符移動到字符串的前部。例如,字符串中原由的內容為:ABCDEFGHIJK,m的值為3,則移動后,字符串中的內容應該是DEFGHIJKABC。void fun1(char *w) /* 本函數的功能是將字符串中字符循環(huán)左移一個位置 */ int i; char t; t=w0; for(i=0;istrlen(w)-1;i+) wi=

14、wi+1; wstrlen(w)-1=t; void fun(char *w, int m) /* 可調用fun1函數左移字符 */ int i; for(i = 0 ; i m ; i+) fun1(w); 第七套:7.1填空 程序通過定義并賦初值的方式,利用結構體變量存儲了一名學生的信息。函數fun的功能是輸出這位學生的信息。typedef struct int num; char name9; char sex; struct int year,month,day ; birthday; float score3;STU;/*found*/void show(STU tt) int i;

15、 printf(n%d %s %c %d-%d-%d, tt.num, , tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i3; i+)/*found*/ printf(%5.1f, tt.scorei); printf(n);7.2改錯 給定程序MODI1.C中函數fun的功能是:求出數組中最大數和次最大數,并把最大數和a0中的數對調、次最大數和a1中的數對調。int fun ( int * a, int n ) int i, m, t, k ; for(i=0;i2;i+) /*

16、found*/ m=i; for(k=i+1;kam) m=k; t=ai;ai=am;am=t; 7.3程序 請編寫一個函數unsigned fun (unsigned w),w是一個大于10的無符號整數,若w是n(2)位的整數,函數求出的w的低n-1位的數作為函數值返回。例如:W值為5923,則函數返回923;W值位923則函數返回23。unsigned fun ( unsigned w ) if(w10000) w %= 10000 ; else if(w1000) w %= 1000 ; else if(w100) w %= 100 ; else if(w10) w %=10 ; re

17、turn w ;第八套:8.1填空 給定程序通過定義并賦初值的方式,利用結構體變量存儲了一名學生的學號、姓名和3門課的成績。函數fun的功能是將該學生的各科成績都乘以一個系數a。void show(STU tt) int i; printf(%d %s : ,tt.num,); for(i=0; i3; i+) printf(%5.1f,tt.scorei); printf(n);/*found*/void modify(STU *ss,float a) int i; for(i=0; iscorei *=a; 8.2改錯 給定程序MODI1.C中的函數fun的功能是:求k!(k

18、 0) return (k*fun(k-1);/*found*/ else if ( k=0 ) return 1L;8.3程序 程序定義了NN的二維數組,并在主函數中自動賦值。請編寫函數fun(int a,int n),函數的功能是:使數組左下三角元素中的值乘以n。例如:若n的值為3,a數組中的值為 則返回主程序后a數組中的值應為 。int fun ( int aN, int n ) int i, j; for(i = 0 ; i N ; i+) for(j = 0 ; j next ;/*found*/ while (q) if (p-data q-data) t = p-data; p-

19、data = q-data; q-data = t; q = q-next; /*found*/ p = p-next ; 9.2改錯 給定程序MODI1.C中函數fun的功能是:將s所指字符串中的字母轉換為按字母序列的后續(xù)字母(但Z轉換為A,z轉換為a),其他字符不變。void fun (char *s)/*found*/ while(*s) if(*s=A & *s=a & *s=z) if(*s=Z) *s=A; else if(*s=z) *s=a; else *s += 1; /*found*/ s+; 9.3程序 請編寫函數fun,函數的功能是:移動一維數組中的內容;若豬組中有N個

20、整數,要求把下標從0到P(含P,P小于等于N-1)的數組元素平移到數組的最后。例如,一維數組中的原始內容為:1,2,3,4,5,6,7,8,9,10;P的值為3。移動后一維數組中的內容應為:5,6,7,8,9,10,1,2,3,4。void fun(int *w, int p, int n) int i, j = 0, bN ; for(i = p + 1 ; i n ; i+) bj+ = wi ; for(i = 0 ; i = p ; i+) bj+ = wi ; for(i = 0 ; i n ; i+) wi= bi ;第十套:10.1填空 給定程序中,函數fun的功能是:判定形參a

21、所指的NN(規(guī)定N為奇數)的矩陣是否是“幻方”,若是,函數返回值為1;不四,函數返回值為0。“幻方”的判定條件是:矩陣每行、每列、主對角線及反對角線上元素之和都相等。例如,以下33的矩陣就是一個“幻方”: 。int fun(int (*a)N) int i,j,m1,m2,row,colum; m1=m2=0; for(i=0; iN; i+) j=N-i-1; m1+=aii; m2+=aij; if(m1!=m2) return 0; for(i=0; iN; i+) /*found*/ row=colum= 0; for(j=0; jN; j+) row+=aij; colum+=aji

22、; /*found*/ if( (row!=colum) | (row!=m1) ) return 0; /*found*/ return 1;10.2改錯 給定程序MODI1.C中fun函數的功能是:根據整形形參m,計算如下公式的值。 例如,若主函數中輸入5,則應輸出-0.283333。double fun( int m ) double t = 1.0; int i; for( i = 2; i next;/*found*/ if (p=0) return; q = p-next; p-next = NULL; while (q) r = q-next; q-next = p;/*foun

23、d*/ p = q; q = r; h-next = p; 11.2改錯給定程序MODI1.C中函數fun的功能是:計算s所指字符串中含有t所指字符串的數目,并作為函數值返回。int fun(char *s, char *t) int n; char *p , *r; n=0; while ( *s ) p=s;/*found*/ r=t; while(*r) if(*r=*p) r+; p+; else break;/*found*/ if(*r= 0) n+; s+; return n;11.3程序fun函數功能:將放在字符串數組中的M個字符串(每串的長度不超過N),將順序合并組成一個新的

24、字符串。函數fun中給出的語句僅供參考。例如,字符串數組中的M個字符串為AAAA BBBBBBB CCC則合并后的字符串的內容應是:AAAABBBBBBBCCC。提示:strcat(a,b)功能是將字符串b復制到字符串a的串尾上,成為一個新串。 void fun(char aMN, char *b) /* 以下代碼僅供參考 */ int i; *b=0; for(i = 0 ; i next; p-next = NULL; while (q) /*found*/ r = q-next; q-next = p; p = q;/*found*/ q = r ; return p;12.2改錯 給定

25、程序MODI1.C中函數fun的功能是:計算s所指字符串中位于奇數位置的字符或ASCII碼為偶數的字符放入t所指數組中(規(guī)定第一個字符放在第0位中)。例如:字符串中的數據為:AABBCCDDDEEFF,則輸出應當是:ABBCDDEFF。void fun(char *s, char t) int i, j=0; for(i=0; istrlen(s); i+)/*found*/ if(i%2 | si%2=0) tj+=si;/*found*/ tj=0; 12.3程序 程序定義了MN的二維數組,按列的順序依次放到一維數組中。例如:二維數組中的數據為 則一維數組中為:33 44 55 33 44

26、 55 33 44 55 33 44 55。同2.3void fun(int (*s)10, int *b, int *n, int mm, int nn) /* 以下代碼僅供參考 */ int i,j,np=0; /* np用作b數組下標 */ for(i = 0 ; i nn ; i+) for(j = 0 ; j next ; while (p) /*found*/ q = p-next ; while (q) /*found*/ if (p-data = q-data) t = p-data; p-data = q-data; q-data = t; q = q-next; p = p

27、-next; 13.2 改錯 給定程序MODI1.C是建立一個帶頭節(jié)點的單向鏈表,并用隨機函數為個節(jié)點數據域賦值。函數fun的作用是求出單向鏈表節(jié)點(不包括頭節(jié)點)數據域中的最大值,并且作為函數值返回。typedef struct aa int data; struct aa *next; NODE;fun ( NODE *h ) int max=-1; NODE *p;/*found*/ p=h-next; while(p) if(p-datamax ) max=p-data;/*found*/ p=p-next; return max; 13.3 程序程序定義了MN的二維數組中數據,按行的順序依次放到一維數組中。一維數組中數據的個數放在形參n所指的存儲單元中。例如:二維數組中的數據為 則一維數組中為:33 33 33 33 44 44 44 44 55 55 55 55。void fun(int (*s)10, int *b, int *n, int mm, int nn) int i, j, k ; for(i = 0 ; i mm ; i+) for(j = 0 ; j next; while(p) if(p-data%2=0) sum +=p-data;/*found*/ p=p-next; return su

溫馨提示

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

評論

0/150

提交評論