国家二级C语言机试(操作题)模拟试卷726
程序填空题
1.函数fun的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数据的个数。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
1 #include<stdio.h>
2 void fun(int a[],int n)
3 { int i,t;
4 /**********found**********/
5 for(i=0;i<__1____;i++)
6 {
7 t=a[i];
8 /**********found**********/
9 a[i]=a[n-1-__2___];
10 /**********found**********/
11 __3___=t;
12 }
13 }
14 main()
15 {int b[9]={1,2,3,4,5,6,7,8,9},i;
16 printf(’’\nThe original data:\n’’);
17 for(i=0;i<9;i++)
18 printf(’’%4d’’,b[i]);
19 printf(’’\n’’);
20 fun(b,9);
21 printf(’’\nThe data after invert:\n’’);
22 for(i=0;i<9;i++)
23 printf(’’%4d’’,b[i]);
24 printf(’’\n’’);
25 }
(1)n/2
(2)i
(3)a[n-i-1]
解析:函数fun的功能是将数组中的元素倒置。
第一空:由审题分析可知,总共交换n/2次,故循环的终止条件为i等于n/2,故第一空处应为“n/2”。
第二空:a[0]和a[n-1]交换,a[1]和a[n-2]交换…,因此,a[i]和a[n-i-1]交换,故第二空处应为“i”。
第三空:“t=a[i];a[i]=a[n-1-i];”所以第三空处是把t值赋值a[n-1-i],故第三空处应为“a[n-1-i]。
程序修改题
2.给定函数MODI1.C中函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。
例如,若输入:77777,则输出将是:32767。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 int fun(char *p)
5 { int n;
6 /**********found**********/
7 n=*p-’o’;
8 p++;
9 while(*P!=0){
10 /**********found**********/
11 n=n*8+*p-’o’;
12 p++;
13 }
14 return n;
15 }
16 main()
17 { char s[6];int i;int n;
18 printf(’’Enter a string (Ocatal digits):’’);gets(s);
19 if(strlen(s)>5){printf(’’Error:StrLng too longer!\n\n’’);exit(0),}
20 for(i=0;s[i];i++)
21 if(s[i]<’0’||s[i]>’7’)
22 {printf(’’Error:%c not is ocatal digits!\n\n’’,s[i]);exit(0);}
23 rintf(’’The original string:’’);puts(s);
24 n=fun(s);
25 printf(’’\n%s is convered to integer number:%d\n\n’’,S,n);
26 }
(1)n=*p-’0’;
(2)n=n*8+*p-’0’;
解析:函数功能是实现八进制到十进制的转换。
(1)第一个标识下面:语句“n=*p-’o’;”中的’o’不是数字零,而是字母’o’,根据前面的分析,因此改为:“n=*p-’0’;”。
(2)第二个标识下面:语句“n=n*8+*P-’o’”,首先进行同(1)相同的修改,变量P没有定义,根据题意要求这里应该是“*p-’0’”,所以此句改为:“n=n*8+*p-’0’;”。
程序设计题
3.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组S中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
1 #include<stdio.h>
2 #include<string.h>
3 #define N 16
4 typedef struct
5 { char num[10];
6 int s;
7 } STREC;
8 STREC fun(STREC *a,char *b)
9 {
10
11 }
12 main()
13 {STREC s[N]={{’’GA005’’,85},{’’GA003’’,76},{’’GA002’’,69},{’’GA004’’,85},{’’GA001’’,91},{’’GA007’’,72},{’’GA008’’,64},{’’GA006’’,87},{’’GA015’’,85},{’’GA013’’,91},{’’GA012’’,64},{’’GA014’’,91},{’’GA011’’,77},{’’GA017’’,64},{’’GA018’’,64},{’’GA016’’,72}};
14 STREC h;
15 char m[10];
16 int i;FILE *out;
17 printf(’’The original data:\n’’);
18 for(i=0;i<N;i++)
19 { if(i%4==0
本文档预览:3600字符,共4501字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载