C语言课程习题.doc
《C语言课程习题.doc》由会员分享,可在线阅读,更多相关《C语言课程习题.doc(20页珍藏版)》请在冰豆网上搜索。
C语言综合练习题
(一)
一选择题(7分,每小题0.5分)
1.设a为整型变量,初值为12,执行完语句a+=a-=a*a后,a的值是()。
A552B144C264D-264
2.下列标识符中,不能作为合法的C用户定义标识符的是()。
Aa3_b3BvoidC_123DIF
3.下列整数值中,不正确的八进制或十六进制数值常量是()。
A0xcdB-017C-ox123D0xfdc
4.若给定条件表达式(M)?
(a++):
(a--),则其中表达式M和()等价。
AM==0BM=1CM!
=1DM!
=0
5.在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式为()。
A只能是逻辑表达式B只能是关系表达式
C只能是逻辑表达式或关系表达式D可以是任意表达式
6.以下程序的输出结果为()。
main()
{charc;
inti;
for(i=65;i<68;i++)
{c=i+32;
switch(c)
{case‘a’:
printf("%c,",c);break;
case‘b’:
case‘e’:
printf("ok,");
default:
printf("end");
}
}}
Aa,ok,endBa,ok,endendCa,ok,end,endDa,ok,ok
7.数组名作为实参数传递给函数时,数组名被处理为()。
A该数组的长度B该数组的元素个数
C该数组的首地址D该数组中各元素的值
8.关于return语句,下列正确的说法是()。
A可以在同一函数中出现多次B在主函数中不能出现
C必须在每个函数中出现D只能在除主函数之外的函数中出现一次
9.以下程序的输出结果为()。
#defineA3
#defineB(a)(A+1)*a
main()
{intx;
x=3*A+B(7);
printf("x=%d\n",x);
}
Ax=93Bx=37Cx=60Dx=90
10.设有以下定义,则以下对变量w的赋值()是错误的。
enumweek{sun,mon=4,tue,wed,thu,fri,sat}w;
Aw=sun;Bw=(enumweek)4;Cw=san;Dw=(enumweek)9;
11.以下定义结构体类型st1,其中正确的是()。
Atypedefstructstudent
{intnum;intage;}STD;
STDst1;
Bstructst1{intnum,age;}s;
Cstruct{intnum;floatage;}st1;
Dstructst1{intnum;intage;}
12.若有下面的变量定义,以下语句中合法的是()。
inti,a[10],*p;
Ap=a+2;Bp=a[5];Cp=a[2]+2;Dp=&(i+2);
13.设有说明int*ptr[3];,其中标识符ptr是()。
A是一个指向整形变量的指针
B是一个指针,它指向一个具有三个整形元素的一维数组
C是一个指针数组名,每个元素是一个指向整形变量的指针
D定义不合法
14.要打开一个已存在的非空文件“file”用于修改,选择正确的语句()。
Afp=fopen("file","r");Bfp=fopen("file","w");
Cfp=fopen("file","r+");Dfp=fopen("file","w+");
二判断对错,对的划“√”,错的划“×”(5分,每小题0.5分)
1.在TurboC中,实型数据在内存中占4个字节。
()
2.若有形参定义:
inta[10];则a++是合法的表达式。
()
3.若有宏定义:
#definePI3.14i5926,则系统预编译时会报错。
()
4.函数的递归调用不过是一个函数直接地调用它自身。
()
5.定义在main函数后的任何函数都需在main中进行函数声明。
()
6.若有定义:
inta;则scanf(“%d",a);可以给变量a赋值。
()
7.任何数组在使用前必须先定义。
()
8.在int*p;和语句printf(“%d”,*p);中的*p含义相同。
()
9.共用体变量的各个成员所占内存单元的地址相同。
()
10.在使用缓冲文件系统时,与文件输入和输出相关的数据都先送到缓冲区中。
()
三写出下列程序的运行结果(10分,每小题2分)
1.main()
{charc1=‘A’,c2=‘\144’,c3=‘\x44’,c=0xf5,x=13,a;
inti=0122,j=0xa4;
printf(“c1=%c,c4=%c\tc5=%c\n”,c1,c2,c3);
printf(“%d,%d\n”,i,j);
i=-34;
j=20;
printf(“%d,%d,%d\n”,i%j,i&j<<2,sizeof(j));
printf(“c=%d\n”,c|x);
a=c^x<<2;
printf(“a=%d\n”,a);
}
2.main()
{
intx,y=1,z=10;
if(y!
=0)x=5;
printf(“x=%d\t”,x);
x=1;
if(z<0)
if(y>0)x=3;
elsex=5;
printf(“x=%d\n”,x);
if(z=y<0)x=3;
elseif(y==0)x=5;
elsex=7;
printf(“x=%d\t”,x);
printf(“z=%d\n”,z);
}
3.main()
{chars[20]=“Ilikeit.”,t[20]=“Areyou?
”,c[20];
inti=0;
while(s[++i]!
=‘\0’)
t[i]=s[i];
t[i]=0;
printf(“strings:
%s\n”,s);
printf(“stringt:
%s\n”,t);
}
4.inti=5;
main()
{inti=3;
{inti=10;
i++;
printf(“%d\n”,i);
}
f1();
i+=1;
printf(“%d\n”,i);
}
intf1()
{i=i+1;
return(i);
}
5.main()
{inti=10,a[]={10,20,30,15},*p1;
char*b=”Learning”,**p2=&b;
p1=&i;
printf(“%4d”,*p1+20);
for(p1=a;p1printf(“%4d”,*p1);
printf(“\n%c\t%s\n”,*(b+4),*p2);
}
四阅读下列程序,在处填入适当内容,使程序完整(8分,每个空1分)
1.用冒泡法对任意10个整数排序。
main()
{inta[11],i,j,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
printf("\n");
for(i=1;
(1);i++)
for(j=1;
(2);j++)
if(a[j+1]>a[j])
{t=a[j];(3);(4);}
printf("Thesortednumbers:
\n");
for(i=1;i<11;i++)
printf("%4d",a[i]);
printf(“\n”);
}
2.求100~200间的素数。
(5)
main()
{intm,flag;
for(m=101;m<=200;m+=2)
{flag=prime(m);
if((6))
printf(“%4d”,m);
}
}
prime((7))
{
inti,k,flag;
k=sqrt(a);
for(i=2;i<=k;i++)
if(a%i==0)
(8);
if(i==k+1)flag=1;
elseflag=0;
}
C语言综合练习题
(二)
一选择题(7分,每小题0.5分)
1.C语言源程序的基本单位是()。
A过程B函数C子程序D标识符
2.下列程序的输出结果是()。
main()
{inta=7,b=5;
printf("%d\n",b=b/a);
}
A5B1C0D不确定值
3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?
a++:
b++,a+b)的值是()。
A7B8C9D2
4.设a为int型变量,执行下列赋值语句后,a的取值分别是()。
a=125.534;a=(int)125.521%4;a=5<<2;
A125,31,1B125,1,20C125,31,20D125.534,2,20
5.设有如下程序段,下面描述中正确的是()。
intk=10;while(k=0)k=k-1;
A循环执行一次B循环是无限循环C循环体语句一次也不执行D循环体语句执行一次
6.以下程序的输出结果为()。
inti;
voidprt()
{for(i=5;i<8;i++)printf("%c",'*');
printf("\t");
}
main()
{for(i=5;i<=8;i++)prt();
}
A***B************C******D***
7.在C语言程序中,以下说法正确的是( )。
A函数的定义可以嵌套,但函数的调用不可以嵌套
B函数的定义不可以嵌套,但函数的调用可以嵌套
C函数的定义和函数的调用都不可以嵌套
D函数的定义和函数的调用都可以嵌套
8.以下函数调用语句中含有()个实参。
func((e1,e2),(e3,e4,e5));
A2B3C5D语法错误
9.以下程序的输出结果为()。
#defineADD(x)x*x
main()
{inta=4,b=6,c=7,d=ADD(a+b)*c;