1、2013 年 3 月计算机二级 C 语言模拟试题-2 及答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:8,分数:16.00)1.C 语言中普通整型变量的类型说明符为 1,在内存中占 2 字节,有符号普通整型的数据范围是 3。(分数:2.00)填空项 1:_2.C 语言中基本的数据类型有: 1 、 2 、 3 。(分数:2.00)填空项 1:_填空项 1:_填空项 1:_3.设整型变量 n 的值为 2,执行语句“n+=n-=n*n”后,n 的值是 1 。(分数:2.00)填空项 1:_4.共用体和结构体的定义格式类似,不同点是 1。(分数:2.00)填空项 1:_5.有
2、如下输入语句:scanf(“a=%d,b=%d,c=%d”,为使变量 a 的值为 1,b 的值为 3,c 的值为2,从键盘输入数据的正确形式应是 1 。(分数:2.00)填空项 1:_6.有如下语句:char A =”I am a student”; 该字符串的长度是 1,A3= 2 。(分数:2.00)填空项 1:_填空项 1:_7.符号”a”和a的区别 1。(分数:2.00)填空项 1:_8.下列程序的输出结果是 1 。 int ast(int x,int y,int * cp,int * dp) *cp=x+y; *dp=x-y; main2 int a=4,b=3,c,d; ast(a
3、,b, printf(“%d,%d/n“,c,d); (分数:2.00)填空项 1:_二、选择题(总题数:20,分数:40.00)9.以下选项中属于 C 语言的数据类型是( )。(分数:2.00)A.复合型B.双精度型C.逻辑型D.集合型10.以下说法中正确的是( )。(分数:2.00)A.C 语言程序总是从第一个的函数开始执行B.在 C 语言程序中,要调用的函数必须在 main()函数中定义C.C 语言程序总是从 main()函数开始执行D.C 语言程序中的 main()函数必须放在程序的开始部分11.选出下列标识符中不是合法的标识符的是( )。(分数:2.00)A.hot_doB.cat1
4、C._priD.2ab12.下列描述中不正确的是( )。(分数:2.00)A.字符型数组中可能存放字符串。B.可以对字符型数组进行整体输入、输出。C.可以对整型数组进行整体输入、输出。D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。13.若已定义:int a9, *p=a;并在以后的语句中未改变 p 的值,不能表示 a1地址的表达式为( )。(分数:2.00)A.p+1B.a+1C.a+D.+p14.设有如下定义: int x=10,y=3,z; 则语句 printf(“%d/n“,z=(x%y,x/y); 的输出结果是( )。(分数:2.00)A.1B.0C.4D.315.
5、定义如下变量和数组: int i, x33=1,2,3,4,5,6,7,8,9;则下面语句 for(i=0;iA.1 5 9B.1 4 7C.3 5 7D.3 6 916.读出以下语句的输出结果是( )。 int x=10,y=10; printf(“%d %d/n”,x-,-y);(分数:2.00)A.10 10B.9 9C.9 10D.10 917.两次运行下面的程序,如果从键盘上分别输入 6 和 3,则输出结果是( )。 if(x+5) printf(“%d“,x); else printf(“%d/n“,x - -);(分数:2.00)A.7 和 5B.6 和 3C.7 和 4D.6
6、和 418.设有如下定义:char *aa2=“abcd“,“ABCD“;则以下说法中正确的是( )。(分数:2.00)A.aa 数组成元素的值分别是“abcd“和 ABCD“B.aa 是指针变量,它指向含有两个数组元素的字符型一维数组C.aa 数组的两个元素分别存放的是含有 4 个字符的一维字符数组的首地址D.aa 数组的两个元素中各自存放了字符a和A的地址19.以下语句的输出结果是( )。 int a=-1,b=4,k; k=(+ +a=20) break; if(b%3=1) b+=3; continue; b-=5; 程序的输出结果 a 的值为_。(分数:3.00)_四、程序填空题(总
7、题数:3,分数:9.00)34.求主次对角线之和。 main1 static int a 3=9,7,5,1,2,4,6,8; int I,j,s1=0,s2=0; for(I=0;I2) s1=s1+aIj; if( 3 ) s2=s2+aIj; printf(“%d/n%d/n”,s1,s2); (分数:3.00)填空项 1:_填空项 1:_35.从键盘上输入 10 个数,求其平均值。 main1 int i; float f,sum; for(i=1,sum=0.0;i2; 3 ; printf(“average=%f/n”,sum/10); (分数:3.00)填空项 1:_36.以下程
8、序是建立一个名为 myfile 的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。 #include main1 FILE *fp; char c; fp= 2; do c=getchar3; fputs(c,fp); while(c!=EOF); 4; ; (分数:3.00)填空项 1:_五、编程题(总题数:4,分数:20.00)37.三个整数 a、b、c,由键盘输入,输出其中最大的数。(分数:5.00)_38.从键盘输入的 10 个整数中,找出第一个能被 7 整除的数。若找到,打印此数后退出循环;若未找到,打印“not exist”。(分数:5.00)_39.有一个一维
9、数组,内放 10 个学生成绩,写一个函数,求出平均分。(分数:5.00)_40.有 N 个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入 N 个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。(分数:5.00)_2013 年 3 月计算机二级 C 语言模拟试题-2 答案解析(总分:100.00,做题时间:90 分钟)一、填空题(总题数:8,分数:16.00)1.C 语言中普通整型变量的类型说明符为 1,在内存中占 2 字节,有符号普通整型的数据范围是 3。(分数:2.00)填空项 1:_ (正确答案:int ,2 个字节,-32768 +32
10、767)解析:2.C 语言中基本的数据类型有: 1 、 2 、 3 。(分数:2.00)填空项 1:_ (正确答案:整型)填空项 1:_ (正确答案:实型)填空项 1:_ (正确答案:字符型)解析:3.设整型变量 n 的值为 2,执行语句“n+=n-=n*n”后,n 的值是 1 。(分数:2.00)填空项 1:_ (正确答案:- 4)解析:4.共用体和结构体的定义格式类似,不同点是 1。(分数:2.00)填空项 1:_ (正确答案:结构体的成员占有各自不同的空间,而共用体的各成员放到同一存储空间)解析:5.有如下输入语句:scanf(“a=%d,b=%d,c=%d”,为使变量 a 的值为 1,
11、b 的值为 3,c 的值为2,从键盘输入数据的正确形式应是 1 。(分数:2.00)填空项 1:_ (正确答案:a=1,b=3,c=2)解析:6.有如下语句:char A =”I am a student”; 该字符串的长度是 1,A3= 2 。(分数:2.00)填空项 1:_ (正确答案:14)填空项 1:_ (正确答案:m)解析:7.符号”a”和a的区别 1。(分数:2.00)填空项 1:_ (正确答案:“a“是字符串常量,而a是字符常量。)解析:8.下列程序的输出结果是 1 。 int ast(int x,int y,int * cp,int * dp) *cp=x+y; *dp=x-y
12、; main2 int a=4,b=3,c,d; ast(a,b, printf(“%d,%d/n“,c,d); (分数:2.00)填空项 1:_ (正确答案:7,1)解析:二、选择题(总题数:20,分数:40.00)9.以下选项中属于 C 语言的数据类型是( )。(分数:2.00)A.复合型B.双精度型 C.逻辑型D.集合型解析:10.以下说法中正确的是( )。(分数:2.00)A.C 语言程序总是从第一个的函数开始执行B.在 C 语言程序中,要调用的函数必须在 main()函数中定义C.C 语言程序总是从 main()函数开始执行 D.C 语言程序中的 main()函数必须放在程序的开始部
13、分解析:11.选出下列标识符中不是合法的标识符的是( )。(分数:2.00)A.hot_doB.cat1C._priD.2ab 解析:12.下列描述中不正确的是( )。(分数:2.00)A.字符型数组中可能存放字符串。B.可以对字符型数组进行整体输入、输出。C.可以对整型数组进行整体输入、输出。 D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值。解析:13.若已定义:int a9, *p=a;并在以后的语句中未改变 p 的值,不能表示 a1地址的表达式为( )。(分数:2.00)A.p+1B.a+1C.a+ D.+p解析:14.设有如下定义: int x=10,y=3,z; 则
14、语句 printf(“%d/n“,z=(x%y,x/y); 的输出结果是( )。(分数:2.00)A.1B.0C.4D.3 解析:15.定义如下变量和数组: int i, x33=1,2,3,4,5,6,7,8,9;则下面语句 for(i=0;iA.1 5 9B.1 4 7C.3 5 7 D.3 6 9解析:16.读出以下语句的输出结果是( )。 int x=10,y=10; printf(“%d %d/n”,x-,-y);(分数:2.00)A.10 10B.9 9C.9 10D.10 9 解析:17.两次运行下面的程序,如果从键盘上分别输入 6 和 3,则输出结果是( )。 if(x+5)
15、printf(“%d“,x); else printf(“%d/n“,x - -);(分数:2.00)A.7 和 5B.6 和 3C.7 和 4 D.6 和 4解析:18.设有如下定义:char *aa2=“abcd“,“ABCD“;则以下说法中正确的是( )。(分数:2.00)A.aa 数组成元素的值分别是“abcd“和 ABCD“B.aa 是指针变量,它指向含有两个数组元素的字符型一维数组C.aa 数组的两个元素分别存放的是含有 4 个字符的一维字符数组的首地址D.aa 数组的两个元素中各自存放了字符a和A的地址 解析:19.以下语句的输出结果是( )。 int a=-1,b=4,k; k
16、=(+ +a=20) break; if(b%3=1) b+=3; continue; b-=5; 程序的输出结果 a 的值为_。(分数:3.00)_正确答案:(8)解析:四、程序填空题(总题数:3,分数:9.00)34.求主次对角线之和。 main1 static int a 3=9,7,5,1,2,4,6,8; int I,j,s1=0,s2=0; for(I=0;I2) s1=s1+aIj; if( 3 ) s2=s2+aIj; printf(“%d/n%d/n”,s1,s2); (分数:3.00)填空项 1:_ (正确答案:I=j)填空项 1:_ (正确答案:I+j=2)解析:35.从
17、键盘上输入 10 个数,求其平均值。 main1 int i; float f,sum; for(i=1,sum=0.0;i2; 3 ; printf(“average=%f/n”,sum/10); (分数:3.00)填空项 1:_ (正确答案:scanf(“%f”, sum+=f;)解析:36.以下程序是建立一个名为 myfile 的文件,并把从键盘输入的字符存入该文件,当键盘上输入结束时关闭该文件。 #include main1 FILE *fp; char c; fp= 2; do c=getchar3; fputs(c,fp); while(c!=EOF); 4; ; (分数:3.00
18、)填空项 1:_ (正确答案:fopen(“myfile”,w) fclose(fp);)解析:五、编程题(总题数:4,分数:20.00)37.三个整数 a、b、c,由键盘输入,输出其中最大的数。(分数:5.00)_正确答案:(main() int a,b,c; printf(“请输入三个整数:”); scanf(“%d,%d,%d”,if(aif(belse printf(“max=%d/n”,b); else if(aelse printf(“max=%d/n”,a); )解析:38.从键盘输入的 10 个整数中,找出第一个能被 7 整除的数。若找到,打印此数后退出循环;若未找到,打印“n
19、ot exist”。(分数:5.00)_正确答案:(#include”stdio.h” main() int I,a; for(I=1;I=10;I+) scanf(“%d”, if(a%7=0) printf(“%d”,a); break; if(I=11) printf(“not exist”); )解析:39.有一个一维数组,内放 10 个学生成绩,写一个函数,求出平均分。(分数:5.00)_正确答案:(float average(float array ,int n) int I; float aver,sum=array0; for(I=1;Isum=sum+arrayI; aver
20、=sum/n; return(aver); main() float ave,score10; int I; for(I=0;I解析:40.有 N 个学生,每个学生的信息包括学号、性别、姓名、四门课的成绩,从键盘上输入 N 个学生的信息,要求输出总平均成绩最高的学生信息,包括学号、性别、姓名和平均成绩。(分数:5.00)_正确答案:(#include“stdio.h“ #define N 3 struct student long stu_num; char sex; char name15; int score4; float average; ; main() int I,j,index;
21、 float sum,max; struct student stuarrN; for(I=0;I printf(“please input %d student information:/n“,I+1); scanf(“%ld,%c,%s“, for(j=0;jmax) max=stuarrI.average; index=I; printf(“总平均成绩最高的学生信息是学号=%ld,性别=%c,姓名=%s,平均成绩=%4.1f/n“,stuarrindex.stu_num,stuarrindex.sex,stuarrindex.name,stuarrindex.average); )解析: