江苏大学大一c语言期末复习题汇总.docx
《江苏大学大一c语言期末复习题汇总.docx》由会员分享,可在线阅读,更多相关《江苏大学大一c语言期末复习题汇总.docx(51页珍藏版)》请在冰豆网上搜索。
江苏大学大一c语言期末复习题汇总
选择题
1.下列字符序列中,不可用作C语言标识符的是()。
A.abc123B.no.1C._123_D._ok
2.请选出可用作C语言用户标识符的一组标识符()。
A.voidB.a3_b3C.ForD.2a
define_123-abcDO
WORDIFCasesizeof
3.不属于C语言关键字的是()。
A.intB.breakC.whileD.character
4.以下不能定义为用户标示符的是()。
A.scanfB.VoidC._3com_D.int
5.C语言程序的基本单位是()。
A.程序行B.语句C.函数D.字符
6.以下说法中正确的是()。
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
7.以下选项中,合法的用户标识符是()。
A.longB._2abcC.3dmaxD.A.dat
8.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量’\101’是()。
A.字符AB.字符aC.字符cD.非法的常量
9.以下选项中,正确的字符常量是()。
A.”F”B.’\\’’C.’W’D.’’
10.下列变量定义中合法的是
A.short_a=1-.le-1;B.doubleb=1+5e2.5;
C.longdo=0xfdaL;D.float2_and=1-e-3;
11.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。
A.缩排位置相同的if
B.在其之前未配对的if
C.在其之前未配对的最近的if
D.同一行上的if
12.下列运算符中优先级最高的是()。
A.
=
13.判断char型变量s是否为小写字母的正确表达式是()。
A.’a’<=s<=’z’B.(s>=’a’)&(s<=’z’)
C.(s>=’a’)&&(s<=’z’)D.(’a’<=s)and(’z’>=s)
14.已知x=45,y=’a’,z=0;则表达式(x>=z&&y<’z’||!
y)的值是()。
A.0B.语法错
C.1D.“假”
15.有一函数:
,以下程序段中不能根据x值正确计算出y值的是()。
A.if(x>0)y=1;
elseif(x==0)y=0;
elsey=-1;
B.y=0;
if(x>0)y=1;
elseif(x<0)y=-1;
C.y=0;
if(x>=0)
if(x>0)y=1;
elsey=-1;
D.if(x>=0)
if(x>0)y=1;
elsey=0;
elsey=-1;
16.已知inta=1,b=2,c=3;以下语句执行后a,b,c的值是()。
if(a>b)
c=a;a=b;b=c;
A.a=1,b=2,c=3B.a=2,b=3,c=3
C.a=2,b=3,c=1D.a=2,b=3,c=2
17.以下程序的运行结果是()。
#include”stdio.h”
main()
{inta=1;
if(a++>1)printf(”%d\n”,a);
elseprintf(”%d\n”,a--);
}
A.0B.1C.2D.3
18.执行以下程序段后,变量x,y,z的值分别为()。
inta=1,b=0,x,y,z;
x=(--a==b++)?
--a:
++b;
y=a++;
z=b;
A.x=0,y=0,z=0B.x=-1,y=-1,z=1
C.x=0,y=1,z=0D.x=-1,y=2,z=1
19.以下程序的输出结果是()。
#include”stdio.h”
main()
{
inta=5,b=4,c=6,d;
printf(”%d\n”,d=a>b?
a>c?
a:
c:
b);
}
A.5B.4C.6D.不确定
20.执行下列程序,输入为3的数出结果是()。
#include”stdio.h”
main()
{
intk;
scanf(”%d”,&k);
switch(k)
{case1:
printf(”%d\n”,k++);
case2:
printf(”%d\n”,k++);
case3:
printf(”%d\n”,k++);
case4:
printf(”%d\n”,k++);
break;
default:
printf(”Full!
\n”);
}
}
A.3B.4C.3D.4
54
21.有如下程序,写出该执行结果()。
#include”stdio.h”
main()
{
floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf(”%f\n”,y);
}
A.0.000000B.0.250000C.0.500000D.1.000000
22.运行以下程序后,如从键盘上输入china#,则输出为()。
#include”stdio.h”
main()
{
intv1=0,v2=0;
charch;
while((ch=getchar())!
=’#’)
switch(ch)
{case’a’:
case’h’:
default:
v1++;
case’o’:
v2++;
}
printf(”%d,%d\n”,v1,v2);
}
A.2,0B.5,0C.5,5D.2,5
23.有以下程序,程序运行后的输出结果是()。
#include”stdio.h”
main()
{
inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;
}
}
printf(”%d\n”,m);
}
A.1B.2C.3D.4
24.在下列选项中,没有构成死循环的程序段是()。
A.inti=100;
while
(1)
{
i=i%100+1;
if(i>100)break;
}
B.for(;;);
C.intk=1000;
do{++k;}while(k>=10000);
D.ints=36;
while(s);
--s;
25.下面程序的运行结果为()。
main()
{intn;
for(n=1;n<=10;n++)
{if(n%3==0)continue;
printf("%d",n);
}
}
A.12457810B.369C.12D.12345678910
26.在以下给出的表达式中,与do-while(E)语句中的(E)不等价的表达式是()。
A.(!
E==0)B.(E>0||E<0)C.(E==0)D.(E!
=0)
27.下列程序的输出是()。
#include
main()
{inti;charc;
for(i=0;i<=5;i++)
{c=getchar();putchar(c);
}
}
程序执行时从第一列开始输入以下数据,代表换行符。
u
w
xsta
A.uwxstaB.uC.uD.u
www
xxsxsta
28.在C语言中,为了结束while语句构成的循环,while后一对圆括号中表达式的值应该为()。
A.0B.1C.trueD.非0
29.在C语言中,为了结束由do-while语句构成的循环,while后一对圆括号中表达式的值应为()。
A.0B.1C.trueD.非0
30.下列程序的输出为()。
#include
main()
{inti=0,j=0,a=6;
if((++i>0)||(++j>0))a++;
printf("i=%d,j=%d,a=%d\n",i,j,a);
}
A.i=0,j=0,a=6B.i=1,j=1,a=7C.i=1,j=0,a=7D.i=0,j=1,a=7
31.下列程序段的输出结果为()。
main()
{intx=3;
do
{printf("%3d",x-=2);}
while(!
(--x));}
A.1B.30C.1-2D.死循环
32.以下程序运行后,输出结果是()。
main()
{
intn[5]={0,0,0},i,k=2;
for(i=0;iprintf("%d\n",n[k]);
}
A.不确定的值B.2C.1D.0
33.以下程序运行后,输出结果是()。
main()
{
inta[10],a1[]={1,3,6,9,10},a2[]={2,4,7,8,15},i=0,j=0,k;
for(k=0;k<4;k++)
if(a1[i]elsea[k]=a2[j++];
for(k=0;k<4;k++)printf("%d",a[k]);
}
A.1234B.1324C.2413D.4321
34.以下程序运行后输出结果是()。
main()
{
intn[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;
k=2;
for(i=0;ifor(j=0;jn[j]=n[i]+1;
printf("%d\n",n[1]);}
A.2B.1C.0D.3
35.若有以下的定义:
intt[5][4];能正确引用t数组的表达式是()。
A.t[2][4]B.t[5][0]C.t[0][0]D.t[0,0]
36.下述对C语言字符数组的描述中错误的是()。
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
37.下述对C语言字符数组的描述中正确的是()。
A.任何一维数组的名称都是该数组存储单元的开始地址,且其每个元素按照顺序连续占存储空间
B.一维数组的元素在引用时其下标大小没有限制
C.任何一个一维数组的元素,可以根据内存的情况按照其先后顺序以连续或非连续的方式占用存储空间
D.一维数组的第一个元素是其下标为1的元素
38.下列语句中,不正确的是()。
A.staticchara[2]={1,2};B.staticchara[2]={'1','2'};
C.staticchara[2]={'1','2','3'};D.staticchara[2]={'1'};
39.设有staticcharstr[]="Beijing";
则执行printf("%d\n",strlen(strcpy(str,"China")));
后的输出结果为()。
A.5B.7C.12D.14
40.以下说法中正确的是()。
A.C语言程序总是从第一个的函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
41.一个函数返回值的类型是由()决定的。
A.return语句中表达式的类型
B.在调用函数时临时指定
C.定义函数时指定的函数类型
D.调用该函数的主调函数的类型
42.在C语言中,形参的缺省存储类是()。
A.autoB.registerC.staticD.extern
43.24.有如下函数调用语句
func(rec1,rec2+rec3,(rec4,rec5));
该函数调用语句中,含有的实参个数是()。
A.3B.4C.5D.有语法错
44.以下函数值的类型是()。
fun(floatx)
{
floaty;
y=3*x-4;
returny;
}
A.intB.不确定C.voidD.float
45.以下程序的输出结果是()。
f(intb[],intm,intn)
{
inti,s=0;
for(i=m;ireturns;
}
main()
{
intx,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
}
A.10B.18C.8D.15
46.若定义:
inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为:
A.无确定值B.a的地址C.512D.511
47.变量的指针,其含义是指该变量的()。
A.值B.地址C.名D.一个标志
48.若已定义inta=5;下面对
(1)、
(2)两个语句的正确解释是()。
(1)int*p=&a;
(2)*p=a;
A.语句
(1)和
(2)中的*p含义相同,都表示给指针变量p赋值。
B.
(1)和
(2)语句的执行结果,都是把变量a的地址值赋给指针变量p。
C.
(1)在对p进行说明的同时进行初始化,使p指向a;
(2)变量a的值赋给指针变量p。
D.
(1)在对p进行说明的同时进行初始化,使p指向a;
(2)将变量a的值赋予*p。
49.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()。
#include
main()
{
int*p,*q,a,b;
p=&a;
printf("inputa:
");
scanf("%d",*p);
…
}
A.*p表示的是指针变量p的地址
B.*p表示的是变量a的值,而不是变量a的地址
C.*p表示的是指针变量p的值
D.*p只能用来说明p是一个指针变量
50.以下不能正确进行字符串赋初值的语句是()。
A.charstr[5]="good!
";
B.char*str="good!
";
C.charstr[]="good!
";
D.charstr[5]={'g','o','o','d'};
51.若有说明语句:
chars[]="itisaexample.",*t="itisaexample.";则以下不正确的叙述()。
A.s表示的是第一个字符i的地址,s+1表示的是第二个字符t的地址
B.t指向另外的字符串时,字符串的长度不受限制
C.t变量中存放的地址值可以改变
D.s中只能存放16个字符
52.下列程序的输出结果是()。
#include"stdio.h"
main()
{
inta[]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%d\n",*p+9);
}
A.0B.1C.10D.9
53.以下不是C语言的特点的是()。
A.语言简洁紧凑
B.能够编制出功能复杂的程序
C.C语言可以直接对硬件操作
D.C语言移植性好
54.正确的C语言标识符是()。
A._buy_2B.2_buyC.?
_buyD.buy?
55.下列符号中,不属于转义字符的是()。
A.\\B.\0xAAC.\tD.\0
56.是C语言提供的合法关键字的是()。
A.FloatB.signedC.integerD.Char
57.一个C程序是由()。
A.一个主程序和若干子程序组成
E.一个或多个函数组成
B.若干过程组成
C.若干子程序组成
58.下列说法中,错误的是()。
A.每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号
B.每个函数都有一个函数头和一个函数体,主函数也不例外
C.主函数只能调用用户函数或系统函数,用户函数可以相互调用
D.程序是由若干个函数组成的,但是必须有、而且只能有一个主函数
59.C编译程序是()。
A.C程序的机器语言版本
B.一组机器语言指令
C.将C源程序编译成目标程序
D.由制造厂家提供的一套应用软件
60.以下选项中,合法的实型常数是()。
A.5E2.0B.E-3C.2E0D.1.3E
61.以下选项中,合法转义字符的选项是()。
A.’\\’B.’\018’C.’xab’D.’\abc’
62.以下选项中可作为C语言合法整数的是
A.10110BB.0386C.0XffaD.x2a2
63.与数学式子
对应的C语言表达式是()。
A.9*x^n/(2*x-1)B.9*x**n/(2*x-1)
C.9*pow(x,n)*(1/(2*x-1))D.9*pow(n,x)/(2*x-1)
64.设a=5,b=6,c=7,d=8,m=2,n=2,则执行(m=a>b)&&(n=c>d)后n的值为()。
A.1B.2C.3D.4
65.逻辑运算符两侧运算对象的数据类型()。
A.只能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
66.能正确表示“当x的取值在[-58,-40]和[40,58]范围内为真,否则为假”的表达式是()。
A.(x>=-58)&&(x<=-40)&&(x>=40)&&(x<=58)
B.(x>=-58)||(x<=-40)||(x>=40)||(x<=58)
C.(x>=-58)&&(x<=-40)||(x>=40)&&(x<=58)
D.(x>=-58)||(x<=-40)&&(x>=40)||(x<=58)
67.若希望当x的值为奇数时,表达式的值为“真”,x的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是()。
A.x%2==1B.!
(x%2==0)
C.!
(x%2)D.x%2
68.指出下列程序段所表示的逻辑关系是()。
if(a
{if(c==d)
x=10;
}
else
x=-10;
A.
B.
C.
D.
69.请阅读以下程序:
该程序()。
#include”stdio.h”
main()
{intx=-10,y=5,z=0;
if(x=y+z)printf(”***\n”);
elseprintf(”$$$\n”);
}
A.有语法错不能通过编译
B.可以通过编译但不能通过连接
C.输出***
D.输出$$$
70.当a=1,b=2,c=4,d=3时,执行完下面一段程序后x的值是()。
if(a
if(celse
if(aif(belsex=3;
elsex=4;
elsex=5;
A.1B.2C.3D.4
71.若a、b、c、d、w均为int类型变量,则执行下面语句后的w值是()。
a=1;b=2;c=3;d=4;
w=(a
a:
b;
w=(ww:
c;
w=(ww:
d;
A.1B.2C.3D.4
72.若a、b、c1、c2、x、y均为整型变量,正确的switch语句是()。
A.switch(a+b);B.switcha
{case1:
y=a+b;break;{casec1:
y=a-b;break;
case0:
y=a-b;casec2:
x=a*d;break;
break;default:
x=a+b;
}}
C.switch(a*a+b*b)D.switch(a-b)
{case3:
{default:
y=a*b;break;
case1:
y=a+b;break;case3:
x=a+b;break;
case3:
y=b-a;break;case10:
case11:
y=a-b;break;
}}
73.以下程序的运行结果是()。
#include”stdio.h”
main()
{
inta=2,b=-1,c=2;
if(a
if(b<0)
c=0;
elsec++;
printf(”%d\n”,c);
}
A.0B.1C.2D.3
74.有以下程序,若输入为字符s,则程序运行结果为()。
#include”stdio.h”
main()
{
charch;
ch=getchar();
switch(ch)
{case’a’:
printf(”a=%c\n”,ch);
default:
printf(”end!
\n”);
case’b’:
printf(”b=%c\n”,ch);
case’c’:
printf(”c=%c\n”,ch);
}
}
A.end!
B.end!
C.有语法错误D.a=s
b=send!
c=s
75.当执行以下程序段时。
x=-1;
do
{x=x*x;}
while(!
x);
A.循环体将执行一次 B.循环体将执行两次
C.循环体将执行无数多次 D.系统将提示有语法错误
76.列程序运行的情况是()。
main()
{inti=1,sum=0;
while(i<10)sum=sum+1;i++;
printf("i=%d,sum=%d",i,sum);
}
A.i=10,sum=9B.i=9,sum=9C.i=2,sum=1D.运行出现错误
77.标有/**/的语句的执