第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:nn"); gets(s); n=fun(s); printf("nThe result is: %dn",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("%ldn",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, "%ldn", 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]!='