C语言常见考试题型.docx

上传人:b****4 文档编号:4993790 上传时间:2022-12-12 格式:DOCX 页数:18 大小:27.42KB
下载 相关 举报
C语言常见考试题型.docx_第1页
第1页 / 共18页
C语言常见考试题型.docx_第2页
第2页 / 共18页
C语言常见考试题型.docx_第3页
第3页 / 共18页
C语言常见考试题型.docx_第4页
第4页 / 共18页
C语言常见考试题型.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言常见考试题型.docx

《C语言常见考试题型.docx》由会员分享,可在线阅读,更多相关《C语言常见考试题型.docx(18页珍藏版)》请在冰豆网上搜索。

C语言常见考试题型.docx

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;i

scanf("%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;i

printf("%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年

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1