第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: %dn",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, "%sn", 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]!='