1、C 语言上机试题汇编 第 01 套: 给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶数的数去 除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回 所指变量。 例如,输入一个数:27638496,新的数:为 739。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结 果。 注意:源程序存放在考生文件夹下的 BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include void fun(unsigned long *n) unsigned long x=0, i; int t; i=1; whi
2、le(*n) /*found*/ t=*n % _1_; /*found*/ if(t%2!= _2_) x=x+t*i; i=i*10; *n =*n /10; /*found*/ *n=_3_; main() unsigned long n=-1; while(n99999999|n double fun ( int n ) double result = 1.0 ; /*found*/ if n = = 0 return 1.0 ; while( n 1 /* len 为串长,t 为正负标识 */ long x=0; len=strlen(p); if(p0=-) t=-1; len-;
3、 p+; else t=1; /* 以下完成数字字符串转换为一个数字 */ return x*t; main() /* 主函数 */ char s6; long n; printf(“Enter a string:n“) ; gets(s); n = fun(s); printf(“%ldn“,n); NONO ( ); NONO ( ) /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; char s20 ; long n ; fp = fopen(“c:testin.dat“,“r“) ; wf = fopen(“c:t
4、estout.dat“,“w“) ; for(i = 0 ; i #include long fun ( char *p) /* 以下代码仅供参考 */ int i, len, t; /* len 为串长,t 为正负标识 */ long x=0; len=strlen(p); if(p0=-) t=-1; len-; p+; else t=1; /* 以下完成数字字符串转换为一个数字 */ while(*p) x = x*10-48+(*p+); return x*t; main() /* 主函数 */ char s6; long n; printf(“Enter a string:n“) ;
5、 gets(s); n = fun(s); printf(“%ldn“,n); NONO ( ); NONO ( ) /* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; char s20 ; long n ; fp = fopen(“c:testin.dat“,“r“) ; wf = fopen(“c:testout.dat“,“w“) ; for(i = 0 ; i void fun(char *s, int a, double f) /*found*/ _1_ fp; char ch; fp = fopen(“file1
6、.txt“, “w“); fprintf(fp, “%s %d %fn“, s, a, f); fclose(fp); fp = fopen(“file1.txt“, “r“); printf(“nThe result :nn“); ch = fgetc(fp); /*found*/ while (!feof(_2_) /*found*/ putchar(_3_); ch = fgetc(fp); putchar(n); fclose(fp); main() char a10=“Hello!“; int b=12345; double c= 98.76; fun(a,b,c); 解题思路: 本
7、题是考察先把给定的数据写入到文本文件中,再从该文件读出并显示在屏幕上。 第一处:定义文本文件类型变量,所以应填:FILE *。 第二处:判断文件是否结束,所以应填:fp。 第三处:显示读出的字符,所以应填:ch。 * 给定程序 MODI1.C 中函数 fun 的功能是: 依次取出字符串中所有数字字符 , 形 成新的字符串, 并取代原字符串。 请改正函数 fun 中指定部位的错误 , 使它能得出正确的结果。 注意: 不要改动 main 函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序: #include void fun(char *s) int i,j; for(i=0,j=0;
8、si!=0; i+) if(si=0 for(i=0; i #define N 5 typedef struct student long sno; char name10; float score3; STU; void fun(char *filename, STU n) FILE *fp; /*found*/ fp = fopen(_1_, “rb+“); /*found*/ fseek(_2_, -1L*sizeof(STU), SEEK_END); /*found*/ fwrite( fclose(fp); main() STU tN= 10001,“MaChao“, 91, 92,
9、 77, 10002,“CaoKai“, 75, 60, 88, 10003,“LiSi“, 85, 70, 78, 10004,“FangFang“, 90, 82, 87, 10005,“ZhangSan“, 95, 80, 88; STU n=10006,“ZhaoSi“, 55, 70, 68, ssN; int i,j; FILE *fp; fp = fopen(“student.dat“, “wb“); fwrite(t, sizeof(STU), N, fp); fclose(fp); fp = fopen(“student.dat“, “rb“); fread(ss, size
10、of(STU), N, fp); fclose(fp); printf(“nThe original data :nn“); for (j=0; jN; j+) printf(“nNo: %ld Name: %-8s Scores: “,ssj.sno, ssj.name); for (i=0; i3; i+) printf(“%6.2f “, ssj.scorei); printf(“n“); fun(“student.dat“, n); printf(“nThe data after modifing :nn“); fp = fopen(“student.dat“, “rb“); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j=0; jN; j+) printf(“nNo: %ld Name: %-8s Scores: “,ssj.sno, ssj.name); for (i=0; i3; i+) printf(“%6.2f “, ssj.scorei); printf(“n“); 解题思路: