第66套
1.程式填空題
給定程式中,函式fun的功能是:在形參s所指字串中尋找與引數c相同的字符,并在其后插入一個與之相同的字符,若找不到相同的字符則函式不做任何處理,
例如,s所指字串為:baacda,c中的字符為a,執行后s所指字串為:baaaacdaa,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> void fun(char *s, char c) { int i, j, n; /**********found**********/ for(i=0; s[i]!=___1___ ; i++) if(s[i]==c) { /**********found**********/ n=___2___ ; while(s[i+1+n]!='\0') n++; for(j=i+n+1; j>i; j--) s[j+1]=s[j]; /**********found**********/ s[j+1]=___3___ ; i=i+1; } } int main() { char s[80]="baacda", c; printf("\nThe string: %s\n",s); printf("\nInput a character: "); scanf("%c",&c); fun(s,c); printf("\nThe result is: %s\n",s); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:將十進制正整數m轉換成k(2<=k<=9)進制數,并按位輸出,
例如,若輸入8和2,則應輸出1000(即十進制數8轉換成二進制表示是1000),
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> void fun(int m,int k) { int aa[20],i; for (i=0;m;i++) { /************found************/ aa[i]=m/k; m/=k; } /************found************/ for(;i;i--) printf("%d",aa[i]); } int main() { int b,n; printf("\nPlease enter a number and a base:\n"); scanf("%d %d",&n,&b); fun(n,b); printf("\n"); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:計算n門課程的平均分,計算結果作為函式值回傳,
例如,若有5門課程的成績是:90.5、72、80、61.5、55,則函式值為:71.80,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> void NONO(void); float fun(float *a,int n) { } int main() { float score[30]={90.5,72,80,61.5,55},aver; aver=fun(score,5); printf("\nAverage score is: %5.2f\n",aver); NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ FILE *fp, *wf ; int i, j ; float aver, score[5] ; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { for(j = 0 ; j < 5 ; j++) fscanf(fp,"%f,",&score[j]) ; aver = fun(score, 5) ; fprintf(wf, "%5.2f\n", aver) ; } fclose(fp) ; fclose(wf) ; }
1.(1)'\0' (2)0 (3)c 2. aa[i]=m%k; for(i=i-1;i>=0;i--) 3. float fun(float *a,int n) { float sum=0.0; int i; for (i=0;i<n;i++) sum+=a[i]; return sum/n; }第66套參考答案
第67套
1.程式填空題
給定程式中,函式fun的功能是:將a和b所指的兩個字串轉換成面值相同的整數,并進行相加作為函式值回傳,規定字串中只含9個以下數字字符,
例如,主函式中輸入字串:32486和12345,在主函式中輸出的函式值為:44831,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #include <string.h> #include <ctype.h> #define N 9 long ctod(char *s) { long d=0; while(*s) if (isdigit( *s)) { /**********found**********/ d=d*10+*s-__1__; /**********found**********/ __2__; } return d; } long fun(char *a, char *b) { /**********found**********/ return __3__; } int main() { char s1[N],s2[N]; do { printf("Input string s1 : "); gets(s1); } while (strlen(s1)>N); do { printf("Input string s2 : "); gets(s2); } while (strlen(s2)>N); printf("The result is: %ld\n", fun(s1,s2)); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:計算函式
F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,其中x!=y,z!=y,
例如,當x=9,y=11,z=15時,函式值為-3.50,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #include <math.h> #define FU(m,n) (m/n) float fun(float a,float b,float c) { float value; /************found************/ value=FU(a+b,a-b)+FU(c+b,c-b); /************found************/ Return(Value); } int main() { float x,y,z,sum; printf("Input x y z: "); scanf("%f%f%f",&x,&y,&z); printf("x=%f,y=%f,z=%f\n",x,y,z); if (x==y||y==z) {printf("Data error!\n");} sum=fun(x,y,z); printf("The result is : %5.2f\n",sum); return 0; }
3.程式設計題
假定輸入的字串中只包含字母和*號,撰寫函式fun,它的功能是:將字串中的前導*號全部洗掉,中間和尾部的*號不洗掉,
例如,字串中的內容為:*****A*BC*DEF*G***,洗掉后,字串的內容應當為:A*BC*DEF*G***,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.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)'0' (2)s++ (3)ctod(a)+ctod(b) 2. value=https://www.cnblogs.com/cs-whut/p/FU((a+b),(a-b))+FU((c+b),(c-b)); return(value); 3. void fun(char *a) { int i,j; for (i=0;a[i]=='*';i++); for (j=0;a[i]!='\0';i++) a[j++]=a[i]; a[j]='\0'; }第67套參考答案
第68套
1.程式填空題
給定程式中,通過定義學生結構體變數,存盤了學生的學號、姓名和3門課的成績,所有學生資料均以二進制方式輸出到檔案中,函式fun的功能是:從形參filename所指的檔案中讀入學生資料,并按照學號從小到大排序后,再用二進制方式把排序后的學生資料輸出到filename所指的檔案中,覆寫原來的檔案內容,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename) { FILE *fp; int i, j; STU s[N], t; /**********found**********/ fp = fopen(filename, __1__); fread(s, sizeof(STU), N, fp); fclose(fp); for (i=0; i<N-1; i++) for (j=i+1; j<N; j++) /**********found**********/ if (s[i].sno __2__s[j].sno) { t=s[i]; s[i]=s[j]; s[j]=t; } fp = fopen(filename, "wb"); /**********found**********/ __3__(s, sizeof(STU), N, fp); fclose(fp); } int main() { STU t[N]={ {10005,"ZhangSan", 95, 80, 88}, {10003,"LiSi", 85, 70, 78}, {10002,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87}, {10001,"MaChao", 91, 92, 77}}, ss[N]; int i,j; FILE *fp; fp = fopen("student.dat", "wb"); fwrite(t, sizeof(STU), 5, fp); fclose(fp); printf("\n\nThe original data :\n\n"); for (j=0; j<N; j++) { printf("\nNo: %ld Name: %-8s Scores: ",t[j].sno, t[j].name); for (i=0; i<3; i++) printf("%6.2f ", t[j].score[i]); printf("\n"); } fun("student.dat"); printf("\n\nThe data after sorting :\n\n"); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), 5, 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"); } return 0; }
2.程式修改題
給定程式中,函式fun的功能是:依次取出字串中所有數字字符,形成新的字串,并取代原字串,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> void fun(char *s) { int i,j; for(i=0,j=0; s[i]!='\0'; i++) if(s[i]>='0' && s[i]<='9') /**********found**********/ s[j]=s[i]; /**********found**********/ s[j]="\0"; } int main() { char item[80]; printf("\nEnter a string : "); gets(item); printf("\nThe string is : \"%s\"\n",item); fun(item); printf("\nThe string of changing is :\"%s\"\n",item); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:將M行N列的二維陣列中的字符資料,按列的順序依次放到一個字串中,
例如,二維陣列中的資料為:
W W W W
S S S S
H H H H
則字串中的內容應為:WSHWSHWSHWSH,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #define M 3 #define N 4 void NONO(void); void fun(char (*s)[N], char *b) { } int main() { char a[100],w[M][N]={{'W','W','W','W'}, {'S','S','S','S'},{'H','H','H','H'}}; int i,j; printf("The matrix:\n"); for(i=0; i<M; i++) { for(j=0;j<N; j++) printf("%3c",w[i][j]); printf("\n"); } fun(w,a); printf("The A string:\n");puts(a); printf("\n\n"); NONO(); return 0; } void NONO(void) {/* 請在此函式內打開檔案,輸入測驗資料,呼叫 fun 函式,輸出資料,關閉檔案, */ FILE *rf, *wf ; int i,j,k ; char a[100],w[M][N], b ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(k = 0 ; k < 10 ; k++) { for(i = 0 ; i < M ; i++) { for(j = 0 ; j < N ; j++) fscanf(rf, "%c", &w[i][j]) ; fscanf(rf, "%c", &b) ; } fun(w, a) ; fprintf(wf, "%s\n", a) ; } fclose(rf) ; fclose(wf) ; }
1.(1)"rb" (2)> (3)fwrite 2. s[j++]=s[i]; s[j]='\0'; 3. void fun(char (*s)[N], char *b) { int i,j,k=0; for (j=0;j<N;j++) for (i=0;i<M;i++) b[k++]=s[i][j]; b[k]='\0'; }第68套參考答案
第69套
1.程式填空題
給定程式中,函式fun的功能是:將N*N矩陣中元素的值按列右移一個位置,右邊被移出矩陣的元素繞回左邊,
例如,N=4,有下列矩陣
21 12 13 24
25 16 47 38
29 11 32 54
42 21 33 10
移動后結果為
24 21 12 13
38 25 16 47
54 29 11 32
10 42 21 33
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #define N 4 void fun(int (*t)[N]) { int i, j, x; /**********found**********/ for(i=0; i<___1___; i++) { /**********found**********/ x=t[i][___2___] ; for(j=N-1; j>0; j--) t[i][j]=t[i][j-1]; /**********found**********/ t[i][___3___]=x; } } int main() { int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf("The original array:\n"); for(i=0; i<N; i++) { for(j=0;j<N;j++) printf("%2d ",t[i][j]); printf("\n"); } fun(t); printf("\nThe result is:\n"); for(i=0; i<N; i++) { for(j=0;j<N;j++) printf("%2d ",t[i][j]); printf("\n"); } return 0; }
2.程式修改題
給定程式中,函式fun的功能是:將p所指字串中每個單詞的最后一個字母改成大寫,(這里的“單詞”是指由空格隔開的字串),
例如,若輸入:I am a student to take the examination,則應輸出:I aM A studenT tO takE thE examinatioN,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #include <ctype.h> #include <string.h> void fun( char *p ) { int k = 0; for( ; *p; p++ ) if( k ) { /**********found***********/ if( p == ' ' ) { k = 0; /**********found***********/ * (p-1) = toupper( *( p - 1 ) ) } } else k = 1; } int main() { char chrstr[64]; int d ; printf( "\nPlease enter an English sentence within 63 letters: "); gets(chrstr); d=strlen(chrstr) ; chrstr[d] = ' ' ; chrstr[d+1] = 0 ; printf("\n\nBefore changing:\n %s", chrstr); fun(chrstr); printf("\nAfter changing:\n %s", chrstr); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:對長度為7個字符的字串,除首、尾字符外,將其余5個字符按ASCII碼降序排列,
例如,原來的字串為CEAedca,排序后輸出為:CedcEAa,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <string.h> void NONO(void); void fun(char *s,int num) { } int main() { char s[10]; printf("輸入7個字符的字串:"); gets(s); fun(s,7); printf("\n%s",s); NONO(); return 0; } void NONO(void) { /* 請在此函式內打開檔案,輸入測驗資料,呼叫 fun 函式, 輸出資料,關閉檔案, */ char s[10] ; FILE *rf, *wf ; int i = 0 ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; while(i < 10) { fgets(s,10,rf) ; s[7] = 0 ; fun(s,7); fprintf(wf, "%s\n", s) ; i++ ; } fclose(rf) ; fclose(wf) ; }
1.(1)N (2)N-1 (3)0 2. if( *p == ' ' ) * (p-1) = toupper(*(p-1)); 3. void fun(char *s,int num) { int i,j,k; char t; for (i=1;i<num-2;i++) { k=i; for (j=i+1;j<num-1;j++) if (s[k]<s[j]) k=j; t=s[i]; s[i]=s[k]; s[k]=t; } }第69套參考答案
第70套
1.程式填空題
給定程式中,函式fun的功能是:找出N*N矩陣中每列元素中的最大值,并按順序依次放入形參b所指的一維陣列中,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #define N 4 void fun(int (*a)[N], int *b) { int i,j; for(i=0; i<N; i++) { /**********found**********/ b[i]= __1__; for(j=1; j<N; j++) /**********found**********/ if(b[i] __2__ a[j][i]) b[i]=a[j][i]; } } int main() { int x[N][N]={ {12,5,8,7},{6,1,9,3}, {1,2,3,4},{2,8,4,3} },y[N],i,j; printf("\nThe matrix :\n"); for(i=0;i<N; i++) { for(j=0;j<N; j++) printf("%4d",x[i][j]); printf("\n"); } /**********found**********/ fun(__3__); printf("\nThe result is:"); for(i=0; i<N; i++) printf("%3d",y[i]); printf("\n"); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:按以下遞回公式求函式值
例如,當n=5時,函式值為18;當n=3時,函式值為14,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> /************found************/ void fun ( n ) { int c; /************found************/ if(n=1) c = 10 ; else c= fun(n-1)+2; return(c); } int main() { int n; printf("Enter n : "); scanf("%d",&n); printf("The result : %d\n", fun(n)); return 0; }
3.程式設計題
假定輸入的字串中只包含字母和*號,撰寫函式fun,它的功能是:使字串中尾部的*號不得多于n個;若多于n個,則洗掉多于的*;若少于或等于n個,則什么也不做,前面和中間的*號不洗掉,
例如,字串中的內容為:***A*BC*DEF*G*****,若n的值為4,洗掉后,字串的內容應當為:***A*BC*DEF*G****;若n的值為8,則字串的內容仍為:***A*BC*DEF*G*****,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> void NONO(void); void fun( char *a,int n) { } int main() { char s[81]; int n; printf("Enter a string:\n"); gets(s); printf("Enter n : "); scanf("%d",&n); fun( s,n ); printf("The string after deleted:\n"); puts(s); NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ FILE *in, *out ; int i, n ; char s[81] ; in = fopen("in.dat","r") ; out = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(in, "%s", s) ; fscanf(in, "%d", &n) ; fun(s,n) ; fprintf(out, "%s\n", s) ; } fclose(in) ; fclose(out) ; }
1.(1)a[0][i] (2)< (3)x,y 2. int fun(int n) if(n==1) 3. void fun( char *a,int n) { int i,j; for (i=0,j=0;a[i]!='\0';i++) if (a[i]!='*') j=0; else j++; if (j>n) a[i-j+n]='\0'; }第70套參考答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/528114.html
標籤:C
