C语言练习题上半部doc.docx
《C语言练习题上半部doc.docx》由会员分享,可在线阅读,更多相关《C语言练习题上半部doc.docx(43页珍藏版)》请在冰豆网上搜索。
C语言练习题上半部doc
C语言练习题
长安大学2004-2005学年第二学期试题(A)卷
一.单项选择题。
(20小题,每小题2分,共40分)
1.C程序设计语言是
A)机器语言B)只适合编写应用软件的语言
C)高级语言D)只适合编写系统软件的语言
2.在C语言中不合法的变量名是
A)6AB)aBcC)Li_12D)_jsj
3.在C语言中,合法的字符常量是
A)'\018’B)'\\'C)'ab'D)"\0"
4.以下说法中错误的是
A)一个C程序可以由一个或多个函数构成。
B)一个C程序必须有而且只能有一个main函数。
C)在计算机上编辑C程序时,每行只能写一条语句。
D)C程序是由函数构成的。
5.一个可执行C程序的开始执行点是
A)程序的第一行语句B)程序的第一个函数
C)包含文件的第一个函数D)名为main()的函数
6.要使变量x被赋值为486,变量y被赋值为-286,则运行到语句scanf("%d,%d",&x,&y);时正确的输入是
A)486,-286↙B)486-286↙C)486↙-286↙D)123:
456↙
7.在C语言中要求运算对象必须是整数的是
A)/B)+C)?
:
D)%
8.C语言的if语句中,用作判断的表达式为()
A)任意表达式B)算术表达式C)关系表达式D)逻辑表达式
9.下列程序段中的循环体被运行或被执行()次
intk=21;
while(k>0){k=k/3;k--;}
A)1B)2C)3D)4
10.合法的数组定义是
A)inta(5)={1,2,3,4,5};B)inta[][3]={{0,1,2},{6,5,4},{9,8,7}};
C)chara[5]="Iamaboy!
";D)chara[]=’boy’;
11.若有以下定义,则以下关于标识符prt的正确说法是
int(*prt)[3];
A)定义不合法。
B)是一个指针数组名,每个元素是一个指向整型变量的指针。
C)是一个指针,它指向一个具有3个元素的一维数组。
D)是一个指向整型变量的指针。
12.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是
if(x>y) z=x;x=y;y=z;
A)x=10,y=20,z=30 B)x=20,y=30,z=30
C)x=20,y=30,z=10 D)x=20,y=30,z=20
13.若有以下程序片段。
则中的表达式都是对数组元素的正确引用(0≤i<4,0≤j<3)。
main()
{inta[4][3]={0},(*p)[3],i,j;
p=a;……}
A)a[i][j],a[i]+j,*(*(a+i)+j)B)*(p+i)[j],p[i]+j,*(*(p+i)+j)
C)*(p+i)[j],*(a+i)[j],*(p+i+j)D)p[i][j],*(p[i]+j),*(a[i]+j)
14.若有两个字符串str1,str2,要比较二者是否相等,正确的if语句是
A)if(str1==str2)B)if(str1=str2)
C)if((str1-str2)==0)D)if(strcmp(str1,str2)==0)
15.执行如下程序,则结果为
#defineP(a,b)a*b+1
main()
{intx=1,y=2,z;
z=P(x+y,4+3);printf("%d",z);}
A)22B)13C)23D)21
16.某结构体变量定义如下,对此结构体变量中的元素的引用形式正确的是
structa
{intnum;
charname[10];
}b1,*p;
p=&b1;
A)b1->numB)p.nameC)(*p).nameD)*p.num
17.若有两个基本类型相同的指针p1和p2,则下列运算不合理的是
A)p1+p2B)p1-p2C)p1=p2D)p1==p2
18.下列关于C语言的文件操作叙述正确的是
A)先关闭文件B)先测试文件已存在,再打开文件
C)先打开文件D)对操作顺序无要求
19.主函数main()带参数的正确形式是
A)main(int*argc,charargv)B)main(intargc,charargv[])
C)main(intargc,char*argv)D)main(intargc,char*argv[])
20.设有以下定义,则共用体变量d在内存中占的字节数是
union
{floata;
intb;
charc;}d;
A)7B)4C)6D)8
二、程序填空题(10个空,每空2分,共20分)
1.从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止。
#include
main()
{FILE*fp;
charch,filename[10];
scanf("%s",filename);
if((fp=
(1)(filename,"w"))==NULL)
{printf("cannotopenfile\n");exit(0);}
ch=getchar();ch=getchar();
while(
(2))
{fputc(ch,fp);
putchar(ch);
ch=getchar();}
(3)(fp);}
2.求键盘输入的字符串的长度
#include"stdio.h"
main()
{charstring[50];
intj=0,len=0;
printf(“\nQingshuru1gezifuchuan:
”);
gets(string);
while((4))
{(5);j++;}
printf("\nItis%d",len);
}
3.求个位上是2且能被6整除的所有4位数的个数。
#include"stdio.h"
main()
{inti;
intcount;
count=0;
for(i=1002;i<___(6)____;i++)
if(___(7)____)count++;
printf("count=%d\n",count);
}
4.由键盘输入10个无序的数,找出其中最小数及其下标后,每5个数为1行输出这10个数,然后输出最小数及其下标
#include"stdio.h"
main()
{inta[10],i,min,temp;
for(i=0;i<10;i++)
scanf("%d",_____(8)_____);
min=a[0];temp=0;
for(i=1;i<10;i++)
if(a[i]{_____(9)____;temp=i;}
printf("\n");
for(i=0;i<10;i++)
{if(___(10)___)printf("\n");
printf("%6d",a[i]);}
printf("\nmin=%dposition=%d\n",min,temp);
}
长安大学2004-2005学年第二学期试题(B)卷
一、单向选择题(每题2分,共60分)
1)以下变量名中,正确的是:
A).$xB).2aC)._alD).a-1
2)intx;下面哪个表达式满足x为奇数时为真,x为偶数时为假?
A).x%2==0B).(x/2*2-x)==0C).!
(x%2)!
=0D).(x%2)
3)若已定义:
inta[9],*p=a;并在以后的语句中未改变p的值,
不能表示a[1]地址的表达式为________
A).p+1B).a+1C).a++D).++p
4)逗号表达式(x=3*2,++x),x=x+10执行后x的值为
A).7B).6C).17D).16
5)以下选项中属于C语言的数据类型是________
A).复数型B).双精度型C).逻辑型D).集合型
6)指针s所指字符串的长度为
char*s="0\101+101\\Name-\xab";
A).13B).21C).17D).20
7)下面程序的输出结果是
main()
{intx=3;
do{printf(“%2d”,x--);}while(!
x);}
A).3B).321C).不打印任何内容D).陷入死循环
8)在C语言中,不正确的int类型的常数是________
A).32768B).0C).037D).0xAF
9)inta=2,b=-2;语句printf("%d",(a=2)&&(b=-2));的输出结果是
A).无输出B).0C).-1D).1
10)设有定义:
intx=1,y=-1;则语句:
printf("%d\n",(x--&&++y));的
输出结果是________
A).1B).0C).-1D).2
11)下列描述中不正确的是________
A).字符型数组中可能存放字符串
B).可以对字符型数组进行整体输入、输出
C).可以对整型数组进行整体输入,输出
D).不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
12)当c的值不为0时,________能正确将c的值赋给变量a、b
A).c=b=a;B).(a=c)||(b=c)C).(a=c)&&(b=c)D).a=c=b
13)若w=1,x=2,y=3,z=4,则表达式ww:
(yy:
z)结果是
A)4B)3C)2D)1
14)以下程序的输出结果是________
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
A).10192B).9876C).10990D).101091
15)已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是
if(x>y)
z=x;x=y;y=z;
A).x=10,y=20,z=30B).x=20,y=30,z=20
C).x=20,y=30,z=10D).x=20,y=30,z=30
16)数组名作为实参调用函数,实际传给形参的是
A).数组中全部元素值B).数组中元素个数
C).数组第一个元素值D).数组首地址
17)若定义inta=6;则a+=a*a的值为
A).72B).36C).42D).表达式错误
18)执行以下程序段后,s的值为
inta[]={5,3,7,2,1,5,4,10};
ints=0,k;
for(k=0;k<8;k+=3)
s+=a[k];
A).17B).11C).13D).27
19)以下程序的输出结果是________
main()
{inti,x[3][3]={{9,8,7},{6,5,4},{3,2,1}},*p=&x[1][1];
for(i=0;i<2;i++)printf("%d",p[i]);
}
A).87B).65C).54D).98
20)以下程序的运行结果是
main()
{inta[10]={10,9,8,7,6,5,4,3,2,1},*p=a;
printf(“%d\n”,*(p+3));}
A)10B)6C)7D)8
21)以下程序的运行结果是________
main()
{chara[10]={'1','2','3','4','5','6','7','8','9',’\0’},*p;
inti;
i=8;
p=a+i;
printf("%s\n",p-3);
}
A)6B)6789C)9D)789
22)以下程序的输出结果是
#definef(x)x+x
main()
{inta=6,b=2,c;
c=f(a)*f(b);
printf("%d\n",c);
}
A).48B).64C).20D).12
23)以下程序的输出结果是________
main()
{intn[3][3]={1,2,3,4,5,6,7,8,9},i,j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)n[i][j]=0;
printf("%d\n",n[i][j]);
}
A).0B).6C).9D).8
24)以下程序的输出结果是________
main()
{intw=5;
fun(w);
printf("\n");
}
fun(intk)
{if(k>0)fun(k-1);
printf("%d",k);
}
A).54321
B).012345
C).12345
D).543210
25)以下程序的输出结果是________
intd=1;
fun(intp)
{staticintd=5;
d+=p;
printf("%d",d);
return(d);
}
main()
{inta=3,b;
b=a+fun(d);
printf("%d\n",fun(b));}
A).699B).669C).61515D).6615
26)请选出以下程序段的输出结果
#defineMIN(x,y)((x)<(y)?
(x):
(y))
main()
{inti,j,k;
i=10;j=15;
k=10*MIN(i,j);
printf(“%d\n”,k);
}
A).15B).100C).10D).150
27)以下对结构体变量stul中成员age的非法引用是
structst
{intage;
intnum;}stul,*p;
p=&stul;
A).stul.ageB).ageC).p→ageD).(*p).age
28)以下程序的输出结果是________(提示:
字母A的ASCII代码是65)
main()
{union{charc[2];
inti;
intk;
}r;
r.c[0]=67;r.c[1]=0;
r.i=65;r.k=66;
printf("%c%d%d\n",r.c[0],r.i,r.k);
}
A).676566B).B6666C).C6566D).666666
29)主函数main()带参数的一般形式是
A)main(int*argc,charargv)B)main(intargccharargv[])
C)main(intargccharargv)D)main(intargcchar*abc[])
30)要打开一个已存在的非空文件“file”用于修改,选择正确的语句是
A).fp=fopen(“file”,”r”)B).fp=fopen(“file”,”ab+”)
C).fp=fopen(“file”,”w”)D).fp=fopen(“file”,”r+”)
二、填空题(每空2分,共20分)
1).下面程序用起泡法对数组中的10个元素值从小到大排序。
main()
{inta[11],i,j,t;
printf(“input10numbers:
\n”);
for(i=1;i<11;i++)scanf(“%d”,&a[i]);
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(①)
{t=a[i];②;a[i+1]=t;}
printf(“thesortednumbers:
\n”);
for(i=1;i<11;i++)
printf(“%d”,a[i]);
}
2).下面程序的功能是:
输出100以内能被3整除且个位数为6的所有正整数。
main()
{inti,j;
for(i=0;③;i++)
{j=i*10+6;
if(④)continue;
printf(“%5d”,j);}
}
3).函数strcat(strl,str2)实现将字符串str2拼接到字符串strl后面的功能。
char*strcat(char*str1,char*str2)
{char*t=str1;
while(*str1!
=’\0’)⑤;
while(⑥);
return(t);
}
4).以下程序的功能是:
从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
请填空。
main()
{floatx[100],sum=0.0,ave,a;
intn=0,i;
printf("Entermark:
\n");scanf("%f",&a);
while(a>=0.0&&a<=100)
{sum+=___⑦____;x[n]=____⑧____;
n++;
scanf("%f",&a);}
ave=_____⑨____;
printf("Output:
"\n");
printf("ave=%f\n",ave);
for(i=0;iif(____⑩_)printf("%f\n",x[i]);
}
三、阅读下列程序,写出运行结果。
(每题2分,共10分)
1).运行完下面的程序后,a,b的值是
main()
{intx=10,y=9,a,b;
a=(--x==y++)?
--x:
++y;
b=x++;
printf(“a=%db=%d\n”,a,b);
}
2).运行完下面的程序后,结果是
main()
{inti,x;
for(i=1,x=1;i<=20;i++)
{if(x>=10)break;
if(x%2==1)
{x+=5;continue;}
x-=3;}
printf(“i=%d,x=%d”,i,x);
}
3).有下面程序,现从键盘输入-1,则程序的输出是
main()
{intx,y;
scanf(“%d”,&x);
if(x++<0)y=-1;
elseif(x==0)y=0;
elsey=1;
printf(“y=%d\n”,y);
}
4).运行完下面的程序后,输出结果是
main()
{inti,j,r,c,m;
intarray[3][3]={100,200,300,20,72,-30,-850,2,6};
m=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(array[i][j]{m=array[i][j];r=i;c=j;}
printf(“m=%d,r=%d,c=%d\n”,m,r,c);}
长安大学2005-2006学年第二学期试题(A)卷
一、选择题(每空2分,共60分)
1.以下变量名中,正确的是:
A.$xB.2a
C._alD.a-1
2.以下合法的常量是:
A.10e2.5B.e-3
C.100LD.100M
3.若x,y为float型量,x=5,y=5.8;则命令printf(“%3.1f”,(x,y));的输出结果是
A.5.05.8B.5.8
C.5.0D.输出格式不对
4.以下说法中正确的是__________.
A.C语言程序总是从第一个函数开始执行
B.在C语言程序中,要调用的函数必须在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
5.下面程序的输出结果是__________.
main()
{intx=20,y=10;
printf("%d%d\n",x--,--y);
}
A.209B.199
C.1910D.2010
6.有以下程序,运行后的输出结果是
#include
main()
{char*p="abcde\0fghjik\0";
printf(“%d\n",strlen(p));
}
A.12B.15C.6D.5
7.C语言中,函数值的类型定义可以缺省,此时函数值的隐含类型是
A.voidB.int
C.floatD.double
8.以下程序的输出结果是
main()
{intk=17;
printf("%d,%o,%x\n",k,k,k);
}
A.17,021,0x11B.17,17,17
C.17,0x11,021D.17,21,11
9.以下程序执行后sum的值是__________.
main()
{inti,sum;
for(i=1;i<6;i++)sum+=i;
printf("%d\n",sum);}
A.15B.14
C.不确定D.0
10.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是__________.
A.地址传递B.单向值传递
C.由实参传给形参,再由形参传回实参D.传递方式由用户指定
11.以下程序运行后的输出结果是。
#defineS(x)1+4*x*x
main()
{inti=2,j=3;
printf("%d\n",S(i+j));
}
A.20B.18C.101D.125
12.有如下定义,x变量占的字节数是
struct
{intn;
chara[10];
floatm;
}x;
A.10B.8C.14D.16
13.以下程序的输出结果是
main()
{inti;
for(i=1;i<=5;i++)
{if(i%2==1)printf(“*”);
elsecontinue;
printf