第96套
1.程式填空題
給定程式中,函式fun的功能是:將形參s所指字串中的數字字符轉換成對應的數值,計算出這些數值的累加和作為函式值回傳,
例如,形參s所指的字串為:abs5def126jkm8,程式執行后的輸出結果為:22,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> int fun(char *s) { int sum=0; while(*s) { if(*s>='0' && *s<='9') /**********found**********/ sum+= *s- __1__ ; /**********found**********/ __2__; } /**********found**********/ return __3__ ; } int main() { char s[81]; int n; printf("\nEnter a string:\n\n"); gets(s); n=fun(s); printf("\nThe result is: %d\n",n); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:輸出M行M列整數方陣,然后求兩條對角線上各元素之和,回傳此和數,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #define M 5 /************found************/ int fun(int n, int xx[][]) { int i, j, sum=0; printf( "\nThe %d x %d matrix:\n", M, M ); for( i = 0; i < M; i++ ) { for( j = 0; j < M; j++ ) /************found************/ printf( "%4f ", xx[i][j] ); printf("\n"); } for( i = 0 ; i < n ; i++ ) sum += xx[i][i]+xx[i][ n-i-1 ]; return( sum ); } int main( ) { int aa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}}; printf ("\nThe sum of all elements on 2 diagnals is %d.",fun(M, aa)); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:將一個數字字串轉換為一個整數(不得呼叫C語言提供的將字串轉換為整數的函式),
例如,若輸入字串“-1234”,則函式把它轉換成整數值-1234,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <string.h> void NONO(void); long fun(char *p) { } int main() { char s[6]; long n; printf("Enter a string:\n") ; gets(s); n = fun(s); printf("%ld\n",n); NONO(); return 0; } void NONO(void) {/* 本函式用于打開檔案,輸入資料,呼叫函式,輸出資料,關閉檔案, */ FILE *fp, *wf ; int i ; char s[20] ; long n ; fp = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(fp, "%s", s) ; n = fun(s); fprintf(wf, "%ld\n", n) ; } fclose(fp) ; fclose(wf) ; }
1.(1)'0' (2)s++ (3)sum 2. int fun(int n, int xx[M][M]) printf( "%4d ", xx[i][j] ); 3. long fun(char *p) { long num=0,t=1; int i=0; if (p[0]=='-') { t=-1; i=1; } for (;p[i]!='\0';i++) { num=num*10+(p[i]-'0'); } return t*num; }第96套參考答案
第97套
1.程式填空題
給定程式中,函式fun的功能是:判定形參a所指的N*N(規定N為奇數)的矩陣是否是“幻方”,若是,函式回傳值為1,;不是,函式回傳值為0,“幻方”的判定條件是:矩陣的每行、每列、主對角線及反向對角線上元素之和都相等,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #define N 3 int fun(int (*a)[N]) { int i,j,m1,m2,row,colum; m1=m2=0; for(i=0; i<N; i++) { j=N-i-1; m1+=a[i][i]; m2+=a[i][j]; } if(m1!=m2) return 0; for(i=0; i<N; i++) { /**********found**********/ row=colum= __1__; for(j=0; j<N; j++) { row+=a[i][j]; colum+=a[j][i]; } /**********found**********/ if((row!=colum) __2__ (row!=m1)) return 0; } /**********found**********/ return __3__; } int main() { int x[N][N],i,j; printf("Enter number for array:\n"); for(i=0; i<N; i++) for(j=0; j<N; j++) scanf("%d",&x[i][j]); printf("Array:\n"); for(i=0; i<N; i++) { for(j=0; j<N; j++) printf("%3d",x[i][j]); printf("\n"); } if(fun(x)) printf("The Array is a magic square.\n"); else printf("The Array isn't a magic square.\n"); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:將一個由八進制數字字符組成的字串轉換為與其面值相等的十進制整數,規定輸入的字串中最大包含5位八進制數字字符,
例如,若輸入77777,則輸出32767,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #include <stdlib.h> #include <string.h> int fun(char *p) { int n; /**********found**********/ n= *P-'o'; p++; while( *p!=0 ) { /**********found**********/ n=n*7+*P-'o'; p++; } return n; } int main() { char s[6]; int i,n; printf("Enter a string (Ocatal digits): "); gets(s); if(strlen(s)>5) { printf("Error: String too longer !\n"); exit(0); } for(i=0; s[i]; i++) if(s[i]<'0'||s[i]>'7') { printf("Error: %c not is ocatal digits!\n",s[i]);exit(0); } printf("The original string: "); puts(s); n=fun(s); printf("\n%s is convered to integer number: %d\n",s,n); return 0; }
3.程式設計題
學生的記錄由學號和成績組成,N名學生的資料已在主函式中放入結構體陣列s中,撰寫函式fun,它的功能是:函式回傳指定學號的學生資料,指定的學號在主函式中輸入,若沒找到指定學號,在結構體變數中給學號置空串,給成績置-1,作為函式值回傳,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <string.h> #define N 16 typedef struct { char num[10]; int s; } STREC; STREC fun(STREC *a, char *b) { } int main() { STREC s[N]={{"GA005",85},{"GA003",76}, {"GA002",69},{"GA004",85},{"GA001",91}, {"GA007",72},{"GA008",64},{"GA006",87}, {"GA015",85},{"GA013",91},{"GA012",64}, {"GA014",91},{"GA011",77},{"GA017",64}, {"GA018",64},{"GA016",72}}; STREC h; char m[10]; int i;FILE *out ; printf("The original data:\n"); for(i=0; i<N; i++) { if(i%4==0) printf("\n"); printf("%s %3d ",s[i].num,s[i].s); } printf("\n\nEnter the number: "); gets(m); h=fun( s,m ); printf("The data : "); printf("\n%s %4d\n",h.num,h.s); printf("\n"); out = fopen("out.dat","w") ; h=fun(s,"GA013"); fprintf(out,"%s %4d\n",h.num,h.s); fclose(out); return 0; }
1.(1)0 (2)|| (3)1 2. n= *p-'0'; n=n*8+*p-'0'; 3. STREC fun(STREC *a, char *b) { STREC t; int i; t.num[0]='\0'; t.s=-1; for (i=0;i<N;i++) if (strcmp(a[i].num,b)==0) { t=a[i]; break; } return t; }第97套參考答案
第98套
1.程式填空題
給定程式中,函式fun的功能是:判斷形參s所指字串是否為回文,若是,函式回傳1,否則回傳0,回文是指順讀和倒讀都一樣的字串(不區分大小寫字母),
例如,字串LEVEL和Level都是回文,而字串LEVLEV就不是回文,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #include <string.h> #include <ctype.h> int fun(char *s) { char *lp,*rp; /**********found**********/ lp= __1__ ; rp=s+strlen(s)-1; while ((toupper(*lp)==toupper(*rp)) && (lp<rp)) { /**********found**********/ lp++; rp __2__ ; } /**********found**********/ if(lp<rp) __3__ ; else return 1; } int main() { char s[81]; printf("Enter a string: "); scanf("%s",s); if(fun(s)) printf("\n\"%s\" is a Palindrome.\n",s); else printf("\n\"%s\" isn't a Palindrome.\n",s); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:根據輸入的三個邊長(整型值),判斷能否構成三角形:構成的是等邊三角形還是等腰三角形,若能構成等邊三角形函式回傳3,若能構成等腰三角形函式回傳2,若能構成一般三角形函式回傳1,若不能構成三角形函式回傳0,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> /**************found**************/ void fun(int a,int b,int c) { if(a+b>c && b+c>a && a+c>b) { if(a==b && b==c) return 3; else if(a==b||b==c||a==c) return 2; /**************found**************/ else retrun 1 } else return 0; } int main() { int a,b,c,shape; printf("\nInput a,b,c: "); scanf("%d%d%d",&a,&b,&c); printf("\na=%d, b=%d, c=%d\n",a,b,c); shape =fun(a,b,c); printf("\n\nThe shape : %d\n",shape); return 0; }
3.程式設計題
撰寫函式fun,其功能是:計算3到n之間(含3和n)所有素數的平方根之和,
例如,在主函式中給n輸入100后,輸出為:sum=148.874270,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <math.h> void NONO(void); double fun(int n) { } int main() { int n; double sum; printf("\n\nInput n: "); scanf("%d",&n); sum=fun(n); printf("\n\nsum=%f\n\n",sum); NONO(); return 0; } void NONO(void) {/* 請在此函式內打開檔案,輸入測驗資料,呼叫 fun 函式,輸出資料,關閉檔案, */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d", &n) ; s = fun(n) ; fprintf(wf, "%lf\n", s) ; } fclose(rf) ; fclose(wf) ; }
1.(1)s (2)-- (3)return 0 2. int fun(int a,int b,int c) else return 1; 3. double fun(int n) { double s=0.0; int i,k; for (i=3;i<=n;i+=2) { for (k=3;k<=i/3;k+=2) if (i%k==0) break; if (k>i/3) s+=sqrt(1.0*i); } return s; }第98套參考答案
第99套
1.程式填空題
給定程式中,函式fun的功能是:在3*4的矩陣中找出在行上最大、在列上最小的那個元素,若沒有符合條件的元素則輸出相應資訊,
例如,有下列矩陣
1 2 13 4
7 8 10 6
3 5 9 7
程式執行結果為:find:a[2][2]=9,
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #define M 3 #define N 4 void fun(int (*a)[N]) { int i=0,j,find=0,rmax,c,k; while( (i<M) && (!find)) { rmax=a[i][0]; c=0; for(j=1; j<N; j++) if(rmax<a[i][j]) { /**********found**********/ rmax=a[i][j]; c= __1__ ; } find=1; k=0; while(k<M && find) { /**********found**********/ if (k!=i && a[k][c]<=rmax) find= __2__ ; k++; } if(find) printf("find: a[%d][%d]=%d\n",i,c,a[i][c]); /**********found**********/ __3__ ; } if (!find) printf("not found!\n"); } int main() { int x[M][N],i,j; printf("Enter number for array:\n"); for(i=0; i<M; i++) for(j=0; j<N; j++) scanf("%d",&x[i][j]); printf("The array:\n"); for(i=0; i<M; i++) { for(j=0; j<N; j++) printf("%3d",x[i][j]); printf("\n\n"); } fun(x); return 0; }
2.程式修改題
給定程式中,函式fun的功能是:根據形參m的值,計算如下公式的值,

例如,若m=5,則應輸出:0.536389,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> double fun ( int m ) { double y = 1.0 ; int i ; /**************found**************/ for(i = 2 ; i < m ; i++) /**************found**************/ y -= 1 /(i * i) ; return( y ) ; } int main( ) { int n = 5 ; printf( "\nThe result is %f\n", fun(n)); return 0; }
3.程式設計題
撰寫函式fun,它的功能是:移動字串中的內容,移動規則如下:把第1到m個字符平移到字串的最后,把第m+1到最后的字符移到字串的前部,
例如,字串中原有內容為:ABCDEFGHIJK,m的值為3,則移動后,字串中的內容應該是:DEFGHIJKABC,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #include <string.h> #define N 80 void NONO(void); void fun(char *w, int m) { } int main() { char a[N]= "ABCDEFGHIJK"; int m; printf("The original string:\n");puts(a); printf("\n\nEnter m: ");scanf("%d",&m); fun(a,m); printf("\nThe string after moving:\n");puts(a); printf("\n\n"); NONO(); return 0; } void NONO(void) {/* 請在此函式內打開檔案,輸入測驗資料,呼叫 fun 函式,輸出資料,關閉檔案, */ FILE *rf, *wf ; char a[N] ; int m, i ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d %s", &m, a) ; fun(a, m) ; fprintf(wf, "%s\n", a) ; } fclose(rf) ; fclose(wf) ; }
1.(1)j (2)0 (3)i++ 2. for(i = 2 ; i <= m ; i++) y -= 1.0 /(i * i) ; 3. void fun(char *w, int m) { int k,i,t,n; n=strlen(w); for (k=1;k<=m;k++) { t=w[0]; for (i=1;i<n;i++) { w[i-1]=w[i]; } w[n-1]=t; } }第99套參考答案
第100套
1.程式填空題
給定程式中,函式fun的功能是:建立一個N*N的矩陣,矩陣元素的構成規律是:最外層元素的值全部為1;從外向內第2層元素的值全部為2;第3層元素的值全部為3,……依次類推,
例如,若N=5,生成的矩陣為
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
請在下劃線處填入正確的內容并將下劃線洗掉,使程式得出正確的結果,
注意:不得增行或刪行,也不得更改程式的結構!
#include <stdio.h> #define N 7 /**********found**********/ void fun(int (*a) __1__) { int i,j,k,m; if(N%2==0) m=N/2 ; else m=N/2+1; for(i=0; i<m; i++) { /**********found**********/ for(j= __2__ ; j<N-i; j++) a[i][j]=a[N-i-1][j]=i+1; for(k=i+1; k<N-i; k++) /**********found**********/ a[k][i]=a[k][N-i-1]= __3__; } } int main() { int x[N][N]={0},i,j; fun(x); printf("\nThe result is:\n"); for(i=0; i<N; i++) { for(j=0; j<N; j++) printf("%3d",x[i][j]); printf("\n"); } return 0; }
2.程式修改題
給定程式中,函式fun的功能是:按順序給s所指陣列中的元素賦予從2開始的偶數,然后再按順序對每五個元素求一個平均值,并將這些值依次存放在w所指的陣列中,若s所指陣列中元素的個數不是5的倍數,多余部分忽略不計,
例如,s所指陣列有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值,
請改正函式fun中指定部位的錯誤,使它能得出正確的結果,
注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構,
#include <stdio.h> #define SIZE 20 int fun(double *s, double *w) { int k,i; double sum; for(k=2,i=0;i<SIZE;i++) { s[i]=k; k+=2; } /**********found**********/ sun=0.0; for(k=0,i=0;i<SIZE;i++) { sum+=s[i]; /**********found**********/ if(i+1%5==0) { w[k]=sum/5; sum=0; k++; } } return k; } int main( ) { double a[SIZE],b[SIZE/5]; int i, k; k = fun(a,b); printf("The original data:\n"); for(i=0; i<SIZE; i++) { if(i%5==0) printf("\n"); printf("%4.0f", a[i]); } printf("\n\nThe result :\n"); for(i=0; i<k; i++) printf("%6.2f ",b[i]); printf("\n\n"); return 0; }
3.程式設計題
學生的記錄由學號和成績組成,N名學生的資料已在主函式中放入結構體陣列s中,撰寫函式fun,它的功能是:把低于平均分的學生資料放在b所指的陣列中,低于平均分的學生人數通過形參n傳回,平均分通過函式值回傳,
注意:請勿改動主函式main和其他函式中的任何內容,僅在函式fun的花括號中填入你撰寫的若干陳述句,
#include <stdio.h> #define N 8 typedef struct { char num[10]; double s; } STREC; double fun(STREC *a,STREC *b,int *n) { } int main() { STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85}, {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}}; STREC h[N],t; FILE *out ; int i,j,n; double ave; ave=fun( s,h,&n ); printf("The %d student data which is lower than %7.3f:\n",n,ave); for(i=0;i<n; i++) printf("%s %4.1f\n",h[i].num,h[i].s); printf("\n"); out = fopen("out.dat","w") ; fprintf(out, "%d\n%7.3f\n", n, ave); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(h[i].s>h[j].s) {t=h[i];h[i]=h[j];h[j]=t;} for(i=0;i<n; i++) fprintf(out,"%4.1f\n",h[i].s); fclose(out); return 0; }
1.(1)[N] (2)i (3)i+1 2. sum=0.0; if((i+1)%5==0) 3. double fun(STREC *a,STREC *b,int *n) { double sum=0,avg; int i,j; for (i=0;i<N;i++) sum+=a[i].s; avg=sum/N; for (i=0,j=0;i<N;i++) if (a[i].s<avg) b[j++]=a[i]; *n=j; return avg; }第100套參考答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530051.html
標籤:C
