2015 年计算机二级 (C 语言 ) 模拟试题及答案 (4) 一 填空题 1 C 语言中基本的数据类型有 : 2 C 语言中普通整型变量的类型说明符为, 在内存中占 字节, 有符号普通整型的数据范围是 3 整数-35 在机内的补码表示为 4 执行下列语句 int a=8;a+=a-=a*a; 后,a 的值是 5 有如下语句:charA[ ]={ I am a student }; 该字符串的长度是,A[3]= 6 符号 a 和 a 的区别是 7 所谓 指针 就是 & 运算符的作用是 * 运算符的作用是 8 有如下输入语句:scanf( a=%d,b=%d,c=%d,&a,&b,&c); 为使变量 a 的值为 1,b 的值为 3,c 的值为 2, 从键盘输入数据的正确形式应是 二 选择题 1 设整型变量 a 为 5, 使 b 不为 2 的表达式是 ( ) A. b=a/2 B. b=6-(--a) C. b=a%2 D. b=a>3?2:1 2 为了避免嵌套的条件分支语句 if-else 的二义性,C 语言规定 :C 程序中的 else 总是与 ( ) 组成配对关系 A. 缩排位置相同的 if B. 在其之前未配对的 if C. 在其之前未配对的最近的 if D. 同一行上的 if 3 以下程序的输出结果是( ) int x=10,y=10; 1
printf( %d%d\n,x--,--y); A. 1010 B. 9 9 C. 9 10 D. 10 9 4 设 A 为存放 ( 短 ) 整型的一维数组, 如果 A 的首地址为 P, 那么 A 中第 i 个元素的地址为 ( ) A.P+i*2 B.P+(i-1)*2 C.P+(i-1) D.P+i 5 选出下列标识符中不是合法的标识符的是( ) A. hot_do B. cat1 C. _pri D. 2ab 6 以下程序的输出结果是( ) int a=5; float x=3.14; a*=x*( E - A ); printf( %f\n,(float)a); A. 62.000000 B. 62.800000 C. 63.000000 D. 62 7 设有说明 double(*p1)[n]; 其中标识符 p1 是 ( ) A. N 个指向 double 型变量的指针 B. 指向 N 个 double 型变量的函数指针 C. 一个指向由 N 个 double 型元素组成的一维数组的指针 2
D. 具有 N 个指针元素的一维指针数组, 每个元素都只能指向 double 型量 8 在 C 程序中有如下语句 :char *func(int x,int y); 它是 ( ) A. 对函数 func 的定义 B. 对函数 func 的调用 C. 对函数 func 的原型说明 D. 不合法的 9 以下程序的输出结果是( ) char str[15]= hello! ; printf( %d\n,strlen(str)); A. 15 B. 14 C. 7 D. 6 10 分析以下程序的输出结果是( ) {inta=5,b=-1,c; c=adds(a,b); printf( %d,c); c=adds(a,b); printf( %d\n,c); } int adds(int x,int y) {static int m=0,n=3; n*=++m; m=n%x+y++; return(m);} A. 2,3 B. 2,2 C. 3,2 D. 2,4 3
11 下列描述中不正确的是( ) A. 字符型数组中可能存放字符串 B. 可以对字符型数组进行整体输入 输出 C. 可以对整型数组进行整体输入 输出 D. 不能在赋值语句中通过赋值运算符 = 对字符型数组进行整体赋值 12 以下程序的输出结果是( ) #definef(x) x*x {int a=6,b=2,c; c=f(a)/f(b); printf( %d\n,c); } A.9 B.6 C.36 D.18 13 设有如下定义: int x=10,y=3,z; 则语句 printf("%d\n",z=(x%y,x/y)); 的输出结果是 ( ) A. 1 B. 0 C. 4 D. 3 14 定义如下变量和数组:int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则语句 for(i=0;i<3;i++)printf("%d",x[i][2-i]); 的输出结果是 ( ) A. 159 B. 147 C. 357 D. 369 15 以下对二维数组 a 进行正确初始化的是 ( ) A. int a[2][3]={{1,2},{3,4},{5,6}}; 4
B. int a[ ][3]={1,2,3,4,5,6}; C. int a[2][ ]={1,2,3,4,5,6}; D. int a[2][ ]={{1,2},{3,4}}; 16 两次运行下面的程序, 如果从键盘上分别输入 6 和 3, 则输出结果是 ( ) int x; scanf("%d",&x); if(x++>5) printf("%d",x); else printf("%d\n",x - -); A. 7 和 5 B. 6 和 3 C. 7 和 4 D. 6 和 4 17 设有如下定义: char *aa[2]={"abcd","abcd"}; 则以下说法中正确的是 ( ) A)aa 数组成元素的值分别是 "abcd" 和 ABCD" B)aa 是指针变量, 它指向含有两个数组元素的字符型一维数组 C)aa 数组的两个元素分别存放的是含有 4 个字符的一维字符数组的首地址 D)aa 数组的两个元素中各自存放了字符 'a' 和 'A' 的地址 18 下列程序的输出结果是( ) char *p1="abcd", *p2="abcd", str[50]="xyz"; strcpy(str+2,strcat(p1+2,p2+1)); printf("%s",str); A. xyabcab B. abcabz C. ABabcz D. xycdbcd 19 下列程序的输出结果是( ) int a[5]={2,4,6,8,10},*p,* *k; p=a;k=&p; 5
printf("%d",*(p++)); printf("%d\n",* *k); A. 4 4 B. 2 2 C. 2 4 D. 4 6 20 不能把字符串:Hello! 赋给数组 b 的语句是 ( ) A. char b[10]={'h','e','l','l','o','!'}; B. char b[10];b="hello!"; C. char b[10];strcpy(b,"hello!"); D. char b[10]="hello!"; 三 读程序题 1 float f=3.1415927; printf( %f,%5.4f,%3.3f,f,f,f); 则程序的输出结果是 2 int x=6, y=7; printf( %d,,x++); printf( %d\n,++y); 程序的输出结果是 3 a=3; a+=(a<1)?a:1; printf( %d,a); 结果是 4 for (a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) {b+=3;continue;} b-=5; } 程序的输出结果 a 的值为 5 int y=1, x, *p, a[ ]={2,4,6,8,10}; 6
p=&a[1]; for(x=0;x<3;x++) y + = * (p + x); printf("%d\n",y); 程序的输出结果 y 的值是 四 程序填空题 1 从键盘上输入 10 个数, 求其平均值 int i; float f,sum; for(i=1,sum=0.0;i<11;i++) { ; ; } printf( average=%f\n,sum/10); } 2 以下程序是建立一个名为 myfile 的文件, 并把从键盘输入的字符存入该文件, 当键盘上输入结束时关闭该文件 #include { FILE *fp; char c; fp= ; do{ c=getchar(); fputs(c,fp); }while(c!=eof); } 3 以下程序的功能是: 从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩, 当输入负数时结束输入. 请填空. { float x,amax,amin; 7
scanf("%f",&x); amax=x; amin=x; while( ) { if(x>amax) amax=x; if( ) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin);} 五 编程题 1. 三个整数 a b c, 由键盘输入, 输出其中最大的一个数 2. 输出 1900~2000 年中所有的闰年 每输出 3 个年号换一行 ( 判断闰年的条件为下面二者之一 : 能被 4 整除, 但不能被 100 整除 或者能被 400 整除 ) 3. 请编一个函数 int fun(int a), 它的功能是 : 判断 a 是否是素数, 若 a 是素数, 返回 1; 若不是素数, 返回 0 A 的值由主函数从键盘读入 4. 有 N 个学生, 每个学生的信息包括学号 性别 姓名 四门课的成绩, 从键盘上输入 N 个学生的信息, 要求输出总平均成绩最高的学生信息, 包括学号 性别 姓名和平均成绩 参考答案 : 一 填空题 (1) 整型 实型 字符型 (2) int, 2, -32768~ +32767 (3) 1111111111011101 (4) - 112 (5)14, m (6) a 是字符串常量, 而 a 是字符常量 (7) 存放地址值的变量或常量, 或者答地址 (8) 取运算对象的地址 取指针变量所指的内容 (8) a=1,b=3,c=2 二 选择题 1 C 2 C 3 D 4 B 5 D 6 A 7 C 8 C 9 D 10 A 11 C 12 C 13 D 14 C 15 B 16 C 17 D 18 D 19 C 20 B 三 阅读程序题 8
(1) 3.141593,3.1416,3.142 (2) 6,8 (3) 4 (4) 22 (5) 19 四 程序填空题 1 scanf( %f,&f); sum+=f; 2 fopen( myfile,w) fclose(fp); 3 x>=0.0 x<=amin 五 编程题 1 {int a,b,c; printf( 请输入三个整数 : ); scanf( %d,%d,%d,&a,&b,&c); if(a<b) if(b<c) printf( max="%d\n,c);<br">else printf( max=%d\n,b); else if(a<c) printf( max="%d\n,c);<br">else printf( max=%d\n,a); } 2 #include stdio.h {int I,n; for(n=0,i=1900;i<=2000;i++) {if(i%4==0&&i 0!=0 I@0==0) {printf( %d,i); n++; } if(n%3==0) printf( \n ); } } } 3 #include stdio.h int fun(int a) {int I; if(a==2) return 1; I=2; while((a%i)!=0&&i<=sqrt((float)a)) I++; if(a%i==0) {printf( %d is not a prime!,a); 9
return 0; } printf( %d is a prime!,a); return 1; } {int x; printf( \n please enter a number: ); scanf( %d,&x); printf( %d\n,fun(x)); } 4 #include"stdio.h" #define N 3 struct student {long stu_num; char sex; char name[15]; int score[4]; float average; }; {int I,j,index; float sum,max; struct student stuarr[n]; for(i=0;i<n;i++) {printf("please input %d student information:\n",i+1); scanf("%ld,%c,%s",&stuarr[i].stu_num,&stuarr[i].sex,stuarr[i].name); for(j=0;j<4;j++) scanf("%d",&stuarr[i].score[j]); } for(i=0;i<n;i++) {sum=0.0; for(j=0;j<4;j++) sum+=stuarr[i].score[j]; stuarr[i].average=sum/4.0; } max=stuarr[0].average; index=0; 10
for(i=1;i<n;i++) if(stuarr[i].average>max) {max=stuarr[i].average; index=i; } printf(" 总平均成绩最高的学生信息是学号 =%ld, 性别 =%c, 姓名 =%s, 平均成绩 =%4.1f\n",stuarr[index].stu_num,stuarr[index].sex,stuarr[index].name, stuarr[index].average);} 11