第46套
1.程序填空题
给定程序的功能是调用函数fun建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile3.dat的二进制文件中。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h> #include <stdlib.h> #define N 5 typedef struct { int num; char name[10]; char tel[10]; }STYPE; void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile3.dat","wb"))==NULL) return (0); printf("nOutput data to file !n"); for(i=0; i<N; i++) /**********found**********/ fwrite(&std[i], sizeof(STYPE), 1, _3_); fclose(fp); return (1); } int main() { STYPE s[10]={{1,"aaa","1111"},{1,"bbb","2222"}, {1,"ccc","3333"}, {1,"ddd","4444"}, {1,"eee","5555"}}; int k; k=fun(s); if (k==1) { printf("Succeed!"); check(); } else printf("Fail!"); return 0; } void check() { FILE *fp; int i; STYPE s[10]; if((fp=fopen("myfile3.dat","rb"))==NULL) { printf("Fail !!n"); exit(0); } printf("nRead file and output to screen :n"); printf("n num name teln"); for(i=0; i<N; i++) { fread(&s[i],sizeof(STYPE),1, fp); printf("%6d %s %sn",s[i].num,s[i].name,s[i].tel); } fclose(fp); }
2.程序修改题
给定程序中,函数fun的功能是:从低位开始取出长整数s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。
例如,若s=7654321,则t=7531。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h> /************found************/ void fun (long s, long t) { long sl=10; *t = s % 10; while ( s > 0) { s = s/100; *t = s%10 * sl + *t; /************found************/ sl = sl*100; } } int main() { long s, t; printf("nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ldn", t); return 0; }
3.程序设计题
编写函数fun,它的功能是:将两个两位正整数a、b合并形成一个整数存放在c中,合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,将b数的十位和个位数依次放在c数的千位和十位上。
例如,当a=45,b=12时,调用该函数后,c=1524。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> void NONO(void); void fun(int a, int b, long *c) { } int main() { int a,b; long c; printf("Input a b:"); scanf("%d%d", &a, &b); fun(a, b, &c); printf("The result is: %dn", c); NONO(); return 0; } void NONO(void) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen("in.dat", "r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d,%d", &a, &b) ; fun(a, b, &c) ; fprintf(wf, "a=%d,b=%d,c=%ldn", a, b, c) ; } fclose(rf) ; fclose(wf) ; }
1.(1)STYPE (2)FILE (3)fp 2. void fun (long s, long *t) sl = sl*10; 3. void fun(int a, int b, long *c) { *c=1000*(b/10)+100*(a%10)+10*(b%10)+a/10; }
第47套
1.程序填空题
给定程序中,人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回;若指定编号不存在,返回数据中的编号为空串。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h> #include <string.h> #define N 8 typedef struct { char num[10]; int year,month,day ; }STU; /**********found**********/ ___1___ fun(STU *std, char *num) { int i; STU a={"",9999,99,99}; for (i=0; i<N; i++) /**********found**********/ if (strcmp(___2___,num)==0) /**********found**********/ return (___3___); return a; } int main() { STU std[N]={{"111",1984,2,15},{"222",1983,9,21}, {"333",1984,9,1},{"444",1983,7,15}, {"555",1984,9,28},{"666",1983,11,15}, {"777",1983,6,22},{"888",1984,8,19}}; STU p; char n[10]="666"; p=fun(std,n); if(p.num[0]==0) printf("nNot found !n"); else { printf("nSucceed !n "); printf("%s %d-%d-%dn",p.num,p.year,p.month,p.day); } return 0; }
2.程序修改题
给定程序中,函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include <stdio.h> #include <string.h> #define MAXLINE 20 void fun(char *pstr[6]) { int i, j ; char *p ; for (i = 0 ; i < 5 ; i++) { /**************found**************/ for (j=i+1, j<6, j++) { if(strcmp(*(pstr+i), *(pstr+j))>0) { p = *(pstr + i) ; /**************found**************/ *(pstr + i) = pstr + j ; *(pstr + j) = p ; } } } } int main() { int i ; char *pstr[6], str[6][MAXLINE] ; for(i = 0; i < 6 ; i++) pstr[i] = str[i] ; printf("nEnter 6 string(1 string at each line):n"); for(i=0 ; i<6; i++) scanf("%s", pstr[i]); fun(pstr) ; printf("The strings after sorting:n") ; for (i = 0 ; i < 6 ; i++) printf("%sn", pstr[i]); return 0; }
3.程序设计题
编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串:123412132,输入字符1,则输出3。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #include <string.h> #define M 81 void NONO(void); int fun(char *ss, char c) { } int main() { char a[M], ch; printf("nPlease enter a string:"); gets(a); printf("nPlease enter a char:"); ch = getchar(); printf("nThe number of the char is: %dn",fun(a,ch)); NONO(); return 0; } void NONO(void) {/* 本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/ int i ; FILE *rf, *wf ; char a[M], b[M], ch ; rf = fopen("in.dat","r") ; wf = fopen("out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%s", a) ; fscanf(rf, "%s", b) ; ch = *b ; fprintf(wf, "%c=%dn", ch, fun(a, ch)) ; } fclose(rf) ; fclose(wf) ; }
1.(1)STU (2)std[i].num (3)std[i] 2. for (j=i+1; j<6 ; j++) *(pstr + i) = *(pstr + j) ; 3. int fun(char *ss, char c) { int i,n=0; for (i=0;ss[i]!='