计算机等级考试二级C语言内部教材
fun(__3__); &t printf(\
printf(\for (i=0; i<3; i++) printf(\printf(\}
解题思路:
本题是对结构体变量中的值进行修改并通过函数中的参数进行返回。 第一处:对学号进行更改,所以应填:->no。 第二处:对姓名进行更改,所以应填:->name。 第三处:对函数的调用,所以应填:&t。
第30套
程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。例如:a所指变量中的学号、姓名、和三门课的成绩依次是:10001、\、95、80、88,则修改后输出b中的数据应为:10002、\、95、80、88。
请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include
void fun(struct student a) { struct student b; int i; /**********found**********/
b = __1__; a b.sno = 10002;
/**********found**********/
strcpy(__2__, \printf(\
printf(\/**********found**********/
for (i=0; i<3; i++) printf(\printf(\} main()
{ struct student s={10001,\int i;
printf(\
printf(\
31
计算机等级考试二级C语言内部教材
for (i=0; i<3; i++) printf(\printf(\fun(s); }
解题思路:
本题是对结构体变量中的值进行修改。
第一处:要修改的结构体变量是由形参a来传递的,所以应填:a。 第二处:对结构体中的成员name进行替换,所以应填:b.name。 第三处:分别输出结构体中的成绩,所以应填:score[i]。
第31套
给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。
例如,形参s所指的字符串为:baawrskjghzlicda,执行后p所指字符数组中的字符串应为:aachjlsw。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include
void fun(char *s, char *p) { int i, j, n, x, t; n=0;
for(i=0; s[i]!='\\0'; i++) n++; for(i=1; i ___1___; t=i /**********found**********/ for(j=___2___+2 ; j { x=s[i]; s[i]=s[t]; s[t]=x; } } for(i=1,j=0; i p[j]=___3___; '\\0' } main() { char s[80]=\printf(\fun(s,p); printf(\} 解题思路: 第一处:取外循环的控制变量,所以应填:t=i。 第二处:内循环的起始变量,应该是i+2,所以应填:i。 第三处:新字符串处理完后应添加字符串结束符,所以应填:'\\0'。 32 计算机等级考试二级C语言内部教材 第32套: 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include /**********found**********/ void fun(char (*ss) __1__, int k) M { int i=0 ; /**********found**********/ while(i< __2__) { N /**********found**********/ ss[i][k]=__3__; i++; } 0 } main() { char x[N][M]={\int i; printf(\for(i=0;i printf(\for(i=0; i 解题思路: 本题是根据给定的字符串数组中删除串长大于某个值的右边字符串。 第一处:函数的定义,试题中已用M作为字符串的长度,所以应填:M。 第二处:利用while循环,分别对字符串数组中的每个字符串置字符串结束符,程序中已经给定了N个字符串,所以应填:N。 第三处:置字符串结束符,所以应填:0(或'\\0')。 第33套 给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include 33 计算机等级考试二级C语言内部教材 int fun(char *source, char *target) { FILE *fs,*ft; char ch; /**********found**********/ if((fs=fopen(source, ___1___))==NULL) \return 0; if((ft=fopen(target, \return 0; printf(\ch=fgetc(fs); /**********found**********/ while(!feof(___2___)) fs { putchar( ch ); /**********found**********/ fputc(ch,___3___); ft ch=fgetc(fs); } fclose(fs); fclose(ft); printf(\return 1; } main() { char sfname[20] =\FILE *myf; int i; char c; myf=fopen(sfname,\ printf(\ for(i=1; i<30; i++){ c='A'+rand()%;fprintf(myf,\fclose(myf);printf(\ if (fun(sfname, tfname)) printf(\else printf(\} 解题思路: 本题要求是把一个文件中的内容复制到另一个文件中。程序中共有三处要填上适当的内容,使程序能运行出正确的结果。 第一处:要求打开一个读方式的源文件,因此可以填上\或\。打开读文件操作的流是fs。 第二处:用while循环来判断源文件是否已读到文件结束符,int feof(FILE *stream),因此,此处只能填写fs。 第三处:把已经读取的字符写入目标文件中,打开写文件操作的流是ft,因此,此处只能填写ft。 第34套 用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:2,3,5,7,11,13,17,19,23,?? 函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: 34 计算机等级考试二级C语言内部教材 #include { int a[10000], i,j, count=0; for (i=2; i<=n; i++) a[i] = i; i = 2; while (i /**********found**********/ for (j=a[i]*2; j<=n; j+=___1___) a[i] a[j] = 0; i++; /**********found**********/ while (___2___==0) a[i] i++; } printf(\for (i=2; i<=n; i++) /**********found**********/ if (a[i]!=___3___) 0 { count++; printf( count?\return count; } main() { int n=20, r; r = fun(n); printf(\} 解题思路: 第一处:所有2的倍数的数从数表中删去,所以应填:a[i]。 第二处:找出下一个不是的a[i],所以应填:a[i]。 第三处:输出素数,只要判断a[i]不是0就是素数,所以应填:0。 第35套 给定程序中,函数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 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include /**********found**********/ 35