第51套
1.程式填空題
給定程式中,函式fun的功能是將不帶頭結點的單向鏈表逆置,即若原鏈表從頭至尾結點資料域依次為:2、4、6、8、10,逆置后,從頭至尾結點資料域依次為:10、8、6、4、2,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #include <stdlib.h> #define N 5 typedef struct node { int data; struct node *next; } NODE; /**********found**********/ __1__ fun(NODE *h) { NODE *p, *q, *r; p = h; if (p == NULL) return NULL; q = p->next; p->next = NULL; /**********found**********/ while (__2__) { r = q->next; q->next = p; p = q; /**********found**********/ q = __3__ ; } return p; } NODE *creatlist(int a[]) { NODE *h,*p,*q; int i; h=NULL; for(i=0; i<N; i++) { q=(NODE *)malloc(sizeof(NODE)); q->data=https://www.cnblogs.com/cs-whut/archive/2022/11/07/a[i]; q->next = NULL; if (h == NULL) h = p = q; else { p->next = q; p = q; } } return h; } void outlist(NODE *h) { NODE *p; p=h; if (p==NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d", p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } int main() { NODE *head; int a[N]={2,4,6,8,10}; head=creatlist(a); printf("\nThe original list:\n"); outlist(head); head=fun(head); printf("\nThe list after inverting :\n"); outlist(head); return 0; }
2.程式修改題
給定程式中,函式fun的功能是將字串s中位于奇數位置的字符或ASCII碼為偶數的字符放入字串t中(規定第1個字符放在第0位中),
例如,字串中的資料為:AABBCCDDEEFF,則輸出應為:ABBCDDEFF,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #include <string.h> #define N 80 void fun(char *s, char t[]) { int i, j=0; for(i=0; i<strlen(s); i++) /***********found**********/ if(i%2 && s[i]%2==0) t[j++]=s[i]; /***********found**********/ t[i]='\0'; } int main() { char s[N], t[N]; printf("\nPlease enter string s : "); gets(s); fun(s, t); printf("\nThe result is : %s\n",t); return 0; }
3.程式設計題
撰寫函式fun,其功能是將M行N列的二維陣列中的按列的順序依次存放到一維陣列中,
例如,二維陣列中的資料為
33 33 33 33
44 44 44 44
55 55 55 55
則一維陣列中的內容應為:
33 44 55 33 44 55 33 44 55 33 44 55,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> void NONO(void); void fun(int (*s)[10], int *b, int *n, int mm, int nn) { } int main() { int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j; int a[100]={0}, n=0; printf("The matrix:\n"); for(i=0; i<3; i++) { for(j=0;j<4; j++) printf("%3d",w[i][j]); printf("\n"); } fun(w,a,&n,3,4); printf("The A array:\n"); for(i=0;i<n;i++) printf("%3d",a[i]); printf("\n\n"); NONO(); return 0; } void NONO(void) {/* 請在此函式內打開檔案,輸入測驗資料,呼叫 fun 函式,輸出資料,關閉檔案, */ FILE *rf, *wf ; int i, j, k ; int w[10][10], a[100], n = 0, mm, nn ; rf = fopen("in.dat", "r") ; wf = fopen("out.dat", "w") ; for(k = 0 ; k < 5 ; k++) { fscanf(rf, "%d %d", &mm, &nn) ; for(i = 0 ; i < mm ; i++) for(j = 0 ; j < nn ; j++) fscanf(rf, "%d", &w[i][j]) ; fun(w, a, &n, mm, nn) ; for(i = 0 ; i < n ; i++) fprintf(wf, "%3d", a[i]); fprintf(wf, "\n") ; } fclose(rf) ; fclose(wf) ; }
1.(1)NODE * (2)q!=NULL (3)r 2. if(i%2 || s[i]%2==0) t[j]='\0'; 3. void fun(int (*s)[10], int *b, int *n, int mm, int nn) { int i,j,k=0; for (j=0;j<nn;j++) for (i=0;i<mm;i++) b[k++]=s[i][j]; *n=k; }第51套參考答案
第52套
1.程式填空題
給定程式中,函式fun的功能是:計算形參x所指陣列中N個數的平均值(規定所有數均為非負數),將所指陣列中大于平均值的資料移至陣列的前部,小于等于平均值的資料移至陣列的后部,平均值作為函式值回傳,在主函式中輸出平均值和移動后的資料,
例如,有10個非負數:41 17 34 0 19 24 28 8 12 14,平均值為:19.700000
移動后的輸出為:41 34 24 28 17 0 19 8 12 14,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdlib.h> #include <stdio.h> #define N 10 double fun(double *x) { int i, j; double s, av, y[N]; s=0; for (i=0; i<N; i++) s=s+x[i]; /**********found**********/ av=__1__; for(i=j=0; i<N; i++) if( x[i]>av ) { /**********found**********/ y[__2__]=x[i]; x[i]=-1; } for(i=0; i<N; i++) /**********found**********/ if( x[i]!= __3__) y[j++]=x[i]; for(i=0; i<N; i++)x[i] = y[i]; return av; } int main() { int i; double x[N]; for(i=0; i<N; i++) { x[i]=rand()%50; printf("%4.0f ",x[i]); } printf("\n"); printf("\nThe average is: %f\n",fun(x)); printf("\nThe result :\n",fun(x)); for(i=0; i<N; i++) printf("%5.0f ",x[i]); printf("\n"); return 0; }
2.程式修改題
在主函式中從鍵盤輸入若干個數放入陣列中,用0結束輸入并放在最后一個元素中,給定程式中,函式fun的功能是:計算陣列元素中值為正數的平均值(不包括0),
例如,陣列中元素值依次為:39,-47,21,2,-8,15,0,則程式的運行結果為:19.250000,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> double fun ( int x[]) { /************found************/ int sum = 0.0; int c=0, i=0; while (x[i] != 0) { if (x[i] > 0) { sum += x[i]; c++; } i++; } /************found************/ sum \= c; return sum; } int main( ) { int x[1000]; int i=0; printf( "\nPlease enter some data (end with 0): " ); do { scanf("%d", &x[i]); } while (x[i++] != 0); printf("%f\n", fun(x)); return 0; }
3.程式設計題
撰寫函式fun,其功能是:根據以下公式計算S,計算結果作為函式值回傳,n通過形參傳入,

