1、二级 C 语言笔试-10 及答案解析(总分:94.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.C 语言规定,在一个 C 程序中,main()函数的位置( )。(分数:2.00)A.必须在系统调用的库函数之后B.必须在程序的开始C.必须在程序的最后D.可以在任意位置2.检查软件产品是否符合需求定义的过程称为( )。(分数:2.00)A.确认测试B.需求测试C.验证测试D.路径测试3.C 语言规定,函数返回值的类型是( )。(分数:2.00)A.由调用该函数时的主调函数类型所决定B.由 return 语句中的表达式类型所决定C.由调用该函数时系统临时决定D.由
2、定义该函数时所指定的数值类型决定4.下列一维数组说明中,不正确的是( )。(分数:2.00)A.int N;B.float a=1,6,6,0,2; scanf(“%d“, int bN;C.#define S 10D.int aS+5;5.执行下列程序时输入 456空格789空格123回车,输出结果是( )。 #includestdio.h main() char m80; int c,i; scanf(“%c“, scanf(“%d“,B.n1=(n2/(n3=2);C.k=i=j;D.a=b+c=2;8.若已定义: int a=0,1,2,3,4,5,6,7,8,9,*p=a,i; 其中
3、 0i9,则对 a 数组元素不正确的引用是( )。(分数:2.00)A.ap-aB.*(语句后,a 的值为( )。(分数:1.00)A.36B.0C.-24D.-6019.在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的( )。(分数:1.00)A.连接码B.关系码C.外码D.候选码20.已知下列函数定义: fun(int*b,int c,int d) int k; for(k=0;kc*d;k+) *b=c+d; b+; 则调用此函数的正确写法是(假设变量 a 的说明为 int a10)( )。(分数:1.00)A.fun(*a,6,14);B.f
4、im( else return 0; 程序运行后的输出结果是( )。 A) 4 B) 7 C) 10 D) 6(分数:2.00)A.B.C.D.37.交换两个变量的值,不允许用临时变量,应该使用下列( )位运算符。(分数:2.00)A.j=0;j-) if(_=2) b=b+arrij; printf(“%d,%d/n“,a,b); (分数:2.00)填空项 1:_50.函数 fun 的功能是:根据以下公式求 P 的值,结果由函数值返回。m 与 n 为两个正数且要求 mn。 例如:m=12,n=8 时,运行结果应该是 495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。
5、 #includeconio.h #includestdio.h float fun(int m,int n) int i; float P=1.0; for(i=1;i=m;i+)_; for(i=1;i=n;i+)_; for(i=1;i=m-n;i+)p=p/i; return p; main() printf(“P=%f/n“,fun(12,8); (分数:2.00)填空项 1:_51.先有两个 C 程序文件 T18.c 和 myfun.c 同在 TC 系统目录(文件夹)下,其中 T18.c 文件 如下: #includestdio.h #include“myfun.C“ main()
6、 fun();printf(“/n“); /myfun.c 文件如下: void fun() char s80,c;int n=0; while(c=getchar()!=/n) sn+=c; n-; while(n=0)printf(“%c“,sn-); 当编译连接通过后,运行程序 T18 时,输入 Hello!则输出结果是_。(分数:2.00)填空项 1:_二级 C 语言笔试-10 答案解析(总分:94.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:70.00)1.C 语言规定,在一个 C 程序中,main()函数的位置( )。(分数:2.00)A.必须在系统调用的库函
7、数之后B.必须在程序的开始C.必须在程序的最后D.可以在任意位置 解析:解析 每个 C 程序有且只有一个主函数(main),且程序必须从 main()函数开始执行,而且 main()函数可以放在程序中的任意位置。2.检查软件产品是否符合需求定义的过程称为( )。(分数:2.00)A.确认测试 B.需求测试C.验证测试D.路径测试解析:解析 确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求。3.C 语言规定,函数返回值的类型是( )。(分数:2.00)A.由调用该函数时的主调函数类型所决定B.由 return 语句中的表达式类型所决定C.由调用该函数时系统临
8、时决定D.由定义该函数时所指定的数值类型决定 解析:解析 本题考查函数调用时的数值类型。函数调用时,函数返回值的类型既不由主调函数类型所决定,也不由 return 语句中的表达式类型所决定,更不是由系统临时决定,而是由定义该函数时所指定的数值类型所决定。4.下列一维数组说明中,不正确的是( )。(分数:2.00)A.int N; B.float a=1,6,6,0,2; scanf(“%d“, int bN;C.#define S 10D.int aS+5;解析:解析 本题考查一维数组的赋值。一维数组的一般定义格式为:类型说明符数组名常量表达式。其中,“”中的内容可以是整型常量,也可以是整型表
9、达式。选项 A)中的 N 是一个变量,所以错误。5.执行下列程序时输入 456空格789空格123回车,输出结果是( )。 #includestdio.h main() char m80; int c,i; scanf(“%c“, scanf(“%d“,B.n1=(n2/(n3=2);C.k=i=j;D.a=b+c=2; 解析:解析 本题考查赋值表达式。赋值表达式的一般形式是:变量名=表达式。C 语言规定,不能给变量表达式赋值。8.若已定义: int a=0,1,2,3,4,5,6,7,8,9,*p=a,i; 其中 0i9,则对 a 数组元素不正确的引用是( )。(分数:2.00)A.ap-a
10、B.*(语句后,a 的值为( )。(分数:1.00)A.36B.0C.-24D.-60 解析:解析 此题考查的是赋值表达式。执行语句“a+=a-=a*a;”时,首先执行 a=a-a*a=-30,然后执行 a=a+a=-60。19.在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的( )。(分数:1.00)A.连接码B.关系码C.外码D.候选码 解析:解析 在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。20.已知下列函数定义: fu
11、n(int*b,int c,int d) int k; for(k=0;kc*d;k+) *b=c+d; b+; 则调用此函数的正确写法是(假设变量 a 的说明为 int a10)( )。(分数:1.00)A.fun(*a,6,14);B.fim( else return 0; 程序运行后的输出结果是( )。 A) 4 B) 7 C) 10 D) 6(分数:2.00)解析:A.B. C.D.解析:解析 本题主要考查的是函数的递归调用,子函数 f 是一个递归函数,所以主函数中执行 f(a,2)时,其执行过程是 a3+f(a,1)=a3+a2+f(a,0)=7。37.交换两个变量的值,不允许用临时
12、变量,应该使用下列( )位运算符。(分数:2.00)A.j=0;j-) if(_=2) b=b+arrij; printf(“%d,%d/n“,a,b); (分数:2.00)填空项 1:_ (正确答案:j=2)解析:i+j=2 解析 本题要求是分别输出数组 arr 的两条对角线上的元素之和。题目中已经给出的语句if(i=j)a=a+arrij;,a 的值是正对角线元素 a00、a11、a22的和;b 的值是另一对角线元素 a02、a11、a20之和,所以第一空白处填入 j=2,使得内层循环 i 从 2 递减到 0;第二空白处填入 i+j=2,因为此对角线元素的下标满足下标之和为 2,这样即可得
13、到 b 的值。50.函数 fun 的功能是:根据以下公式求 P 的值,结果由函数值返回。m 与 n 为两个正数且要求 mn。 例如:m=12,n=8 时,运行结果应该是 495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。 #includeconio.h #includestdio.h float fun(int m,int n) int i; float P=1.0; for(i=1;i=m;i+)_; for(i=1;i=n;i+)_; for(i=1;i=m-n;i+)p=p/i; return p; main() printf(“P=%f/n“,fun(12,8
14、); (分数:2.00)填空项 1:_ (正确答案:p=p*i)解析:p=p/i 解析 本题中题日要求是 m 和 n 的值分别为 12 和 8,得到的结果是 495.000000。分析可知(12!)/(8!)/(4)!即可得到结果,所以第一个 for 循环处得到的是 12!,所以空白处填入 p=p*i:第二空白处需得到(12!)/(8!),故填入 p=p/i。51.先有两个 C 程序文件 T18.c 和 myfun.c 同在 TC 系统目录(文件夹)下,其中 T18.c 文件 如下: #includestdio.h #include“myfun.C“ main() fun();printf(“
15、/n“); /myfun.c 文件如下: void fun() char s80,c;int n=0; while(c=getchar()!=/n) sn+=c; n-; while(n=0)printf(“%c“,sn-); 当编译连接通过后,运行程序 T18 时,输入 Hello!则输出结果是_。(分数:2.00)填空项 1:_ (正确答案:!olleH)解析:解析 本题考查的是“文件包含”处理功能。“文件包含”处理是指一个源文件可以将另一个源文件的全部内容包含进来,供源文件使用。此题中“myfun.c”就是被包含在 T18.c 下进行编译。myfun.c文件是实现字符串反序的功能,用 getchar()函数输入字符并赋给数组 s,每输入一个字符,数组下标 n自行加 1,直到遇到回车键时结束输入。while(n=0)下的条件语句就是来实现字符串反序功能的。