C语言程序设计习题集及答案修改.docx
- 文档编号:18161125
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:27
- 大小:57.32KB
C语言程序设计习题集及答案修改.docx
《C语言程序设计习题集及答案修改.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题集及答案修改.docx(27页珍藏版)》请在冰点文库上搜索。
C语言程序设计习题集及答案修改
C语言程序设计
习题集
基础知识
一单项选择题(每题2分,共44分)
1以下叙述正确的是___。
AC程序基本组成单位是语句BC程序每一行只能写一个语句
C简单C语句必须以分号作为结束符D注释语句可以嵌套
2一个C语言程序是从___开始执行的。
A程序中第一个函数B名为main的函数
C包含文件(头文件)的第一个函数D程序中的第一个语句
4下面标识符中,合法的用户标识符是___。
A1abcBincludeCa-b-c123Dchar
8已知inti;,则执行语句i=2.6;后,i的值为___。
A2B3C2.6D不确定
10若y为int型变量,则执行以下语句后,y的值是___。
y=8;y+=y-=y*y;
A64B–56C–112D–48
11以下合法的浮点型常量是___。
Ae-3B1.5e+2.4C3.14e+2LD3.14e+5
14若x、y、z均为整型常量,且a=100,则执行下列语句后的z值为___。
x=a++;y=--a;z=x+y-a--;
A100B400C200D300
18若有定义:
inta=8,b=5,c;chard='A';,则执行语句c=a/b+d%a+0.5;后c的值为___。
A2B2.5
C3D类型不一致,无法计算,编译出错
19在有以下程序:
intmain()
{inti=10,j=1;
i=i+j++;
printf("%d,%d,%d\n",i++,++j,i);
intmain()
执行后输出结果是___。
A12,3,11B12,2,11C11,3,11D12,3,12
20已知inti=65;,则putchar(i);printf("%d",i);printf("%c",i);的输出结果为___。
AA,65,AB65,65,ACA,A,65DA,A,A
21已知inty,a,i=1;,则语句printf("%d,%d",-i++,(y=a=3.6*3));的输出结果为___。
A-1,10B-2,1.8C0,3D1,18
22有以下程序:
intmain()
{chara,b,c,d;
a='\';b='\xbc';
c='\0xab';d='\023';
printf("%c%c%c%c\n",a,b,c,d);
return0;
return0;
}
编译时出现错误,以下叙述中正确的是___。
A程序中只有a='\';语句不正确Bb='\xbc';语句不正确
Cd='\023';语句不正确Da='\';和c='\0xab';语句都不正确
二填空题(第1题2分,其余每题3分,共56分)
1设x为int型变量,请写出描述“x是偶数”的表达式是___。
2已知scanf("a=%d,b=%d,c=%d",&a,&b,&c);,若从键盘输入2、3、4三个数分别作为变量a、b、c的值则正确的输入形式是___。
3设有语句inta=3;,则执行了语句a+=a-=a*a后,变量a的值是___。
10设a、b、c为整形变量,且a=2、b=3、c=4,则执行完语句a*=16+(b++)-(++c);之后,变量a的值为___。
12以下程序的结果为___。
intmain()
{inta=2,b=3,c,d;
c=(a++)+(a++)+(a++);
d=(++b)+(++b)+(++b);
printf("a=%dc=%d\n",a,c);
printf("b=%dd=%d\n",a,d);
return0;
}
顺序、选择结构程序设计
一单项选择题(每题2分,共40分)
7以下程序运行后的输出结果是___。
intmain()
{intx=4,y=7;
x-=y;y+=x;
printf("%d%d\n",x,y);
return0;
}
A47B-3-3C-311D-34
10设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是___。
A'a'&&'b'Ba&&b||cCa&&b&&cDa||b&&c
11在嵌套使用if语句时,C语言规定else总是___。
A和之前及其具有相同缩进位置的if配对
B和之前及其最近的if配对
C和之前及其最近不带else的if配对
D和之前的第一个if配对
12若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为___。
Aa<>0B!
aCa=0Da
13以下程序运行后的输出结果是___。
intmain()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec++;
printf("%d\n",c);
return0;
}
A0B1C2D3
14若k是int型变量,下面的程序段的输出结果是。
k=-3;
if(k<=0)printf("####")
elseprintf("&&&&");
A####B&&&&
C####&&&&D有语法错误,无输出
15以下程序运行后的输出结果是___。
intmain()
{inta=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
elsed=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
return0;
}
A0,1,2,0B0,0,0,3C1,1,2,0D编译有错
16以下程序运行后的输出结果是___。
intmain()
{intx1=1,x2=0,x3=0;
if(x1=x2+x3)printf("****");
elseprintf("####");
return0;
}
A****B有语法错误C####D无输出结果
17当a=1,b=3,c=5,d=4时,执行下面一行程序后,x的值是___。
if(a
A1B2C3D6
18下列叙述中正确的是___。
Abreak语句只能用于switch语句
B在switch语句中必须使用default
Cbreak语句必须及switch语句中的case配对使用
D在switch语句中不一定使用break语句
20以下程序运行后的输出结果是___。
#include
intmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
return0;
}
Aa=2,b=1Ba=1,b=1Ca=1,b=0Da=2,b=2
二填空题(每题3分,共30分)
8为表示关系x≥y≥z,应使用C语言表达式___。
9下面的程序段的输出结果是___。
intx=3;
if((x%2)?
printf("**%d",x):
printf("##%d\n",x));
10以下程序运行后的输出结果是___。
intmain()
{intm=5;
switch(m/2)
{case1:
m++;
case2:
m+=3;
case5:
m+=6;break;
default:
m-=7;
}
printf("%d\n",m);
return0;
}
三程序填空(每空5分,共30分)
1下列程序的输出结果是16.00,请填空。
intmain()
{inta=9,b=2;
floatx=【1】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n",z);
return0;
}
循环结构程序设计
一单项选择题(每题2分,共40分)
1以下程序中,while循环的循环次数是___。
intmain()
{inti=0;
while(i<10)
{if(i<1)continue;
if(i==5)break;
i++;
}
……
return0;
}
A1B10C6D死循环
2以下程序的执行结果是___。
intmain()
{intn=9;
while(n>6){n--;printf("%d",n);}
return0;
}
该程序的输出结果是
A987B876C8765D9876
3以下程序段,while循环执行的次数是___。
intk=0;
while(k=1)k++;
A无限次B有语法错C一次也不执行D执行1次
4以下叙述正确的是___。
Ado-while语句构成的循环不能用其它语句构成的循环来代替
Bdo-while语句构成的循环只能用break语句退出
C用do-while语句构成的循环,在while后的表达式为非零时结束循环
D用do-while语句构成的循环,在while后的表达式为零时结束循环
6以下程序的执行结果是___。
intmain()
{intx=23;
do{printf("%d",x--);}while(!
x);
return0;
}
A321B23C不输出任何内容D陷入死循环
7有以下程序段,输出结果是___。
intx=3;
do{printf("%d",x-=2);}while(!
(--x));
A1B30C1-2D死循环
8以下程序的输出结果是___。
intmain()
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;
}
}
printf("%d\n",a);
return0;
}
A31B13C10D20
9以下程序的输出结果是___。
intmain()
{inti=0,a=0;
while(i<20)
{for(;;)
if((i%10)==0)break;
elsei--;
i+=11;a+=i;
}
printf("%d\n",a);
return0;
}
A21B32C33D11
10以下循环体的执行次数是___。
intmain()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)printf("%d\n",i);
return0;
}
A3B2C1D0
11下列程序的输出结果是___。
intmain()
{inti,j,m=0,n=0;
for(i=0;<2;i++)
for(j=0;j<2;j++)
if(j>=i)m=1;n++;
printf("%d\n",n);
return0;
}
A4B2C1D0
12下列程序的输出结果是___。
intmain()
{inti,sum;
for(i=1;i<=3;sum++)sum+=i;
printf("%d\n",sum);
return0;
}
A6B3C死循环D0
13以下程序执行后sum的值是___。
intmain()
{inti,sum;
for(i=1;i<6;i++)sum+=i;
printf("%d\n",sum);
return0;
}
A15B14C不确定D0
14以下程序执行后的输出结果是___。
intmain()
{inti,n=0;
for(i=2;i<5;i++)
{do{if(i%3)continue;n++;}while(!
i);
n++;
}
printf("n=%d\n",n);
return0;
}
An=5Bn=2Cn=3Dn=4
16以下程序执行后的输出结果是___。
intmain()
{intx=1,y=1;
while(y<=5)
{if(x>=10)break;
if(x%2==0)
{x+=5;continue;}
x-=3;y++;
}
printf("%d,%d",x,y);
return0;
}
A6,6B7,6C10,3D7,3
17以下程序执行后的输出结果是___。
intmain()
{inta=5;
while(!
(a-->5))
{switch(a)
{case1:
a++;
case4:
a+=4;
case5:
a+=5;break;
default:
a-=5;
}
}
printf("%d\n",a);
return0;
return0;
}
A12B7C5D13
20当执行以下程序时,___。
inta=1;
do{a=a*a;}while(!
a);
A循环体将执行1次B循环体将执行2次
C循环体将执行无限次D系统将提示有语法错误
二填空题(每空3分,共33分)
1若输入字符串:
abcde<回车>,则以下while循环体将执行___次。
while((ch=getchar())=='e')printf("*");
2以下while循环执行的次数是___。
k=0;while(k=10)k=k+1;
3下列程序的输出结果是___。
intmain()
{intx=0,y=5,z=3;
while(z-->0&&++x<5)y=y-1;
printf("%d,%d,%d\n",x,y,z);
return0;
}
6以下程序的输出结果是___。
intmain()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
return0;
}
7要使以下程序段输出10个整数,请填入一个整数。
for(i=0;i<=___;printf("%d\n",i+=2));
三程序填空题(每空3分,共27分)
数组
一单项选择题(每题2分,共40分)
1以下对一维整型数组a的正确定义(说明)的是___。
Ainta(10);B)intn=10,a[n];Cintn;D#defineSIZE10
scanf("%d",&n);inta[SIZE];
inta[n];
2若有定义(说明)inta[10];,则对数组a的元素正确引用的是___。
Aa[10]Ba[3.5]Ca(5)Da[10-10]
5以下对一维整型数组a初始化的语句中正确的是___。
Ainta[10]=(0,0,0,0,0);Binta[10]=();
Cintx=2,a[10]={10*x};Dinta[10]={0};
8以下程序的输出结果是___。
intmain()
{inty=18,i=0,j,a[8];
do{a[i]=y%2;i++;y=y/2;}while(y>=1);
for(j=i-1;j>0;j--)printf("%d",a[j]);
return0;
}
A1000B1001C1010D1100
9以下对二维数组a的正确定义(说明)的是___。
Ainta[3][];Bfloata(3,4);Cdoublea[1][4];Dfloata(3)(4);
10若有定义(说明)inta[3][4];,则对数组a的元素的引用非法的是___。
Aa[2][2*1]Ba[1][3]Ca[4-2][0]Da[0][4]
11以下不能对二维数组a进行正确初始化的语句是___。
Ainta[2][3]={0};Binta[][3]={{1,2},{0}};
Cinta[2][3]={{1,2},{3,4},{5,6}};Dinta[][3]={1,2,3,4,5,6};
14以下程序的输出结果是___。
intmain()
{inti,a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
return0;
}
A0650B1470C5430D输出值不定
16下列描述不正确的是___。
A字符型数组中可以存放字符串
B可以对字符型数组进行整体输入和输出
C可以对整型数组进行整体输入和输出
D不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
17对于以下定义,叙述正确的是___。
charx[]="abcdef";
charx[]={'a','b''c','d','e','f'};
A数组x和数组y等价B数组x和数组y的长度相等
C数组x的长度大于数组y的长度D数组x的长度小于数组y的长度
18以下选项中,不能正确赋值的是___。
Achars1[10];s1="Ctest";Bchars2[]={'C','t','e','s','t'};
Cchars3[20]="Ctest";Dchars4[30];strcpy(s4,"Ctest");
19若有定义和语句:
chars=[10];s="abcd";printf("%s\n",s);,则输出结果是___。
(以下□表示空格)
AabcdBaCabcd□□□□□D编译不通过
AABC6789BABC67C12345ABC6DABC45678
二填空题(每空3分,共24分)
3下列程序的输出结果是___。
intmain()
{inti,a[10];
for(i=9;i>=0;i--)a[i]=10-i;
printf("%d%d%d\n",a[2],a[5],a[8]);
return0;
}
三程序填空题(每空3分,共36分)
函数
一单项选择题(每题2分,共40分)
1以下正确的函数定义是___。
Adoublefun(intx,inty)Bdoublefun(intx,y)
{z=x+y;returnz;}{intz;returnz;}
Cfun(x,y)Ddoublefun(intx,inty)
{intx,y;doublez;{doublez;
z=x+y;returnz;}returnz;}
2以下正确的说法是___。
A实参和及其对应的形参各占用独立的存储单元
B实参和及其对应的形参共占用一个存储单元
C有当实参和及其对应的形参同名时才共占用相同的存储单元
D形参是虚拟的,不占用存储单元
3若调用一个函数,且此函数中没有return语句,则正确的说法是___。
A该函数没有返回值B该函数返回若干个系统默认值
C能返回一个用户所希望的函数值D返回一个不确定的值
4以下正确的描述是___。
A函数的定义可以嵌套,但函数的调用不可以嵌套
B函数的定义不可以嵌套,但函数的调用可以嵌套
C函数的定义和函数的调用均不可以嵌套
D函数的定义和函数的调用均可以嵌套
5若用数组名作为函数调用的实参,传递给形参的是___。
A数组的首地址B数组中第一个元素的值
C数组中的全部元素的值D数组元素的个数
6以下不正确的说法是___。
A在不同函数中可以使用相同名字的变量
B形式参数是局部变量
C在函数内定义的变量只在本函数范围内有定义
D在函数内的复合语句中定义的变量在本函数范围内有定义
9调用函数的实参及被调用函数的形参应有如下关系___。
A只要求实参及形参个数相等B只要求实参及形参顺序相同
C只要求实参及形参数据类型相同D上述三点均需具备
10凡在函数中未指定存储类别的变量,其隐含的存储类别是___。
A自动B静态C外部D寄存器
11在源程序的一个文件中定义的全局变量的作用域是___。
A在本文件的全部范围B该程序的全部范围
C一个函数的范围D从定义该变量的位置开始至该文件的结束
12下列程序运行后的输出的数据是___。
intsum(intn)
{intp=1,s=0,i;
for(i=1;i<=n;i++)s+=(p*=i);
returns;
}
intmain()
{printf("sum(5)=%d\n",sum(5));return0;
}
Asum(5)=151Bsum(5)=152Csum(5)=153Dsum(5)=155
14运行下面的程序后,其输出结果是___。
intmain()
{inta=6,b=2,c;
c=f(a)/f(b);
printf("%d\n",c);
return0;
}
intf(intx)
{inty;
y=x++*x++;
returny;
}
A9B6C36D18
18下列程序运行后的输出结果是___。
intmain()
{intm=4,n=2,k;
k=fun(m,n);printf("%d\n",k);
k=fun(m,n);printf("%d\n",k);
return0;
}
intfun(intx,inty)
{staticintn=3,i=2;
i+=n+1;n=i+x+y;
return(n);
}
A12B12C12D12
12232516
二填空题(每空3分,共30分)
1函数调用语句:
fun((a,b),(c,d,e));,实参个数为___。
2凡在函数中未指定存储类别的局部变量,其默认的存储类别为___。
3在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变量需要定义的存储类别为___。
4C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是___。
5运行下面程序,其输出结果是___。
#include
in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 习题集 答案 修改