例如,若n=11,函式回傳值為1.833333,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> void NONO(void) float fun(int n) { } int main() { int n; float s; printf("\nPlease enter N:"); scanf("%d", &n); s = fun(n); printf("the result is: %f\n", s); NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ FILE *fp, *wf ; int i, n ; float s; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(fp, "%d", &n) ; s = fun(n) ; fprintf(wf, "%f\n", s) ; } fclose(fp) ; fclose(wf) ; }
1.(1)s/N (2)j++ (3)-1 2. double sum = 0.0; sum /= c; 3. float fun(int n) { int i; float s=0,t=0; for (i=1;i<=n;i++) { t=t+i; s=s+1/t; } return s; }第52套參考答案
第53套
1.程式填空題
給定程式中,函式fun的功能是:把形參s所指字串中最右邊的n個字符復制到形參t所指字符陣列中,形成一個新串,若s所指字串的長度小于n,則將整個字串復制到形參t所指字符陣列中,
例如,形參s所指字串為:abcdefgh,n的值為5,程式執行后t所指字符陣列中的字串應為:defgh,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #include <string.h> #define N 80 void fun(char *s, int n, char *t) { int len,i,j=0; len=strlen(s); /**********found**********/ if(n>=len) strcpy(__1__); else { /**********found**********/ for(i=len-n; i<=len-1; i++) t[j++]= __2__ ; /**********found**********/ t[j]= __3__ ; } } int main() { char s[N],t[N]; int n; printf("Enter a string: "); gets(s); printf( "Enter n:"); scanf("%d",&n); fun(s,n,t); printf("The string t : "); puts(t); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:統計一個無符號整數中各位數字值為零的個數,通過形參傳回主函式,并把該整數中各位上最大的數字值作為函式值回傳,
例如,若輸入無符號整數30800,則數字值為零的個數為3,各位上數字值最大的是8,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> int fun(unsigned n, int *zero) { int count=0,max=0,t; do { t=n%10; /**************found**************/ if(t=0) count++; if(max<t) max=t; n=n/10; }while(n); /**************found**************/ zero=count; return max; } int main() { unsigned n; int zero,max; printf("\nInput n(unsigned): "); scanf("%d",&n); max = fun( n,&zero ); printf("\nThe result: max=%d zero=%d\n",max,zero); return 0; }
3.程式設計題
撰寫函式fun,其功能是:判斷字串是否為回文,若是,函式回傳1,否則回傳0,回文是指順讀和倒讀都一樣的字串,
例如,字串LEVEL是回文,則字串12312就不是回文,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #define N 80 void NONO(void); int fun(char *str) { } int main() { char s[N] ; printf("Enter a string: ") ; gets(s) ; printf("\n\n") ; puts(s) ; if(fun(s)) printf(" YES\n") ; else printf(" NO\n") ; NONO() ; return 0; } void NONO(void) {/* 請在此函式內打開檔案,輸入測驗資料,呼叫 fun 函式,輸出資料,關閉檔案, */ FILE *rf, *wf ; int i ; char s[N] ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%s", s) ; if(fun(s)) fprintf(wf, "%s YES\n", s) ; else fprintf(wf, "%s NO\n", s) ; } fclose(rf) ; fclose(wf) ; }
1.(1)t,s (2)s[i] (3)'\0' 2. if(t==0) *zero=count; 3. int fun(char *str) { int i,j; for (j=0;str[j]!='\0';j++); j--; for (i=0;i<=j;i++,j--) if (str[i]!=str[j]) return 0; return 1; }第53套參考答案
第54套
1.程式填空題
給定程式中,函式fun的功能是:計算下列多項式的值

