第76套
1.程式填空題
給定程式中,函式fun的功能是:找出100~999之間(含100和999)所有整數中各位上數字之和為x(x為一正整數)的整數,然后輸出;符合條件的整數個數作為函式值回傳,
例如,若x=5時,100~999之間各位上數字之和為5的整數有:104、113、122、131、140、203、212、230、302、311、320、401、410、500,共有15個,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> int fun(int x) { int n, s1, s2, s3, t; n=0; t=100; /**********found**********/ while (t<=__1__) { /**********found**********/ s1=t%10; s2=(__2__)%10; s3=t/100; /**********found**********/ if(s1+s2+s3==__3__) { printf("%d ",t); n++; } t++; } return n; } int main() { int x=-1; while(x<0) { printf("Please input(x>0): "); scanf("%d",&x); } printf("\nThe result is: %d\n",fun(x)); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:從整數10至55之間,選出能被3整除且有一個位上的數是5的那些數,并把這些數放在b所指的陣列中,這些數的個數作為函式值回傳,規定,函式中a1存放個位數,a2存放十位數,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> int fun (int *b) { int k,a1,a2,i=0; for (k=10;k<=55;k++) { /************found************/ a2=k%10; a1=k-a2*10; if((k%3==0 && a2==5)||(k%3==0 && a1==5)) { b[i]=k; i++; } } /************found************/ return k; } int main() { int a[100],k,m; m=fun(a); printf("The result is:\n"); for (k=0;k<m;k++) printf("%4d",a[k]); printf("\n"); return 0; }
3.程式設計題
假定輸入的字串中只包含字母和*號,撰寫函式fun,它的功能是:將字串尾部的*號全部洗掉,前面和中間的*號不洗掉,
例如,字串中的內容為:*****A*BC*DEF*G***,洗掉后,字串的內容應當為:*****A*BC*DEF*G,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <string.h> void NONO(void); void fun( char *a ) { } int main() { char s[81]; printf("Enter a string:\n"); gets(s); fun( s ); printf("The string after deleted:\n"); puts(s); NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ FILE *in, *out ; int i ; char s[81] ; in = fopen("in.dat","r") ; out = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(in, "%s", s) ; fun(s) ; fprintf(out, "%s\n", s) ; } fclose(in) ; fclose(out) ; }
1.(1)999 (2)t/10 (3)x 2. a2=k/10; return i; 3. void fun( char *a ) { int i,j; for (i=0,j=0;a[i]!='\0';i++) if (a[i]!='*') j=0; else j++; a[i-j]='\0'; }第76套參考答案
第77套
1.程式填空題
給定程式中,函式fun的功能是:計算
直到||<=10-3,并把計算結果作為函式值回傳,
例如,若形參e的值為1e-3,函式的回傳值為2.985678,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> double fun(double e) { int i; double s, x; /**********found**********/ s=0; i=__1__; x=1.0; while(x>e) { /**********found**********/ __2__; /**********found**********/ x=(2.0*i-1)/((__3__)*(2.0*i)); s=s+x; } return s; } int main() { double e=1e-3; printf("\nThe result is: %f\n",fun(e)); }
2.程式修改題
給定程式中,函式fun的功能是:將s所指字串的正序和反序進行連接,形成一個新串放在t所指的陣列中,
例如,當s所指字串為“ABCD”時,則t所指字串中的內容應為“ABCDDCBA”,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #include <string.h> /************found************/ void fun (char s, char t) { int i, d; d = strlen(s); for (i = 0; i<d; i++) t[i] = s[i]; for (i = 0; i<d; i++) t[d+i] = s[d-1-i]; /************found************/ t[2*d-1] = '\0'; } int main() { char s[100], t[100]; printf("\nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("\nThe result is: %s\n", t); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:將s所指字串中除了下標為奇數,同時ASCII碼值也為奇數的字符外,其余的字符全部洗掉;串中剩余字符所形成的一個新串放在t所指的陣列中,
例如,若s所指字串中的內容為:ABCDEFG12345,則t所指陣列中的內容應為:135,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <string.h> void NONO(void); void fun(char *s, char t[]) { } int main() { char s[100], t[100]; printf("\nPlease enter string S:"); scanf("%s", s); fun(s, t); printf("\nThe result is: %s\n", t); NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ char s[100], t[100] ; FILE *rf, *wf ; int i ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%s", s) ; fun(s, t) ; fprintf(wf, "%s\n", t) ; } fclose(rf) ; fclose(wf) ; }
1.(1)0 (2)i++ (3)2.0*i 2. void fun (char *s, char *t) t[2*d] = '\0'; 3. void fun(char *s, char t[]) { int i,j=0; for (i=0;s[i]!='\0';i++) if (i%2==1 && s[i]%2==1) t[j++]=s[i]; t[j]='\0'; }第77套參考答案
第78套
1.程式填空題
給定程式中,函式fun的功能是:逆置陣列元素中的值,
例如,若a所指陣列中的資料依次為:1、2、3、4、5、6、7、8、9,則逆置后依次為:9、8、7、6、5、4、3、2、1,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> void fun(int a[], int n) { int i,t; /**********found**********/ for (i=0; i<___1___; i++) { t=a[i]; /**********found**********/ a[i] = a[n-1-___2___]; /**********found**********/ ___3___ = t; } } int main() { int b[9]={1,2,3,4,5,6,7,8,9}, i; printf("\nThe original data :\n"); for (i=0; i<9; i++) printf("%4d ", b[i]); printf("\n"); fun(b, 9); printf("\nThe data after invert :\n"); for (i=0; i<9; i++) printf("%4d ", b[i]); printf("\n"); }
2.程式修改題
給定程式中,函式fun的功能是:計算num的各位上的數字之積,
例如,若輸入252,則輸出應為20;若輸入202,則輸出應為0,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> long fun(long num) { /************found************/ long k; do { k*=num%10; /************found************/ num\=10; } while(num); return (k); } int main() { long n; printf("Please enter a number:"); scanf("%ld",&n); printf("\n%ld\n",fun(n)); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:找出一維陣列元素中最大的值和它所在的下標,最大的值和它所在的下標分別通過形參max和index傳回,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <stdlib.h> void NONO(void); void fun(int a[], int n, int *max, int *d) { } int main() { int i, x[20], max , index, n = 10; for (i=0;i < n;i++) { x[i] = rand()%50; printf("%4d", x[i]) ; } printf("\n"); fun( x, n , &max, &index); printf("Max =%5d , Index =%4d\n",max, index ); NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ FILE *fp, *wf ; int i, x[20], max,index,n=10,j; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { for(j = 0 ; j < n ; j++) fscanf(fp, "%d,", &x[j]) ; fun( x, n , &max, &index); fprintf(wf, "Max=%d,Index=%d\n",max,index); } fclose(fp) ; fclose(wf) ; }
1.(1)n/2 (2)i (3)a[n-1-i] 2. long k=1; num/=10; 3. void fun(int a[], int n, int *max, int *d) { int i; *d=0; *max=a[0]; for (i=1;i<n;i++) if (*max<a[i]) { *max=a[i]; *d=i; } }第78套參考答案
第79套
1.程式填空題
給定程式中,函式fun的功能是:計算x所指陣列中N個數的平均值(規定所有數均為正數),平均值通過形參回傳主函式,將小于平均值且最接近平均值的數作為函式值回傳,在主函式中輸出,
例如,有10個正數:40 30 32 40 6 17 45 15 48 26,平均值為:35.500000,主函式中輸出m=30.0,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #include <stdlib.h> #define N 10 double fun(double x[],double *av) { int i,j; double d,s; s=0; for(i=0; i<N; i++) s = s +x[i]; /**********found**********/ __1__=s/N; d=32767; for(i=0; i<N; i++) if(x[i]<*av && *av - x[i]<=d) { /**********found**********/ d=*av-x[i]; j=__2__; } /**********found**********/ return __3__; } int main() { int i; double x[N],av,m; for(i=0; i<N; i++) { x[i]=rand()%50; printf("%4.0f ",x[i]); } printf("\n"); m=fun(x,&av); printf("\nThe average is: %f\n",av); printf("m=%5.1f ",m); printf("\n"); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:求s=aa..aa-…aaa-aa-a(此處aa..aa表示n個a,a和n的值在1至9之間),
例如,a=3,n=6,則以上運算式為:s=333333-33333-3333-333-33-3,其值是:296298,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> long fun (int a, int n) { int j ; /**************found**************/ long s = 0, t = 1 ; for ( j = 0 ; j < n ; j++) t = t * 10 + a ; s = t ; for ( j = 1 ; j < n ; j++) { /**************found**************/ t = t % 10 ; s = s - t ; } return(s) ; } int main( ) { int a, n ; printf( "\nPlease enter a and n:") ; scanf( "%d%d", &a, &n ) ; printf( "The value of function is: %ld\n", fun(a, n)); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:統計tt字串中’a’到’z’26個小寫字母各自出現的次數,并依此放在pp所指陣列中,
例如,輸入字串:abcdefgabcdeabc后,程式的輸出結果應該是:3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <string.h> void NONO(void); void fun(char *tt, int pp[]) { } int main() { char aa[1000] ; int bb[26], k; printf( "\nPlease enter a char string:" ); scanf("%s", aa) ; fun(aa, bb ) ; for ( k = 0 ; k < 26 ; k++ ) printf ("%d ", bb[k]) ; printf( "\n" ) ; NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入測驗資料,呼叫fun函式,輸出資料,關閉檔案,*/ char aa[1000] ; int bb[26], k, i ; FILE *rf, *wf ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%s", aa) ; fun(aa, bb) ; for ( k = 0 ; k < 26 ; k++ ) fprintf (wf, "%d ", bb[k]) ; fprintf(wf, "\n" ) ; } fclose(rf) ; fclose(wf) ; }
1.(1)*av (2)i (3)x[j] 2. long s = 0, t = 0 ; t = t / 10 ; 3. void fun(char *tt, int pp[]) { int i; for (i=0;i<26;i++) pp[i]=0; for (i=0;tt[i]!='\0';i++) if (tt[i]>='a' && tt[i]<='z') pp[tt[i]-'a']++; }第79套參考答案
第80套
1.程式填空題
給定程式中,通過定義學生結構體變數,存盤了學生的學號、姓名和3門課的成績,所有學生資料均以二進制方式輸出到student.dat檔案中,函式fun的功能是:從指定檔案中找出指定學號的學生資料,讀入此學生資料,對該生的分數進行修改,使每門課的分數加3分,修改后重寫檔案中該學生的資料,即用該學生的新資料覆寫該學生原來的資料,其他學生的資料不變;若找不到,則什么都不做,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename, long sno) { FILE *fp; STU n; int i; fp = fopen(filename,"rb+"); /**********found**********/ while (!__1__) { fread(&n, sizeof(STU), 1, fp); /**********found**********/ if (n.sno__2__) break; } if (!feof(fp)) { for (i=0; i<3; i++) n.score[i] += 3; /**********found**********/ fseek(fp, -1L*__3__, SEEK_CUR); fwrite(&n, sizeof(STU), 1, fp); } fclose(fp); } int main() { STU t[N]={{10001,"MaChao", 91, 92, 77}, {10002,"CaoKai", 75, 60, 88}, {10003,"LiSi", 85, 70, 78}, {10004,"FangFang", 90, 82, 87}, {10005,"ZhangSan", 95, 80, 88}}, ss[N]; int i,j; FILE *fp; fp = fopen("student.dat", "wb"); fwrite(t, sizeof(STU), N, fp); fclose(fp); printf("\nThe original data :\n"); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j=0; j<N; j++) { printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name); for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]); printf("\n"); } fun("student.dat", 10003); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); printf("\nThe data after modifing :\n"); for (j=0; j<N; j++) { printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name); for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]); printf("\n"); } return 0; }
2.程式修改題
給定程式中,函式fun的功能是:求S的值,

例如,當k=10時,函式值應為:1.533852,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> /************found************/ void fun(int k) { int n; float s, w, p, q; n = 1; s = 1.0; while ( n <= k ) { w = 2.0 * n; p = w - 1.0; q = w + 1.0; s = s * w *w/p/q; n++; } /************found************/ return s } int main() { printf("%f\n", fun (10)); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:計算下列級數和

例如,當n=10時,函式值為 0.909091,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> void NONO(void); double fun(int n) { } int main() { printf("%f\n", fun(10)); NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ FILE *fp, *wf ; int i, n ; double 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)feof(fp) (2)==sno (3)sizeof(STU) 2. float fun(int k) return s; 3. double fun(int n) { double s=0; int i; for (i=1;i<=n;i++) s+=1.0/(i*(i+1)); return s; }第80套參考答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/528115.html
標籤:C
