C语言习题.docx
《C语言习题.docx》由会员分享,可在线阅读,更多相关《C语言习题.docx(44页珍藏版)》请在冰豆网上搜索。
![C语言习题.docx](https://file1.bdocx.com/fileroot1/2023-2/8/c7d75fb1-19aa-4289-96da-85e75ab1c681/c7d75fb1-19aa-4289-96da-85e75ab1c6811.gif)
C语言习题
1、结构化程序设计三种基本控制结构不包括(A)。
A、数据结构B、选择结构
C、顺序结构D、循环结构
2、整型常量三种表示形式中不含(D)。
A、八进制B、十六进制
C、十进制D、二进制
3、以下表达式中,(A)无法正确表示右图所示的表达式。
A、(a+b)*(a-c)/3*aB、(a+b)/(3*a)*(a-c)
C、(a+b)*(a-c)/(3*a)D、(a+b)/a*(a-c)/3
4、若已定义:
inti=2,j=7;则(A)表达式不正确。
A、(i++)+j+(5++)B、(i++)+(j++)+5
C、(--i)+jD、(i++)+(j++)
5、若已定义:
floatx;charc;以下正确的输入语句是(B)。
A、scanf(“%f%c”,x,c);B、scanf(“%f%c”,&x,&c);
C、scanf(“%f,c”,&x,&c);D、scanf(“%f%c”,&x,%c);
6、若已定义:
inta;条件表达式(C)等价于求a的绝对值。
A、a>0?
-a:
aB、a<0?
a:
-aC、a<0?
-a:
aD、a>0?
--a:
a
7、若已定义:
inti=6;floatx=1.5,y=3.5;则表达式x+i%(int)(x+y)值为(B)。
A、7.5B、2.5C、2D、2.7
8、以下程序段的运行结果是(C)。
intx=10,y;
if(x>20)y=9;
elseif(x>10)y=6;
elseif(x>5)y=3;
elsey=1;
printf(“%d\n”,y);
A、1B、9C、3D、6
9、以下程序段运行后s的值为(B)。
inti,s=0;
for(i=3;i>0;i--)
s=(s+1)*3;
A、9B、39C、0D、36
10、以下叙述中错误的是(A)。
A、定义数组时,若不加类型标示符则默认为整型;
B、可逐个引用数组元素但不能一次引用整个数组;
C、数组名代表数组的首地址;
D、数组中每一个元素都属于同一数据类型。
11、以下程序段的运行结果是(D)。
inta[3][3]={1,2,3,4,5,6,7,8,9},i;
for(i=0;i<3;i++)
printf(“%2d”,a[i][2-i]);
A、951B、753C、159D、357
12、若已定义:
chars1[50],s2[10]=”abc”;,执行语句printf(
“%s\n”,strcat(strcpy(s1,s2),”xyz”));后输出(D)。
A、axbyczB、xaybzcC、xyzabcD、abcxyz
13、以下程序的运行结果是(D)。
#include
unsignedintf(unsignedintx);
{
if(x==1)return1;
return2*f(x/2);
}
voidmain(){
printf(“%u\n”,f(10));
}
A、4B、1C、16D、8
14正确的宏定义命令是(D)。
A、#defineK3.14;B、#defineK=100
C、#defineM*N100D、#defineSUM(x,y)(x+y)
15、若已定义:
inti=10,*pi=&i;floatx=5.6.*px=&x;以下语句错误的是(C)。
A、*pi=i+20;B、(*px)=*pi+x;C、pi+px;D、x=*pi+*px;
16、以下程序的运行结果是(A)。
#include
voidmain(){
inta,b,*pb=&a,*pb=&b;
*pa=3;*pb=4;a=5;b=6;
pb=pa;
printf(“%d\n”,*pa+*pb);
}
A、10B、7C、12D、11
17、若已定义:
StructStudent{
intnum;
floatscore;
}s,*ps=&s;
以下不正确的语句是(B)。
A、(*ps).score=90;B、ps->score=90;
C、s.score=90;D、(*ps)->score=90;
18、若已定义:
inta[10],*pi,(*ps)[10];以下赋值语句中错误的是(D)。
A、ps=&a;B、pi=a+5;
C、pi=a;ps=&a;*(*ps)=10;D、pi=a;ps=pi;
19、以下程序段运行后,输出结果是(B)。
inta=2,b=3,c=10;
c=(a>>1)|(b<<1);
printf(“%d%d%d\n”,a,b,c);
A、2310B、237C、327D、257
20、若有以下程序,以下叙述正确的是(A)。
#include
voidmain(){
FILE*fp;
inti;
charinfor[][20]={“first\n”,”second\n”,”third\n”,”bye!
”};
fp=fopen(“c:
\\test.txt”,”w”);
if(fp)for(i=0;i<=sizeof(infor)/sizeof(char[20])-1;i++)
fprintf(fp,”%s”,infor[i]);
fclose(fp);
A、程序运行后,test.txt文件原来的内容被information中存储的字符串信息所覆盖;
B、按“w”方式打开的文件test.txt,可以对其进行读操作;
C、若文件test.txt不存在,则程序无法运行;
D、程序运行后,在test.txt文件的内容的后面追加了新四行infor中存储的串信息。
21、C源程序由函数构成,而函数的基本组成单元是(B)
A、变量B、语句C、表达式D、过程
22、(D)为合法的字符常量。
A、”\\”B、‘xx’C、“x”D、’\n’
23、若已定义:
inta,b;则都好表达式a=5,b=3,a*=a+b的值是(D)
A、8B、28C、15D、40
24、若已定义:
enumWEEKDAY{mon=1,tue,wed,thur,fri,sat=8,sun}today;则枚举常量tue和sun的值分别是(C)。
A、1和5B、2和10C、2和9D、0和7
25、求x平方根的正确函数调用时(A)。
A、sqrt(x)B、pow(x,2)C、sqrt(x,2)D、sqr(x)
26、已定义:
inta=1,b=3,c=2;表达式值为0的是(C)。
A、a||b(a>b)&&(a+c)>bD、a27、以下运算符优先级最高的是(B)
A、>B、+C、==D、=
28、若已定义:
intd;FILE*fp;要从fp所指向的已经打开的文件中读取一个整形数据到变量d中,正确的语句是(D)
A、fscanf(fp,&d);B、fscanf(fp.”%d”,d);
C、scanf(fp,”%d”,d);D、fscanf(fp,”%d”,&d);
29、以下程序段的输出结果是(B)。
inta[5]={12,-4,16,8,-10},*p;
p=a+4;
printf(“%d”,*p--);
A、87B、-107C、816D、-10-11
30、给数组a所有元素赋初值0的语句是(C)
A、inta[]=0*6;B、inta[6]=0;
C、inta[6]={0};D、inta[6]=6*0;
31、以下程序段的运行结果是(B)。
inta[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
printf(“%d\n”,a[0][0]-a[2][3]);
A、-1B、-11C、8D、10
32、若有如下结构类型定义,以下错误的语句是(B)。
structPERSON
{
intnum;
charname[10];
}
A、structPERSON*p
B、structPERSONpeople[100];(people+5)->num=1234;
C、structPERSON*p;p->name=”1234”;
D、structPERSONperson;person.num=123;
33、对于无返回值的函数,在定义时建议使用(D)的函数类型标示符。
A、floatB、emptyC、doubleD、void
34、宏定义#definePI3.14中,宏名PI是一个(D)。
A、字符变量B、字符串常量C、单精度类型的常量D、符号常量
35、若已定义:
inta[5],*p=a;无法引用数组元素a[4]的是(C)。
A、p[4]B、*(p+4)C、*p+4D、*(&p[0]+4)
36、以下程序的运行结果是(B)。
#include
voidmain()
{
inta[2][3]={{1,2,3},{4,5,6}},*p=a[0],*q=p+5;
for(;q>=p;q--)
printf(“%d”,*q);
}
A、123456B、654321
C、456321D、321456
37、以下叙述错误的是(B)。
A、#defineINPUTscanf的作用是用标识符INPUT代表scanf。
B、C语言源程序分钟加入一些预处理命令是为了改进程序的设计环境,提高编程效率。
C、若有intt;不能使用宏定义#defineSWAP(x,y)t=x;x=y;y=t;
D、预处理命令行都必须以#号开始。
38、若已定义:
inta[3]={-3,10,-9},*p=a+2;则对数组元素a[1]错误引用的是(B)。
A、*(--p)B、p[-1]C、*p--D、*(p-1)
39、以下枚举类型的定义,正确的是(A)。
A、enumCOLOR{red=1,blue=3,green=5};
B、enumCOLOR={“red”,”blue”,”green”};
C、enumCOLOR{“red”,”blue”,”green”};
D、enumCOLOR={red,blue,green};
40、以下叙述错误的是(D)
A、函数体内定义的变量,其生命期是函数执行期。
B、全局变量的作用域是从其定义处起至本程序结束处
C、函数体内复合语句中定义的变量只在该复合语句内有效。
D、在一个程序源文件中定义的全局变量在程序的其他与文件中必不可见。
41、C源程序需经过(D)生成可执行文件。
A、录入和编辑B、调试和连接C、编辑和解释D、编译和连接
42、(C)为合法的浮点型常量。
A、1E-8.5B、E-8C、1.OE-8D、1.25E
43、若已定义:
inta,b=3,c;则(C)是不正确。
A、c=(a=10,a+=6);B、c=6*b;
C、c=((2=a)+b);D、b*=b+=2*b;
44、若已定义:
floata=1.2;intb=3;则表达式b%5-a的值是(D)。
A、2B、-0.2C、-1.2D、1.8
45、字符数组str经初始化后,存储的不是字符串“xyz”的语句是(B)。
A、charstr[]={'x','y','z',0};B、charstr[4]={'x','y','0','z'};
C、charstr[]={'x','y','z','\0'};D、charstr[4]={'x','y','z','0'-48};
46、若已定义inta[3][4],无法正确引用数组a元素的是(B)。
A、a['b'-97][1]B、a['0'][1]
C、a['\0'][5-2]D、a[0]['1'-48]
47、若已定义:
longinti;charc;floatf;则表达式i+c+(int)f结果的类型是(A)。
A、longintB、charC、doubleD、int
48、若已定义inta=3,b=8;以下程序段的运行结果是(C)。
if(a=1)
b=9;
printf("a=%d,b=%d\n",a,b);
A、a=1,b=8B、a=3,b=9C、a=1,b=9D、a=3,b=8
49、以下程序段的运行结果是(A)。
inta[]={1,2,3,4,5,6,7,8},i,sum=0;
for(i=0;i<8;i++)
if((i+1)%2)
sum+=a[i];
printf("%d\n",sum);
A、16B、20C、36D、18
50、(D)语句能正确定义a为整型数组。
A、inta[n],n=10;B、inta(10);C、intn=10,a[n];D、inta[10];
51、正确定义二维数组a的语句是(B)。
A、inta(4,3);B、floata[2+2][5];C、floata[4][];D、inta[4,5];
52、以下程序的运行结果是(B)。
#include
voidmain()
{
char*str="abc123",*p=str;
while(*p)
{
putchar(*p+1);
p++;
}
}
A、123abcB、bcd234C、cba234D、abc123
53、以下叙述错误的是(B)。
A、函数原型中可以不指明参数的名字B、函数原型中可以不指明参数的类型
C、定义函数时必须指明函数名D、定义函数时必须指明函数类型
54、以下预编译处理指令中,错误的是(D)。
A、#defineMAX(x,y)(x>y?
x:
y)B、#include
C、#include"stdio.h"D、#definePI3,14;
55、以下程序段的运行结果是(A)。
charstr[]="Computer",*p=str+3;
printf("%s",--p);
A、mputerB、ComputerC、mD、puter
56、以下程序的运行结果是(A)。
#include
voidmain()
{
inta[5]={16,8,3,5,12},*p=a,*q=&a[4];
printf("%d\n",q-p);
}
A、4B、1C、2D、3
57、若有以下定义和语句,以下叙述错误的是(A)。
unionData
{
charch;
inti;
}x,*px=&x;
x.i=66;
printf("%c\n",px->ch);
A、&x.ch和&x.i值相同B、px和&x.ch值相同
C、px和&x值相同D、输出字符A
58以下叙述中错误的是(C)。
A、以一对"/*"和“*/”为定界符括起来的文字为注释部分
B、所有语句都必须以分号";"结束
C、语句必须在一行内写完
D、C源程序必须包含一个main()函数
59、以下程序段运行结果是(A)。
inti;
for(i=1;i<=6;i++)
{
if(i%2)
{
printf("*");
continue;
}
printf("#");
}
A、*#*#*#B、#*#*#*C、######D、******
60、能正确表示2A、10>t>2B、t>2&&t<10C、t>2||t<10D、261、若已定义:
charc1,c2,c3;使用语句scanf(”%c%c%c”,&c1,&c2,&c3);给c1,c2,c3分别赋’h’,’u’,’b’,正确的输入形式是(A)。
A、hubB、h,u,bC、‘h’‘u’‘b’D、‘h’,‘u’,‘b’
62、(D)为合法的用户标识符。
A、structB、8duC、h2.7D、_3tree
63、以下程序的可执行文件名为do.exe
#include
#include
voidmain(intargc,char*argv[])
{
if(argc!
=2)
{printf(“Badcommandfound!
\n”);
exit
(1);
}
printf(“hello%s\n”,argv[1]);
getch();
}
在DOS命令行输入:
dome<回车>,则输出结果是(C)。
A、hellodoB、hellodomeC、BadcommandfoundD、hellome
64、运算符(D)不能用于非整型数据运算。
A、/B、*C、+D、%
65、以下叙述正确的是(A)。
A、break语句只能用在循环体内和switch语句体内。
B、break语句只能用在switch语句体内。
C、continue语句的作用是使程序的执行流程跳出包含它的所有循环。
D、在循环体内使用break语句和continue语句的作用相同。
66、以下程序段运行后,a,b,c的值分别是(A)。
inta=3,b=5,c;
c=a&b;
A、3,5,1B、5,3,1C、3,5,3D、5,1,3
67、若已定义:
structstudent
{intnum,score;
}stu[]={{111,80},{112,76},{113,60},{114,90}};
以下错误的语句是(D)。
A、stu[0].score=stu[1].score;B、(stu+3)->score++;
C、*stu=*(stu+1);D、(*stu)->num=110;
68、若已定义:
inta[5]={1,2,3,4,5},*pa=a+3;以下叙述错误的是(B)。
A、a[2]与*(pa-1)的值相同B、a--与pa--的作用相同
C、a[2]与pa[-1]的值相等D、*pa与a[3]的值相等
69、以下叙述错误的是(C)。
A、宏定义不占用程序运行时间,但与程序中语句一样需要编译
B、一个C语言源程序可以有多条预处理命令
C、宏定义必须放置在它所在的源程序文件的最前面
D、宏定义中宏名一般用大写字母表示
70、以下程序的运行结果是(D)。
#include
intlarger(intx,inty)
{returnx>y?
x:
y;}
intlargest(intx,inty,intz)
{returnlarger(larger(x,y),z);}
voidmain()
{inta=3,b=-4,c=5;
printf("larger=%d,largest=%d\n",larger(a,b),largest(larger(b,c),2*4,12));}
A、larger=5,largest=12B、larger=3,largest=5
C、larger=5,largest=8D、larger=3,largest=12
71、若已定义inta[][4]={1,-2,3,-4,5.-6,7,-8};则表达式sizeof(a)/(sizeof(int[4]))的值为(A)。
A、数组a的第一维长度B、数组a[1]中的元素个数
C、数组a[0]的第一维长度D、数组a的元素个数
72、(B)语句能正确定义整型变量x,y,z,并给它们赋相同初值3。
A、intx=y=z=3;B、intx=3,y=3,z=3;
C、int3=x=y=z;D、intx,y,z=3;
73、若已定义:
inta,b=6;执行语句a=--b;后变量a,b的值分别是(C)
A、5、6B、6、5C、5、5D、6、6
74、表达式strlen(“abcde\0gh”)的值为(A)
A、5B、4C、9D、7
75、若已定义inta=3,b=2;以下程序段的运行结果是(D)
if(a==3)
{if(b==1)
{a+=b;
printf(“%d\n”,a);}
else
{a-=b;
printf(“%d\n”,a);}
}
else
printf(“%d\n”,a+3);
A、5B、6C、3D、1
76、以下程序的输出结果是(B)
#include
voidmain()
{inta[]={11,12,13,-4,-5,-6},*p=a+sizeof(a)/sizeof(int)-1;
while(p>=a)
{
(*p)++;
p--;
}
printf(“%d\n”,*(p+1));
}
A、11B、12C、-5D、-4
77、以下程序段运行后k的值为(C)。
inti,k=3;
for(i=1;i<=5;i++)
{k+=1;
if(k%2==0)
continue;
k+=2;
}
A、10B、9C、12D、11
78、若已定义:
intx=1,y=2,n;则(B)是正确的。
A、n=2x+yB、n=(x=2)*(y=3)
C、(x+0.8)%5D、n+2=x*3
79、若定义inta[3][4];,无法正确应用数组a元素的是(B)
A、a[0][‘1’-48]B、a[‘0’][1]
C、a[‘\0’][5-2]D、a[‘b’-97][1]
80、若以定义:
chars[20]=”Good\0Helloworld”;则函数strlen(s+5)的值是(C)
A、6B、8C、10D、5
81、以下程序运行后的结果是(B)
#include
voidmain()
{
FILE*fp;
inti;
charinfor[][20]={“first\n”,”second\n”,”third\n”,”bye!
”};
fp=fopen(“c:
\\test.txt”,”w”);
if(fp)
for(i=0;ifprintf(fp,”%s”,infor[i]);
fclose(fp);
}
A、程序运行后,在test.txt文件内容的后面追加了新的四行infor中存储的串信息。