C语言期末复习资料 1 1.docx
《C语言期末复习资料 1 1.docx》由会员分享,可在线阅读,更多相关《C语言期末复习资料 1 1.docx(30页珍藏版)》请在冰豆网上搜索。
C语言期末复习资料11
领红包:
支付宝首页搜索“563940583
”即可领取支付宝红包哟
领下面余额宝红包才是大红包,一般都是5-10元支付的时候把支付方式转为余额宝就行呢没钱往里冲点每天都可以领取哟!
单项选择题
1.char*p[10];该语句声明了一个:
C。
A)指向含有10个元素的一维字符型数组的指针变量p
B)指向长度不超过10的字符串的指针变量p
C)有10个元素的指针数组p,每个元素可以指向一个字符串
D)有10个元素的指针数组p,每个元素存放一个字符串
2.在while(!
x)语句中的x与下面条件表达式等价的是:
D。
A)x!
=0B)x==1C)x!
=1D)x==0
3.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为:
C。
A)*(a+j*n+i)B)*(a+i*n+j)
C)*(*(a+i)+j)D)*(*a+i)+j
4union
{
doublek;
charc;
floata;
}test;
则sizeof(test)的值是:
A。
A)8B)1C)4D)13
5、下面程序的输出是____D_____
#include
void main()
{
int k=11;
printf("k=%d,k=%o,k=%x\n",k,k,k);(%o为8进制输出,%x为16进制输出)
}
A) k=11,k=12,k=11 B) k=11,k=13,k=13
C) k=11,k=013,k=0xb D) k=11,k=13,k=B
6、在下列选项中,不正确的赋值语句是____D____.
(在变量说明中,不允许连续给多个变量赋初值,而赋值语句允许连续赋值。
如下述说明是错误的:
)
A) ++t; B) n1=(n2=(n3=0));
C) k=i=j; D) a=b+c=1;
7、下面合法的C语言字符常量是_____A_____.
A) '\t' B) "A" C) 65 D) A
8、表达式:
10!
=9的值是______D_____.
A) true B)非零值
C) 0 D) 1
9、C语言提供的合法的数据类型关键字是
_____B___.
A) Double(应该为double)
B) short
C) integer(应该为int)
D) Char(应该为char)
10、字符(char)型数据在微机内存中的存储形式是__D__.
A) 反码 B) 补码
C) EBCDIC码 D) ASCII码
11、C语言程序的基本单位是_____C______.
A) 程序行 B) 语句 C) 函数 D) 字符
12、设 int a=12,则执行完语句a+=a-=a*a后,a的值是
_____D__
A) 552 B) 264 C) 144 D) -264
13、执行下面程序中的输出语句后,输出结果是
__B____.
#include
void main()
{int a; printf("%d\n",(a=3*5,a*4,a+5)); }
A) 65 B) 20 C) 15 D) 10
14、下面程序的输出是__B________.
#include
void main()
{int x=023;(八进制)
printf("%d\n",--x); }
A) 17 B) 18 C) 23 D) 24
15下面程序的输出的是___C______.
#include
void main()
{int x=10,y=3;
printf("%d\n",y=x/y);
}
A) 0 B) 1 C) 3 D) 不确定的值
16、已知字母A的ASCII码为十进制的65,下面程序的输出是_______A____.
#include
void main()
{char ch1,ch2;
ch1='A'+'5'-'3';
ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
}
A) 67,D B) B,C C) C,D D) 不确定的值
17、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为_D_____.
A) a<>0 B) !
a C) a=0 D) a
18、以下程序的输出结果是__D______.
#include
void main()
{ int x=10,y=10;
printf("%d %d\n",x--,--y); }
A) 10 10 B) 9 9 C) 9 10 D) 10 9
19、设有如下定义:
int x=10,y=3,z;
则语句printf("%d\n",z=(x%y,x/y)); 的输出结果是_D_______.
A) 1 B) 0 C) 4 D) 3
20、为表示关系x≥y≥z,应使用C语言表达式
____A__.
A) (x>=y)&&(y>=z) B) (x>=y)AND(y>=z)
C) (x>=y>=z) D) (x>=y) & (y>=z)
21、C语言中非空的基本数据类型包括__B______.(基本数据类型有整型,字符型,浮点型,枚举类型)
A) 整型,实型,逻辑型 B) 整型,实型,字符型
C) 整型,字符型,逻辑型 D) 整型,实型,逻辑型,字符型
22、若x和y都是int型变量,x=100,y=200,且有下面的程序片段:
printf("%d",(x,y)); 上面程序片段的输出结果是___A____.
A) 200 B) 100
C) 100 200 D) 输出格式符不够,输出不确定的值
23、阅读下面的程序
#include
void main()
{
char ch;
scanf("%3c",&ch);(%3c表示输入三个字符)
printf("%c",ch); (表示输出一个字符)
}
如果从键盘上输入abc<回车>
则程序的运行结果是__A____.
A) a B) b C) c D) 程序语法出错
24、阅读下面的程序
#include
void main()
{
int i,j; i=010; j=9;
printf("%d,%d",i-j,i+j); }
则程序的运行结果是___D_____.
A) 1,19 B) -1,19 C) 1,17 D) -1,17
25、阅读下面的程序
#include
void main()
{
int i,j,m,n; i=8;j=10; m=++i; n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
} 程序的运行结果是____C___;
A) 8,10,8,10 B) 9,11,8,10
C) 9,11,9,10 D) 9,10,9,11
26、已知a=12,则表达式a+=a-=a*=a的结果是__A_____.
A) 0 B) 144 C) 12 D) -264
27、若已定义int a,则表达式a=10,a+10,a++的值是_B__.
A) 20 B) 10 C) 21 D) 11
28、阅读下面的程序
#include
void main()
{
int i,j;
scanf("%3d%2d",&i,&j); printf("i=%d,j=%d\n",i,j); }
如果从键盘上输入1234567<回车>,则程序的运行结果是____D____.
A) i=123,j=4567 B) i=1234,j=567
C) i=1,j=2 D) i=123,j=45
29、下面程序的输出结果是___D_____.
#include
void main()
{
int a=-1, b=4, k;
k=(++a<=0)&&(b--<=0);(如果&&前面部分为假则&&后面的部分就不被执行,如果前面部分为真则&&后面部分需要被执行)
printf("%d,%d,%d\n",k,a,b);
}
A) 1,1,2 B) 1,0,3 C) 0,1,2 D) 0,0,3
30、下面叙述错误的是___D___
A)一个由数据申明部分和执行语句组成。
B)任何表达式都可以加上分好而成为语句。
C))break语句只能用于循环语句和switch语句。
D)二维数组的第二维可以省略。
31、为了避免嵌套的if-else语句的二义性,C语言规定else总是与___C___组成配对关系.
A)缩排位置相同的if
B)在其之前未配对的if
C)在其之前尚未配对的最近的if
D)同一行上的if
32、对于for(表达式1;;表达式3)可理解为______B____.
A)for(表达式1;0;表达式3)
B)for(表达式1;1;表达式3)
C)for(表达式1;表达式1;表达式3)
D)for(表达式1;表达式3;表达式3)
33、若i为整型变量,则以下循环语句的循环次数是_B_.
for(i=2;i==0;)
printf("%d",i--);
A)无限次B)0次
C)1次D)2次
34、若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是____C____.
A)5.5B)5C)3D)4.0
35、以下程序的输出结果是____D____.
#include
voidmain()
{
inta=12,b=12;
printf("%d,%d\n",--a,++b);
}
A)10,10B)12,12
C)11,10D)11,13
36、若有定义inta=12,n=5,则表达式a%=(n%2)运算后,a的值______A____.
A)0B)1C)12D)6
37、若有定义intx=3,y=2和floata=2.5,b=3.5,则表达式:
(x+y)%2+(int)a/(int)b的值是__D__.
A)0B)2C)1.5D)1
38、C语言中的变量名只能由字母,数字和下划线三种字符组成,且第一个字符____C____.
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母,数字或下划线中的任意一种
39、设有说明:
charw;intx;floaty;doublez;则表达式:
w*x+z-y值的数据类型是___D____.
A)floatB)char
C)intD)double
40、设a为整型变量,不能正确表达数学关系10A)a>10||a<15
B)a==11||a==12||a==13||a==14
C)a>10&&a<15
D)!
(a<=10)&&!
(a>=15)
41、下列程序执行后的输出结果是_____C____.
#include
voidmain()
{inta=5,b=60,c;
if(a
{c=a*b;printf("%d*%d=%d\n",b,a,c);}
else
{c=b/a;printf("%d/%d=%d\n",b,a,c);}
}
A)60/5=12B)300
C)60*5=300D)12
42、执行下列程序段后的输出结果是_____A____.
intx=1,y=1,z=1;
x+=y+=z;
printf("%d\n",xy:
x);
A)3B)2C)1D)4
43、设ch是char型变量,值为'A',则表达式ch=(ch>='A'&&ch<='Z')?
ch+32:
ch的值是__B___.
A)ZB)aC)zD)A
44、以下对二维数组a进行正确初始化的是__B_____.
A)inta[2][3]={{1,2},{3,4},{5,6}};
B)inta[][3]={1,2,3,4,5,6};
C)inta[2][]={1,2,3,4,5,6};
D)inta[2][]={{1,2},{3,4}};
45、运行下面程序时,若从键盘输入"3,4",则程序的输出结果是____B___.
#include
voidmain()
{inta,b,s;
scanf("%d,%d",&a,&b);
s=a;
if(s
s=s*s;
printf("%d\n",s);
}
A)14B)16C)18D)20
46、下列程序的执行结果是_____D____.
#include
voidmain()
{intx=0,y=1,z=0;
if(x=z=y)
x=3;
printf("%d,%d\n",x,z);
}
A)3,0B)0,0C)0,1D)3,1
47、有如下程序
#include
voidmain()
{floatx=5.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f\n",y);
}
该程序的输出结果是____C_____.
A)0.000000B)0.50000
C)0.200000D)1.000000
48、以下定义语句中,错误的是___B_____.
A)inta[]={1,2};
B)chara={"test"};
C)chars[10]={"test"};
D)inta[]={'a','b','c'};
49、有如下程序:
#include
voidmain()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec++;
printf("%d\n",c);
}
该程序的输出结果是___C_____.
A)0B)1C)2D)3
50、下列程序执行后的输出结果是____B____.
#include
voidmain()
{intx,y=1,z;
if((z=y)<0)x=4;
elseif(y==0)x=5;
elsex=6;
printf("%d,%d\n",x,y);
}
A)4,1B)6,1C)5,0D)出错信息
51、有如下程序
#include
voidmain()
{intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______A____.
A)a=2,b=1B)a=1,b=1
C)a=1,b=0D)a=2,b=2
52、以下说法中正确的是_____C___.
A)C语言程序总是从第一个定义的函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
53、假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(ww:
x;m=(mm:
y;m=(mm:
z;
则该程序段执行后,m的值是____D_____.
A)4B)3C)2D)1
54、以下程序的输出结果是___D______.
main()
{inta=100;
if(a>100)printf("%d\n",a>100);
elseprintf("%d\n",a<=100);
}
A)a<=100B)100C)0D)1
55、若执行下面的程序从键盘上输入9,则输出结果是.______B________
#include
voidmain()
{intn;
scanf("%d",&n);
if(n++<10)printf("%d\n",n);
elseprintf("%d\n",n--);}
A)11B)10C)9D)8
56、下列程序的输出结果是____C____.
#include
voidmain()
{charb[]="ABCDEFG";
charp=0;
while(p<7)
putchar(b[p++]);
putchar('\n');
}
A)GFEDCBAB)BCDEFG
C)ABCDEFGD)GFEDCB
57、如有定义语句inta[]={1,8,2,8,3,8,4,8,5,8};,则数组a的大小是___A_____.
A)10B)11C)8D)不定
58、以下对C语言函数的有关描述中,正确的是___A__.
A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B)C函数既可以嵌套定义又可以递归调用
C)函数必须有返回值,否则不能使用函数
D)C程序中有调用关系的所有函数必须放在同一个源程序文件中
59、有如下说明:
inta[10]={0,1,2,3,4,5,6,7,8,9};
则数值不为9的表达式是____B____.
A)a[10-1]B)a[8]
C)a[9]-0D)a[9]-a[0]
60、设有数组定义:
chararray[]="China";则数组array所占的存储空间为____C____.(存放字符串时,最后的\0会占用一个字节,但是有效字是5个字符,但是占用6个字节的内存)
A)4个字节B)5个字节
C)6个字节D)7个字节
61、在以下叙述中,不正确的选项是____B____。
A)C语言程序总是从main()函数开始执行
B)在C语言程序中,被调用的函数必须在main()函数中定义
C)C程序是函数的集合,在这个函数集中包括标准函数和用户自定义函数
D)在C语言程序中,函数的定义不能嵌套,但函数的调用可以嵌套
62、C语言中,若未说明函数的类型,则系统默认该函数的类型是___C_____。
A)float型B)long型
C)int型D)double型
63、对于C语言的函数,下列叙述中正确的是___A___.
A)函数的定义不能嵌套,但函数调用可以嵌套
B)函数的定义可以嵌套,但函数调用不能嵌套
C)函数的定义和调用都不能嵌套
D)函数的定义和调用都可以嵌套
64、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_____B___.
A)地址传递
B)单向值传递
C)由实参传给形参,再由形参传回实参
D)传递方式由用户指定
65、以下函数fun形参的类型是____D____.
fun(floatx)
{floaty;
y=3*x-4;
returny;}
A)intB)不确定
C)voidD)float
66、C语言中规定函数的返回值的类型是由__D______.
A)return语句中的表达式类型所决定
B)调用该函数时的主调用函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的类型所决定
67、有如下程序
intfunc(inta,intb)
{return(a+b);}
voidmain()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);}
该程序的输出结果是_____D_____.
A)12B)13
C)14D)15
68、有如下函数调用语句func(rec1,rec2+rec3,rec4,
rec5);该函数调用语句中,含有的实参个数是___B_____.
A)3B)4
C)5D)有语法错误
69、C语言中,凡未指定存储类别的局部变量的隐含存储类别是____A____.
A)autoB)static
C)externD)register
70、在C语言中,全局变量的存储类别是____A_____.
A)staticB)extern
C)voidD)regist
程序分析及编程题(请理解程序的作用,可以自行编程,只要达到要求即可,部分程序只给出样题,并非完全一样)
1输入一行字符分别统计求出其中英文字母,空格数字和其他字符的
个数并输出。
参考程序
#include
voidmain()
{
charch;
intz=0,k=0,s=0,q=0;
for(;(ch=getchar())!
='\n';)
{
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
z++;
elseif(ch=='')
k++;
elseif(ch>='0'&&ch<='9')
s++;
elseq++;
}
printf("zimu:
%d\nspace:
%d\nshuzi:
%d\nqita:
%d\n",z,k,s,q);
getch();
}
2任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。
参考程序
#include
voidmain(