C语言常见考试题型.docx
《C语言常见考试题型.docx》由会员分享,可在线阅读,更多相关《C语言常见考试题型.docx(18页珍藏版)》请在冰豆网上搜索。
![C语言常见考试题型.docx](https://file1.bdocx.com/fileroot1/2022-12/12/160ff670-0e18-4dd8-94a0-d73a48133538/160ff670-0e18-4dd8-94a0-d73a481335381.gif)
C语言常见考试题型
C语言常见考试题型
常见考试题型
选择题(13年20题,每题1分,共20分)
填空题(13年20分,基本概念、写程序运行结果、完善程序)
判断题(13年10题、每题1分,共10分)
编程题(13年4题,共40分)
其他题型
练习题选讲
选择题
(1)一个C程序的执行是从。
A)本程序的main函数开始,本程序的main函数结束
B)本程序的第一个函数开始,本程序的最后一个函数结束
C)本程序的main函数开始,本程序的最后一个函数结束
D)本程序的第一个函数开始,本程序的main函数结束
(2)C语言源程序名的后缀是。
A).exeB).cC).objD).cpp
(3)以下不能用作C语言中的标识符的是。
A)_ab12cdB)ab12cd_C)12abcdD)ab12_cd
(4)下面关于字符常量的说法错误的是。
A)一个字符常量代表ASCII字符集中的一个字符
B)单引号中的大写字母和小写字母代表不同的字符常量
C)字符常量只能包含一个字符
D)字符常量可以用单引号或双引号括起来
(5)以下程序运行后的输出结果是。
#include
main()
{
inta=1,b=0;
printf(“%d,”,b=a+b);
printf(“%d\n”,a=2*b);
}
A)0,0B)1,0C)3,2D)1,2
(6)以下关于C语言中初始化的说法中正确的是。
A)若整型变量在定义时没有初始化,则此时变量的值为0
B)若整型变量在定义时没有初始化,则变量的值是空值
C)若整型数组在定义时做了不完全初始化,则无法确定未指定值的数组元素的取值
D)变量定义时如果没有初始化,则无法确定该变量的值
(7)已知字符A的ASCII码值是65,以下程序。
#include
voidmain()
{
chara='A';
intb=20;
printf("%d,%o",(a=a+1),b);
}
A)表达式非法,输出零或不确定值B)因输出项过多,无输出或输出不确定值
C)输出结果为20,142D)输出结果为66,24
(8)下列说法中错误的是。
A)只能在循环体内使用break语句
B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
C)在while和do-while循环中,continue语句并没有使整个循环终止
D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,继续执行下次循环
(9)若变量已正确定义并赋值,不符合C语言语法的表达式是。
A)a=a+7B)a=7+b+c,8C)a>b&&b>cD)a=a+7=c+b
(10)设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是。
A)0至255B)0至65535C)0至32767D)-32768至32767
(11)以下程序的输出结果是。
main()
{
intx=10,y=10;
printf(“%d%d\n”,x--,--y);
}
A)109B)99C)910D)1010
(12)若以下选项中的变量已正确定义,则正确的赋值语句是。
A)x1=26.8%3B)x3=0x12
C)1+2=x2D)x4=1+2=3;
(13)以下表示数学式子“a
A)a
C)!
(a>=b)&&!
(b>=c)D)!
(a>=b||b>=c)
(14)已知字符A的ASCII码值是65,以下程序。
#include
voidmain()
{
chara='A';
intb=20;
printf("%d,%o",(a=a+1),b);
}
A)表达式非法,输出零或不确定值B)因输出项过多,无输出或输出不确定值
C)输出结果为20,142D)输出结果为66,24
(15)在下面的条件语句中(其中s1和s2代表C语言的语句),只有一个在功能上与其它三个语句不等价,它是【13】。
A.if(a)s1;elses2;B.if(a==0)s2;elses1;
C.if(a!
=0)s1;elses2;D.if(a==0)s1;elses2;
(16)当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是。
A)k%2 B)k%2==1C)(k%2)!
=0 D)!
k%2==1
(17)已知x=3,y=2,则表达式x*=y+8的值为【4】。
A)3B)2C)30D)10
(18)读下列程序:
#include
main()
{floata,b,t;
scanf("%f,%f",&a,&b);
if(a>b){t=a;a=b;b=t;}
printf("%5.2f,%5.2f",a,b);
}
运行时从键盘输入3.8和–3.4,则正确的输出结果是。
A)–3.40,–3.80B)–3.40,3.80
C)–3.4,3.8D)3.80,–3.40
(19)运行以下程序,输入6以后的输出结果是。
#include
voidmain()
{
intx,y;
scanf("%d",&x);
y=0;
if(x>=0)
{if(x>0)y=1;}
else
y=-1;
printf("%d\n",y);
}
A)0B)1C)-1D)不确定
(20)已知:
intx,a,b;下列选项中错误的if语句是。
A)if(a=b)x++;B)if(a=
C)if(x)x++;D)if(a-b)x++;
(21)两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是。
#include"stdio.h"
voidmain()
{
intx;
scanf("%d",&x);
if(x++>5)printf("%d",x);
elseprintf("%d\n",x--);
}
A)7和5B)6和3C)7和4D)6和4
(22)以下程序运行后的输出结果是。
#include"stdio.h"
voidmain()
{
inta;
scanf(“%d”,&a);
if(a>100)
printf("%d\n",a>100);
else
printf("%d\n",a<=100);
}
A)100B)1C)0D)不确定
(23)若变量已正确定义,则以下程序段的输出结果是:
。
x=0;y=2;z=3;
switch(x)
{
case0:
switch(y==2)
{
case1:
printf("*");break;
case2:
printf("%");break;
}
case1:
switch(z)
{
case1:
printf("$");
case2:
printf("*");break;
default:
printf("#");
}
}
A)*B)*#C)*%#D)*%$*
(24)设有程序段
intk=10;
while(k=0)
k=k-1;
则下面描述中正确的是。
A)while循环执行10次
B)循环时无限循环
C)循环体语句一次也不执行
D)循环体语句执行一次
(25)有以下程序
main()
{ints,i=0,x=0;
for(;;)
{
if(i==3||i==5)continue;
if(i==6)break;
i++;
s+=i;
};
printf("%d\n",s);
}
程序运行后的输出结果是。
A.10B.13C.21D.程序进入死循环
(26)运行以下程序,输入ADescriptor(表示回车),则输出结果是。
#include
main()
{
charc;
intv1=0,v2=0;
do{
switch(c=getchar())
{
case'A':
case'e':
case'i':
case'o':
default:
v1=v1+1;v2+=1;
}
}while(c!
='\n');
printf("v1=%d,v2=%d\n",v1,v2);
}
A)v1=0,v2=0B)v1=4,v2=4
C)v1=11,v2=11D)v1=12,v2=12
(27)若a、b均为int型变量且a=100,则对以下for循环语句的正确判断是。
for(b=100;a!
=b;++a,b++)printf("-----\n");
A)循环体只执行一次B)是死循环
C)循环体一次也不执行D)以上说法都不对
(28)以下程序运行后的输出结果是。
#include
voidmain()
{intn=2,k=0;
while(k++&&n++>2);
printf(“%d%d\n”,k,n);
}
A)12B)13C)57D)02
(29)判断字符串s1是否大于字符串s2,应当使用【10】。
A)if(s1>s2)B)if(strcmp(s1,s2))
C)if(strcmp(s2,s1)>0)D)if(strcmp(s1,s2)>0)
(30)若有以下语句,则正确的描述是。
charx[]="12345";
chary[]={'1','2','3','4','5'};
A)x数组和y数组的长度相同B)x数组长度大于y数组的长度
C)x数组长度小于y数组的长度D)x数组等价于y数组
(31)下列选项中,能正确定义数组的语句是。
A)intnum[0..2008];
B)intnum[];
C)intN=2008;
intnum[N];
D)#defineN2008
intnum[N];
(32)下列关于输出函数的说法中,不正确的。
A)putchar()函数只能输出一个字符
B)printf()函数在输出整数时,使用"%f"格式控制符
C)scanf()函数既可以输入数值,也可以输入字符串
D)strcpy()函数可以实现字符串拷贝
(33)若有以下定义
intx[10],*pt=x;
则对x数组元素的正确引用是。
A)*&x[10]B)*(x+3)C)*(pt+10)D)pt+3
(34)为了判断两个字符串s1和s2是否相等,应当使用。
A)if(s1==s2)B)if(s1=s2)
C)if(strcpy(s1,s2))D)if(strcmp(s1,s2)==0)
(35)现有如下定义语句
int*p,s[20],i;
p=s;
表示数组元素s[i]的表达式不正确的是。
A)*(s+i)B)*(p+i)C)*(s=s+i)D)*(p=p+i)
(36)设有定义doublea[10],*s=a;,以下能够代表数组元素a[3]的是。
A)(*s)[3]B)*(s+3)C)*s[3]D)*s+3
(37)以下程序的运行结果是。
#include
structst
{intx,y;}data[2]={1,10,2,20};
main()
{structst*p=data;
printf("%d,",p->y);printf("%d\n",(++p)->x);
}
A)10,1B)20,1C)10,2D)20,2
有以下程序运行后的输出结果是。
#include
voidfun(char*c,intd)
{
*c=*c+1;
d=d+1;
printf("%c,%c,",*c,d);
}
main()
{
charb='a',a='A';
fun(&b,a);
printf("%c,%c\n",b,a);
}
A)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B
(38)有以下程序
#include
#include
structA
{
inta;
charb[10];
doublec;
};
voidf(structAt);
main()
{
structAa={1001,"ZhangDa",1098.0};
f(a);
printf("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
voidf(structAt)
{
t.a=1002;
strcpy(t.b,"ChangRong");
t.c=1202.0;
}
程序运行后的输出结果是A。
A)1001,zhangDa,1098.0B)1002,changRong,1202.0
C)1001,ehangRong,1098.0 D)1002,ZhangDa,1202.0
(39)以下程序的输出结果是。
#include"stdio.h"
voidfun(intx)
{printf("%d\n",++x);}
voidmain()
{fun(12+5);}
A)12
B)13
C)17
D)18
(40)以下叙述中不正确的是。
A)在不同的函数中可以使用相同的名字的变量
B)函数中的形式参数是局部变量
C)在一个函数内的复合语句中定义的变量在本函数范围内有效
D)在一个函数内定义的变量只在本函数范围内有效
填空题
(1)C语言中最重要的一个函数是main,缺少该函数程序就无法运行。
(2)若有代数式:
,则正确的C语言表达式为:
x*x/(3*x-5*y)。
(3)设a=2,b=3,x=3.5,y=2.5;算术表达式(float)(a+b)/2+(int)x%(int)y的值是3.5。
(4)若定义了一个指针变量inta=90,*p,假设p=&a,则执行*p的值为90。
(5)在逻辑运算符!
、&&、||中,运算优先级别最高的是!
。
(6)表示年份y是闰年(能被4整除但不能被100整除或者能被400整除为闰年)的逻辑表达式为y%4==0&&y%100!
=0||y%400==0。
(7)C语言中数组的起始下标默认为0。
(8)若x,y是int型变量,x=100,y=200,则程序段printf("%d",(x,y));的输出是200。
(9)break语句可以用在循环语句和switch语句中。
(10)定义数组inta[10],则从键盘读入数组a的最后一个元素的语句是scanf(“%d”,&a[9]);。
(11)若有声明”inti=7;floatx=3.1416;doubley=3;”,则表达式i+’a’*x+i/y值的类型是double型。
(12)与数学算式
等价的C语言表达式是sqrt(abs(a-b))/(3*(a+b))。
(13)设x为int型变量,请写出一个关系表达式(x%3==0)&&(x%7==0),用以判断x同时为3和7的倍数时,关系表达式的值为真。
(14)设x,y,z,k都是int型变量,当执行表达式x=(y=4,z=16,k=32)之后x的值为32。
(15)设char类型的数据长度为1个字节,则unsignedchar类型数据的取值范围是0~255。
(16)以下程序段的输出结果是:
10。
inta=-1,b=1;
if((++a<0)&&!
(b--<=0))
printf("%d%d",a,b);
else
printf("%d%d",b,a);
(17)以下程序的输出结果为6。
#include
voidmain()
{ intk=5,n=0;
while(k>0)
{ switch(k)
{ case1:
case3:
n+=1;k--;break;
default:
n=0;k--;
case2:
case4:
n+=2;k--;break;
}
}
printf("%3d",n);
}
(18)以下程序运行后的输出结果是1。
#include
voidmain()
{
inti,j,m=1;
for(i=1;i<3;i++)
{
for(j=3;j>0;j--)
{
if((i*j)>3)
break;
m=i*j;
}
}
printf("m=%d\n",m);
}
(19)运行下列程序,若输入are(回车),则输出结果为Compare。
#include
voidmain()
{charstr[100]="Computer";
char*p=str;
scanf("%s",p+4);
puts(str);
}
(20)以下程序段的输出结果为15。
注意:
*运算优先级高于条件运算
#include
#defineMIN(x,y)(x)<(y)?
(x):
(y)
voidmain()
{inti,j,k;
i=10;j=15;
k=10*MIN(i,j);
printf("%d\n",k);
}
(21)完善下列程序,计算sum=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。
#include
main()
{
intn,s,sum=0;
scanf("%d",&n);
for(inti=1;i<=n;i++)
{
s=0;
for(intj=1;j<=i;j++)
s+=j;
sum+=s;
}
printf("%d",sum);
}
(22)完善下列程序,要求完成输入一个长度小于100的字符串,统计该字符串中大写字母、小写字母、数字及其他字符的个数。
#include"stdio.h"
voidmain()
{
charstr[100];
inti,big=0,small=0,num=0,other=0;
printf("pleaseinputstring:
");
gets(str);
for(i=0;str[i];i++)
if(str[i]>='A'&&str[i]<='Z')
big++;
else
if(str[i]>='a'&&str[i]<='z')
small++;
else
if(str[i]>='0'&&str[i]<='9')
num++;
else
other++;
printf("big=%d,small=%d,num=%d,other=%d\n",big,small,num,other);
}
(23)完善下列程序,要求从键盘输入10个整数,使用冒泡法升序排序后输出该数组。
#include"stdio.h"
voidmain()
{
inta[10];
inti,j,t;
printf("请输入10个数:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序后:
\n");
for(i=0;i<10;i++)
for(j=0;j<4;j++)
printf("%d",a[i][j]);
}
(24)完善下列程序,将一个数组中的数据奇数放在前面,偶数放在后面。
#include
#defineN10
voidmain()
{
inti,left,right,a[N],b[N];
printf("处理前的数组:
");
for(i=0;iscanf("%d",&a[i]);
}
left=0;right=N-1;
for(i=0;i{
if(a[i]%2!
=0)
b[left++]=a[i];
else
b[right--]=a[i];
}
printf("\n处理后的数组:
");
for(i=0;iprintf("%d",b[i]);
printf("\n");
}
编程题
选择程序设计1-2题
(1)编写程序,从键盘输入三个数,输出其中最大的数。
(2)编写程序,要求从键盘输入x的值,然后输出y的结果。
x值
y值
x<6
3x+5
6≤x<20
2x-1
x≥20
(3)又如,商场促销打折,教材p72例4.11,个人所得税计算等。
(4)从键盘输入一个百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。
成绩与等级的对照情况如下表:
成绩
等级
90分以上
A
80~89
B
70~79
C
60~69
D
60分以下
E
循环程序设计1题
(5)用循环结构编程,计算1-1/2+1/3-1/4+1/5。
(6)2013年