例如,當n=10時,輸出結果為:-0.204491,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> double fun(int n) { int i, k; double s, t; s=0; /**********found**********/ k=__1__; for(i=1; i<=n; i++) { /**********found**********/ t=__2__; s=s+k*(2*i-1)*(2*i+1)/(t*t); /**********found**********/ k=k*__3__; } return s; } int main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); } printf("\nThe result is: %f\n",fun(n)); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:根據形參m的值(2<=m<=9),在m行m列的二維陣列中存放如下所示規律的資料,由main函式輸出,
例如,若輸入2,則輸出
1 2
2 4
若輸入4,則輸出
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #define M 10 int a[M][M] = {0} ; /**************found**************/ fun(int **a, int m) { int j, k ; for (j = 0 ; j < m ; j++ ) for (k = 0 ; k < m ; k++ ) /**************found**************/ a[j][k] = k * j ; } int main ( ) { int i, j, n ; printf ( " Enter n : " ) ; scanf ("%d", &n ) ; fun ( a, n ) ; for ( i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) printf ("%4d", a[i][j]) ; printf ( "\n" ) ; } return 0; }
3.程式設計題
程式定義了N*N的二維陣列,并在主函式中自動賦值,撰寫函式fun,其功能是:使陣列左下三角元素中的值乘以n,
例如,若n的值為3,a陣列中的值為
1 9 7
2 3 8
4 5 6
則回傳主函式后a陣列中的值應為
3 9 7
6 9 8
12 15 18
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <stdlib.h> #define N 5 void NONO(void); void fun ( int a[][N], int n) { } int main ( ) { int a[N][N], n, i, j; printf("***** The array *****\n"); for ( i =0; i<N; i++ ) { for ( j =0; j<N; j++ ) { a[i][j] = rand()%10; printf( "%4d", a[i][j] ); } printf("\n"); } do n = rand()%10 ; while ( n >=3 ); printf("n = %4d\n",n); fun ( a, n ); printf ("***** THE RESULT *****\n"); for ( i =0; i<N; i++ ) { for ( j =0; j<N; j++ ) printf("%4d", a[i][j]); printf("\n"); } NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ FILE *rf, *wf ; int i, j, n, a[5][5] ; rf = fopen("in.dat", "r") ; wf = fopen("out.dat", "w") ; for(i = 0 ; i < 5 ; i++) for(j = 0 ; j < 5 ; j++) fscanf(rf, "%d ", &a[i][j]) ; fscanf(rf, "%d", &n) ; fun(a, n) ; for ( i = 0; i < 5; i++ ) { for ( j = 0; j < 5; j++ ) fprintf(wf, "%4d", a[i][j]); fprintf(wf, "\n"); } fclose(rf) ; fclose(wf) ; }
1.(1)1 (2)2*i (3)(-1) 2. void fun(int a[][M], int m) a[j][k] = (k+1) * (j+1) ; 3. void fun ( int a[][N], int n) { int i,j; for (i=0;i<N;i++) for (j=0;j<=i;j++) a[i][j]=a[i][j]*n; }第54套參考答案
第55套
1.程式填空題
給定程式中,函式fun的功能是:將a所指3*5矩陣中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原來左邊的各列依次繞到右邊,
例如,有下列矩陣
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
若k為2,程式執行結果為
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #define M 3 #define N 5 void fun(int (*a)[N],int k) { int i,j,p,temp; /**********found**********/ for(p=1; p<= __1__; p++) for(i=0; i<M; i++) { temp=a[i][0]; /**********found**********/ for(j=0; j< __2__ ; j++) a[i][j]=a[i][j+1]; /**********found**********/ a[i][N-1]= __3__; } } int main( ) { int x[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j; printf("The array before moving:\n\n"); for(i=0; i<M; i++) { for(j=0; j<N; j++) printf("%3d",x[i][j]); printf("\n"); } fun(x,2); printf("The array after moving:\n\n"); for(i=0; i<M; i++) { for(j=0; j<N; j++) printf("%3d",x[i][j]); printf("\n"); } return 0; }
2.程式修改題
給定程式中,函式fun的功能是:從s所指字串中,找出t所指子串的個數作為函式值回傳,
例如,當s所指字串中的內容為:abcdabfab,t所指字串的內容為:ab,則函式回傳值為3,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #include <string.h> int fun(char *s,char *t) { int n; char *p,*r; n=0; while (*s) { p=s;r=t; while (*r) /************found************/ if(*r==*p) {r++;p++} else break; /************found************/ if(r=='\0') n++; s++; } return n; } int main() { char s[100],t[100]; int m; printf("\nPlease enter string S:"); scanf("%s",s); printf("\nPlease enter substring t:"); scanf("%s",t); m=fun(s,t); printf("\nThe result is: m=%d\n",m); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:實作兩個字串的連接(不使用庫函式strcat),即把p2所指的字串連接到p1所指的字串后,
例如,分別輸入兩個字串:FirstString- 和 SecondString,程式輸出:FirstString-SecondString,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> void NONO(void); void fun(char p1[], char p2[]) { } int main() { char s1[80], s2[40] ; printf("Enter s1 and s2:\n") ; scanf("%s%s", s1, s2) ; printf("s1=%s\n", s1) ; printf("s2=%s\n", s2) ; printf("Invoke fun(s1,s2):\n") ; fun(s1, s2) ; printf("After invoking:\n") ; printf("%s\n", s1) ; NONO() ; return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入測驗資料,呼叫fun函式,輸出資料,關閉檔案,*/ int i ; FILE *rf, *wf ; char s1[80], s2[40] ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%s", s1) ; fscanf(rf, "%s", s2) ; fun(s1, s2) ; fprintf(wf, "%s\n", s1) ; } fclose(rf) ; fclose(wf) ; }
1.(1)k (2)N (3)temp 2. if(*r==*p) {r++;p++;} if(*r=='\0') 3. void fun(char p1[], char p2[]) { int i,j; for (i=0;p1[i]!='\0';i++); for (j=0;p2[j]!='\0';j++) p1[i++]=p2[j]; p1[i]='\0'; }第55套參考答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/528066.html
標籤:其他
上一篇:淺談PHP設計模式的橋接模式
