C语言程序设计学习资料及答案.docx
《C语言程序设计学习资料及答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计学习资料及答案.docx(32页珍藏版)》请在冰豆网上搜索。
C语言程序设计学习资料及答案
重庆科技学院20___/20__学年第学期
试卷参考答案及评分标准(卷)
课程名称:
C语言程序设计选课课号:
适用专业/年级:
抽(命)题人:
考试方式:
卷面总分:
分
试卷编号:
[7FCA4DA8(2015-04-20)]
本卷共100题,卷面100分题源:
陈应祖组卷:
陈应祖
一、单选题(共100题,100分)
1.1[库中题号:
01010005]1分
设计一个计算机程序最基本的工作是:
( )
A.制定正确的算法 B.选择合理的数据结构
C.制定正确的算法和选择合理的数据结构 D.以上都不是
答案:
C
1.2[库中题号:
01010012]1分
下列各项中,不是C语言的特点是:
( )
A.语言简洁、紧凑,使用方便B.程序执行效率高,可移植性好
C.能实现汇编语言的大多数功能D.有较强的网络操作功能
答案:
D
1.3[库中题号:
01010014]1分
C语言规定:
在一个C源程序中,main()函数的位置()。
A.必须在所有函数的最开始B.必须在系统调用的库函数的后面
C.可以任意D.必须在所有函数的最后
答案:
C
1.4[库中题号:
01010016]1分
构成C语言源程序的基本单位是:
( )
A.子程序 B.过程
C.文本 D.函数
答案:
D
1.5[库中题号:
01010022]1分
某C程序由一个主函数main()和一个自定义函数max()组成,则该程序:
( )
A.写在前面的函数先开始执行B.总是从main()函数开始执行
C.总是从max()函数开始执行D.写在后面的函数先开始执行
答案:
B
1.6[库中题号:
01010023]1分
C语言规定,一个C源程序的主函数名必须为:
( )
A.main B.function
C.program D.include
答案:
A
1.7[库中题号:
01010026]1分
下列说法正确的是:
( )
A.无论注释内容的多少,在对程序编译时都被忽略
B.C程序每行只能写一个语句
C.在书写C语言源程序时,每个语句以逗号结束
D.注释时,‘/’和‘*’号间可以有空格
答案:
A
1.8[库中题号:
01010034]1分
C程序中的复合语句指的是:
( )
A.并列的多个C语句 B.写在同一行中的多个C语句
C.用一对大括号对括的多个C语句 D.就是函数体中的语句
答案:
C
1.9[库中题号:
01010039]1分
C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符:
( )
A.必须为字母 B.必须为下划线
C.必须为字母或下划线 D.可以是字母、数字和下划线中的任意一种
答案:
C
1.10[库中题号:
01010042]1分
下列选项中,是C语言提供的合法的关键字的是()
A.swicthB.Cher
C.defaultD.Case
答案:
C
1.11[库中题号:
01010047]1分
程序设计中所谓数据类型是指:
( )
A.数据的内容B.数据的描述方法
C.数据的处理方法D.数据用于哪些方面
答案:
B
1.12[库中题号:
01010049]1分
在C语言中把最常用的一些数据类型,如int、double,char等称作:
( )
A.常用类型B.数值类型
C.字符类型D.基本类型
答案:
D
1.13[库中题号:
01010052]1分
程序中所谓的常量是指:
( )
A.大小不变的量B.在程序运行中不能被改变的量
C.形式不变的量D.在程序设计中不能被改变的量
答案:
B
1.14[库中题号:
01010054]1分
C语言中的常量有整型常量、实型常量、字符常量以及:
( )
A.数值常量B.非数值常量
C.字符串常量D.一般常量
答案:
C
1.15[库中题号:
01010059]1分
下列不合法的八进制数是()。
A.0345B.0456
C.0567D.0678
答案:
D
1.16[库中题号:
01010061]1分
下列4组C语言的常量表示都不正确的是:
( )
A.096和435LB.48EA和0368
C.256和OxKD.E-7和'\101'
答案:
B
1.17[库中题号:
01010069]1分
C语言中,在使用一个变量前,需要做的第一件事是:
( )
A.给变量赋初值B.初始化变量
C.声明变量D.知道变量的值
答案:
C
1.18[库中题号:
01010075]1分
若有定义:
charc=’\077’;则变量c中包含的字符个数为:
( )
A.0 B.1
C.3D.4
答案:
B
1.19[库中题号:
01010080]1分
在C语言中,若声明了一个变量但没对其赋值,则该:
( )
A.没有值B.值为0
C.值为任意数D.值不确定
答案:
D
1.20[库中题号:
01010085]1分
在C语言中,1个short型变量占用的内存空间是:
( )
A.1个字节B.2个字节
C.4个字节D.8个字节
答案:
B
1.21[库中题号:
01010092]1分
若有代数式3ae/bc,则不正确的C语言表达式是:
()。
A.a/b/c*e*3 B.3*a*e/b/c
C.3*a*e/b*c D.a*e/c/b*3
答案:
C
1.22[库中题号:
01010095]1分
关于算术运算符“%”的功能,下面描述正确的是:
( )
A.此运算是求某一整数对另一整数的百分比
B.此运算是求某一整数被另一整数相除时的整数商
C.此运算是求某一整数被另一整数相除时的余数
D.以上都不正确
答案:
C
1.23[库中题号:
01010098]1分
已知x=43,ch=’A’,y=0;则表达式x>=y&&ch<’B’&&!
y的值是:
( )
A.0 B.语法错
C.1 D.“假”
答案:
C
1.24[库中题号:
01010100]1分
设x=2,y=3,z=4,则表达式(x+y>z)&&(y==z)&&x||y+z&&y+z的值为:
( )
A.逻辑假 B.逻辑真
C.0 D.1
答案:
D
1.25[库中题号:
01010102]1分
语句printf(“%d”,(a=2)&&(b=-2));的输出结果是:
( )
A.无输出 B.结果不确定
C.-1 D.1
答案:
D
1.26[库中题号:
01010104]1分
能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假"的表达式是:
( )
A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B.(x>=1)||(x<=10)||(x>=200)||(x<=210)
C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)
答案:
C
1.27[库中题号:
01010106]1分
在C语言中,表达式:
10!
=9的值是:
( )
A.True B.非零值
C.0 D.1
答案:
D
1.28[库中题号:
01010108]1分
设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是:
( )
A.‘x’&&‘y’B.x<=y
C.x||y+z D.!
(x)
答案:
D
1.29[库中题号:
01010111]1分
设a=3,b=4,c=5,d=6,则表达式:
a>b?
c:
d的值为:
( )
A.3 B.4
C.5 D.6
答案:
D
1.30[库中题号:
01010113]1分
假定有以下变量定义intk=7,x=12;下列其值为3的表达式是:
( )
A.x%=(k%=5) B.x%=(k-k%5)
C.x%=k-k%5 D.(x%=k)-(k%=5)
答案:
D
1.31[库中题号:
01010114]1分
执行语句“inta=12;a+=a*a;”后的值是:
( )
A.156 B.288
C.164 D.186
答案:
A
1.32[库中题号:
01010116]1分
下面为C语言中正确表达式的是:
( )
A.a+b=5 B.56=a++
C.i=i++ D.5.6+6.2%3.1
答案:
C
1.33[库中题号:
01010118]1分
下列合法的语句是:
( )
A.a=1,b=2 B.++a;
C.a=a+1=5 D.y=int(a);
答案:
B
1.34[库中题号:
01010120]1分
设变量t为int型,下列选项中不正确的赋值语句是:
( )
A.++t;B.n1=(n2=(n3=0));
C.k=i==m;D.a=b+c=1;
答案:
D
1.35[库中题号:
01010122]1分
设x为int型变量,则执行以下语句x=10;x=x+--x;后,x的值为:
( )
A.10 B.20
C.18 D.19
答案:
C
1.36[库中题号:
01010125]1分
执行表达式a=3*5,a+15后,变量a的值为:
( )
A.60 B.30
C.15 D.90
答案:
C
1.37[库中题号:
01010128]1分
设有inti,j,k;则表达式(i=1,j=2,k=3,i&&j&&k)的值为:
( )
A.1 B.2
C.3 D.0
答案:
A
1.38[库中题号:
01010130]1分
下面运算级别最低的运算符是:
( )
A.赋值运算符 B.关系运算符
C.算术运算符 D.逗号运算符
答案:
D
1.39[库中题号:
01010132]1分
设一表达式中有int、long、char等类型的数据,则表达式值的类型数据是:
( )
A.int B.char
C.long D.double
答案:
C
1.40[库中题号:
01010134]1分
设一表达式中有int、float、char等类型的数据,则表达式值的类型数据是:
( )
A.int B.char
C.float D.double
答案:
D
1.41[库中题号:
01010137]1分
getchar函数的作用是从终端(键盘)输入一个:
( )
A.整型变量表达式值B.实型变量值
C.字符串D.字符
答案:
D
1.42[库中题号:
01010139]1分
若已定义inta=256;,执行语句printf(“%x”,a);的结果是()。
A.100B.256
C.ffeD.ff
答案:
A
1.43[库中题号:
01010142]1分
如果有fIoata=57.666;则语句printf(“*%010.2f*\n”,a)执行后的输出结果为
A.*0000057.66*B.*57.66*
C.*0000057.67*D.*57.57*
答案:
C
1.44[库中题号:
01010144]1分
若有定义inta=2,b=5;则printf(“a=%%d,b=%%d\n”a,b);执行后其输出结果是()。
A.a=%2,b=%5B.a=2,b=5
C.a=%%d,b=%%dD.a=%d,b=%d
答案:
D
1.45[库中题号:
01010146]1分
若变量已正确定义,以下程序段:
x=5.16894;
printf(“%f\n”,(int)(x*1000+0.5)/(float)1000);
的输出结果是()。
A.输出格式说明与输出项不匹配,输出无定值
B.5.170000
C.5.168000
D.5.169000
答案:
D
1.46[库中题号:
01010147]1分
设有定义:
int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
A.scanf(“%d”,pA)B.scanf(“%d”,A)
C.scanf(“%d”,&pA)D.scanf(“%d”,*pA)
答案:
Z
1.47[库中题号:
01010149]1分
若a,b均为int型变量,x,y均为float型变量,正确的输入函数调用是
A.scanf("%d%f",&a,&b);B.scanf("%d%f",&a,&x);
C.scanf("%d%d",a,b);D.scanf("%f%f",x,y);
答案:
B
1.48[库中题号:
01010151]1分
根据定义和数据的输入方式,输入语句的正确形式为()。
已有定义:
floatf1,f2;
数据的输入方式:
4.52
3.5
A.scanf(“%f,%f”,&f1,&f2);B.scanf(“%f%f”,&f1,&f2);
C.scanf(“%3.2f%2.1f”,&f1,&f2);D.scanf(“%3.2f,%2.1f”,&f1,&f2);
答案:
B
1.49[库中题号:
01010153]1分
若有说明:
doublea;则正确的输入语句为:
( )
A.scanf(“%lf”,a);B.scanf(“%f”,&a)
C.scanf(“%lf”,&a)D.scanf(“%1e”,&a)
答案:
D
1.50[库中题号:
01010155]1分
若下列变量均已正确定义,则正确的赋值语句是()。
A.a=1+2=3;B.1+2=b;
C.c=5.5/3;D.d=5.5%3;
答案:
C
1.51[库中题号:
01010158]1分
为表示关系:
x≥y≥z,应使用的C语言表达式是:
( )
A.(x>=y)&&(y>=z)B.(x>=y)AND(y>=z)
C.(x>=y>=z)D.(x>=y)&(y>=z)
答案:
A
1.52[库中题号:
01010160]1分
为了避免在嵌套的条件语句if…else中产生二义性,C语言规定:
else字句总是与()配对。
:
( )
A.缩排位置相同的ifB.其之前最近的if
C.其之后最近的ifD.同一行上的if
答案:
C
1.53[库中题号:
01010162]1分
以下关于if语句的错误描述是:
( )
A.条件表达式可以是任意的表达式
B.条件表达式只能是关系表达式或逻辑表达式
C.条件表达式的括号不可以省略
D.与else配对的if语句是其之前最近的未配对的if语句
答案:
B
1.54[库中题号:
01010164]1分
下列错误的语句是:
( )
A.if(a>b)printf(“%d”,a);B.if(&&);a=m;
C.if
(1)a=m;elsea=n;D.if(a>0);{elsea=n;}
答案:
B
1.55[库中题号:
01010166]1分
if 语句的语法格式可描述为
格式1:
if(<条件>)<语句>
或
格式2:
if(<条件>)<语句1>else<语句2>
关于上面的语法格式,下列表述中错误的是
A)、<条件>部分可以是一个if 语句,例如if(if(a =0)?
)?
B)、<条件>部分可以是一个if 语句,例如if(?
)if(?
)?
C)、如果在<条件>前加上逻辑非运算符!
并交换<语句1>和<语句2>的位置,语句功能不变
D)、<语句>部分可以是一个循环语句,例如if(?
)while(?
)?
答案:
D
1.56[库中题号:
01010167]1分
设变量x、y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是:
()
A.if(x++);B.if(x>y&&y!
=0);
C.if(x>y)x--D.if(y<0){;}
elsey++;elsex++;
答案:
C
1.57[库中题号:
01010169]1分
运行以下程度段后变量x的值是:
( )
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
A.34B.4
C.35D.3
答案:
B
1.58[库中题号:
01010171]1分
设a=1,b=2,c=3,d=4,则表达式:
a
a:
C的值是:
( )
A.4B.3
C.2D.1
答案:
D
1.59[库中题号:
01010173]1分
下列关于switch语句和break语句的结论中,正确的是:
( )
A.break语句是switch语句中的一部分
B.在switch语句中可以根据需要使用或不使用break语句
C.在switch语句中必须使用break语句
D.break语句只能用于switch语句中
答案:
B
1.60[库中题号:
01010175]1分
若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是
A.swich(a+b);
{case1:
y=a+b;break;
case0:
y=a-b;break;
}case3:
y=b-a,break;
B.switch(a*a+b*b)
{case3:
case1:
y=a+b;break;
}
C.switcha
{casec1:
y=a-b;break
casec2:
x=a*d;break
default:
x=a+b;}
D.switch(a-b)
{default:
y=a*b;break
case3:
case4:
x=a+b;break
case10:
case11:
y=a-b;break;
}
答案:
D
1.61[库中题号:
01010179]1分
以下关于循环体的描述中,错误的是:
( )。
A.循环体中可以出现break语句B.循环体中可以出现continue语句
C.循环体中不能出现switch语句D.循环体中还可以出现循环语句
答案:
C
1.62[库中题号:
01010182]1分
有以下程序段:
intk=0;
while(k=1)k++;
while循环执行的次数是:
( )。
A.无限次B.有语法错,不能执行
C.一次也不执行D.执行一次
答案:
A
1.63[库中题号:
01010185]1分
以下叙述正确的是:
( )。
A.do...while语句构成的循环不能用其他语句构成的循环代替
B.只有do...while语句构成的循环能用break语句退出
C.用do...while语句构成循环时,在while后的表达式为零时不一定结束循环
D.用do...while语句构成循环时,在while后的表达式为零时结束循环
答案:
D
1.64[库中题号:
01010189]1分
有以下程序段:
intx=-1;
do
{
x=x*x;
}while(!
x);
则以下说法正确的是:
( )。
A.是无限循环B.循环执行两次
C.循环执行一次D.循环条件不合法
答案:
C
1.65[库中题号:
01010192]1分
以下循环体的执行次数是:
( )。
main()
{
inti,j;
for(i=0,j=1;i<=j+1;i++,j--)
printf("%d\n",i);
}
A.3B.2
C.1D.0
答案:
B
1.66[库中题号:
01010193]1分
以下for语句运行时循环次数是:
( )。
for(i=0,j=0;(j!
=10)&&(i<5);i++);
A.无限次B.4次
C.5次D.6次
答案:
C
1.67[库中题号:
01010196]1分
以下程序段的输出结果是:
( )。
main()
{
inti,j,m=0;
for(i=1;i<=15;i+=4)//5,9,13
for(j=3;j<=19;j+=4)//7,11,15,19
m++;
printf("%d\n",m);
}
A.12B.15
C.20D.25
答案:
C
1.68[库中题号:
01010201]1分
以下关于C语言中几种循环的描述,错误的是:
( )。
A.while和for是先判断表达式,后执行语句;而do...while是先执行语句,后判断表达式
B.do...while的循环体至少执行一次,而while的循环体可能一次都不会执行
C.对于while、do...while和for循环,都可以用continue语句跳出当次循环
D.for循环只能用于循环次数已经确定的情况,而while和do...while没有这种限制
答案:
D
1.69[库中题号:
01010203]1分
以下描述中,错误的是:
( )。
A.break语句和continue语句的作用是一样的
B.break语句可用于for循环
C.break语句可用于while循环
D.在循环体中使用break语句可以跳出循环体,提前结束循环
答案:
A
1.70[库中题号:
01010207]1分
为了得到问题的解,把它推到比原问题简单的问题求解。
这种方法称为:
( )。
A.递归法B.穷举法
C.迭代法D.归纳法
答案:
A
1.71[库中题号:
01010211]1分
以下关于数组的描述中,错误的是:
( )。
A.对于同一个数组,其所有元素的数据类型都是相同的
B.数组的类型实际上是指数组元素的取值类型
C.有定义:
inta[3];则定义了a[1]、a[2]、a[3]三个数组元素
D.inta[10];说明整型数组a,有10个元素
答案:
C
1.72[库中题号:
01010214]1分
以下关于数组的描述中,错误的是:
( )。
A.如果定义数组的长度为n,那么引用数组元素的下标最多到n-1
B.C语言规定,数组下标的最小值是1,最大值为数组的大小减1
C.数组元素可以像普通变量一样使用
D.引用数组元素一定要使用下标运算符[],不能使用圆括号()
答案:
B
1.73[库中题号:
01010217]1分
以下关于数组初始化赋值的描述中,错误的是:
( )。
A.可以给元素逐个赋值,也可以给数组整体赋值
B.数组初始化赋值是指在数组定义时给数组元素赋予初值
C.在给数组元素赋值时,可以只给部分元素赋初值
D.如给全部元素赋