C语言模拟考试卷
一、是非题(每小题1分,共5分)
(1)若有说明:int a[][4] ={0,0}; 则二维数组a的第一维大小为1 B
A)对 B)错
(2)判断char型变量cl是否为大写字母的正确表达式是(cl>= 'A')&&(cl<= 'Z')A
A)对 B)错
(3)已知 int a=1,b=-1; 则语句 printf("%d\n", (a--, ++b)); 的输出结果是 -1B
A)对 B)错
(4)strcmp函数的功能是字符串的比较A
A)对 B)错
(5)sizeof(float)是一个不合法的表达式B
A)对 B)错
二、单项选择题(每小题3分,共75分)
(1)下列关于C语言用户标识符的叙述中正确的是(A)。
A)用户标识符中可以出现下划线和中划线(减号)
B)用户标识符中不可以出现中划线,但可以出现下划线
C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头
(2)下列叙述中正确的是(B)。
A)C语言的函数可以嵌套调用
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言编译时不检查语法
(3)以下4个选项中,不能看做一条语句的是(D)。
A); B)a=5,b=2.5,c=3.6;
C)if(a<5)continue语句执行过程; D)if(b!=5)x=2;y=6;
(4)以下程序段的描述,正确的是(C)。
x=-1;
do
{x=x*x;}
while(!x);
A)是死循环 B)循环执行两次
C)循环执行一次 D)有语法错误
(5) 已知char ch=’C’;则以下表达式的值是(D)。
ch=(ch>=’A’ && ch<=’Z’)?(ch+32):ch;
A)A B)a C)Z D)c
(6)执行下面的程序段后,变量k中的值为(A)。
int k=3, s[2];
s[0]=k; k=s[1]*10;
A)不定值 B)33 C)30 D)10
(7)现有如下定义:int a, b, *p, *q;,则下列赋值语句错误的是(D)。
A)p=&a; B)q=&b;
C)p=q; D)p=a;
(8)有如下程序段
int a=14, b=15, x;
char c='A';
x=(a&&b)&&(c<'B');
执行该程序段后,x的值为(D)
A)ture B)false C)0 D)1
(9)下列说法中错误的是(A)。
A)只能在循环体内使用break语句
B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
C)在while和do…while循环中,continue语句并没有使整个循环终止
D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
(10)C 语言中,系统的标准输入文件是指(A)。
A)键盘 B)显示器 C)软盘 D)硬盘
(11)执行以下程序后,a,b的值分别为(C)。
main()
{ int a, b, k=4, m=6, *p1=&k, *p2=&m;
a=p1==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n", a);
printf("b=%d\n", b);
}
A)-1, 5 B)1, 6 C)0, 7 D)4, 10
(12)当顺利执行了文件关闭操作时,fclose函数的返回值是(C)。
A)-1 B)TRUE C)0 D)1
(13)设有数组定义: char array[]="China"; 则数组 array所占的空间为(C)。
A)4个字节 B)5个字节 C)6个字节 D)7个字节
(14)下面四个选项中,均是不合法的用户标识符的选项是(C)。
A)A P_0 do B)float la0 _A
C)b-a goto int D)_123 temp int
(15)以下程序的运行结果是(B)。
#define MIN(x,y)(x)<(y)?(x):(y)
main()
{ int i=10, j=15, k;
k=10*MIN(i,j);
printf("%d\n", k);
}
A)10 B)15 C)100 D)150
(16)有如下定义语句:int aa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为(C)。
A)3,2 B)3,1 C)2,2 D)2,1
(17)下面程序段的运行结果是(C)。
char *p=”abcdefgh”;
p+=3;
printf(”%d\n”, strlen(strcpy(p,”ABCD”)));
A)8 B)12 C)4 D)7
(18)以下程序有错,错误原因是(D)。
main()
{ int *p, i; char *q, ch;
p=&i;
q=&ch;
*p=40; *p=*q;
...... }
A)p和q的类型不一致,不能执行*p=*q;语句
B)*p中存放的是地址值,因此不能执行*p=40;语句
C)q没有指向具体的存储单元,所以*q没有实际意义
D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果
(19)以下叙述中不正确的是(D)。
A)在不同的函数中可以使用相同的名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内定义的变量只在本函数范围内有效
D)在一个函数内的复合语句中定义的变量在本函数范围内有效
(20)有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=&a[3], b; b=p[5];
则b的值是(C)
A)5 B)6 C)9 D)8
(21)C语言中,能识别处理的文件为(B)。
A)文本文件和数据块文件
B)文本文件和二进制文件
C)流文件和文本文件
D)数据文件和二进制文件
(22)下面程序的输出结果是(B)。
main()
{ int a,b; b=(a=3*5,a*4,a*5);
printf("%d",b);}
A)60 B)75 C)65 D)无确定值
(23)以下程序的执行结果是(D)。
Main()
{ int a=2, j;
for(j=0; j<3; j++) printf("%4d", f(a));
}
f(int a)
{ int b=0, static int c=3;
b++; c++;
return(a+b+c);
}
A)7 7 7 B)7 10 13 C)7 9 11 D)7 8 9
(24)有如下程序段
int *p,a=10,b=1;
p=&a; a=*p+b;
执行该程序段后,a的值为(B)。
A)12 B)11 C)10 D)编译出错
(25)有如下说明
int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=a;
则数值为9的表达式是(B)。
A)*p+9 B)*(p+8) C)*p+=9 D)p+8
三、读程序写结果(每题2分,共20分)
(1)下面程序的运行结果是: ga
main()
{ char a[]="Language", b[]="Program";
char *p1, *p2;
int k;
p1=a;
p2=b;
for(k=0; k<=7; k++)
if(*(p1+k)==*(p2+k)) printf("%c", *(p1+k));
}
(2)下面程序的运行结果是: x=8
main()
{ int i, j, x=0;
for(i=0; i<2; i++)
{ x++;
for(j=0; j<3; j++)
{ if(j%2) continue;
x++;
}
x++;
}
printf("x=%d\n", x);
}
(3)下面程序的运行结果是: 1,3
#include "stdio.h"
main()
{ int i, m, n;
for(i=0; i<3; i++)
{ m=test1();
n=test2();}
printf("%d,%d\n", m, n);
}
test1()
{ int x=0;
x++;
return x;
}
test2()
{ static int x=0;
x++;
return x;
}
(4)下面程序的运行结果是: 2
#include <stdio.h>
int a[]={2,4,6,8};
main()
{ int i;
int *p=a;
for(i=0;i<4;i++) a[i]=*p;
printf("%d\n",a[2]);
}
(5)下面程序的运行结果是: 19
#include "stdio.h"
#include "string.h"
main()
{ char a[3][20]={{"china"}, {"isa"}, {"bigcountry!"}};
char k[100]={0}, *p=k;
int i;
for(i=0; i<3 ;i++)
{ p=strcat(p, a[i]);}
i=strlen(p);
printf("%d\n",i);}
(6)假设程序运行时输入数据为 200,请写出程序运行结果: C8
main()
{ char b[17]={"0123456789ABCDEF"};
int c[64], d, i=0, base=16;
long n;
printf("Enter a number:\n");
scanf("%ld", &n);
do{
c[i]=n%base;
i++;
n=n/base;}
while(n!=0);
printf("Result:");
for(--i; i>=0; --i)
{ d=c[i];
printf("%c",
b[d]); }
printf("\n");
}
(7)当程序运行时,输入字符串”asd af aa z67”(不包含双引号),则输出为: asdaffaaz67
#include <stdio.h>
#include <ctype.h>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论