C语言程序设计课后答案.docx
《C语言程序设计课后答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课后答案.docx(37页珍藏版)》请在冰点文库上搜索。
![C语言程序设计课后答案.docx](https://file1.bingdoc.com/fileroot1/2023-6/23/3545c5ee-f9d0-4256-817d-611e8c89e6fc/3545c5ee-f9d0-4256-817d-611e8c89e6fc1.gif)
C语言程序设计课后答案
第一章
1.以下不合法的用户标识符是
A.j2_KEY
B.Double
C.4d
D._8_
2.以下叙述中错误的是
A.C语言源程序经编译后生成后缀为.obj的目标程序
B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D.C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
3.下列符号中,正确的C++标识符是______。
A)、enum
B)、2b
C)、foo-9
D)_32
4.下列叙述中错误的是
A)计算机不能直接执行用C语言编写的源程序
B)C程序经C编译后,生成后缀为.obj的文件是一个二进制文件
C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行
5.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是
A)大写字母B)连接符C)数字字符D)下划线
6.以下叙述中错误的是
A)C语言是一种结构化程序设计语言
B)结构化程序有顺序、分支、循环三种基本结构组成
C)使用三种基本结构构成的程序只能解决简单问题
D)结构化程序设计提倡模块化的设计方法
7.对于一个正常运行的C程序,以下叙述中正确的是
A)程序的执行总是从main函数开始,在main函数结束
B)程序的执行总是从程序的第一个函数开始,在main函数结束
C)程序的执行总是从main函数开始,在程序的最后一个函数中结束
D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束8.c语言源程序名的后缀是
a).exeb).cc).objd).cp
9.可在c程序中用做用户标识符的一组标识符是
a)andb)datec)hid)case_2007y-m-ddr.tombigl10.以下叙述中正确的是
a)c语言程序将从源程序中第一个函数开始执行
b)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行c)c语言规定必须用main作为主函数名,程序将从此开始执行,在此结束d)main可作为用户标识符,用以命名任意一个函数作为主函数
11.以下叙述中正确的是()
A)C程序中的注释只能出现在程序的开始位置和语句的后面
B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序书写格式自由,一个语句可以写在多行上
D)用C语言编写的程序只能放在一个程序文件中
12.以下选项中不合法的标识符是()
A)printB)FORC)&aD)_00
13.以下叙述中正确的是
A)C程序的基本组成单位是语句B)C程序中每一行只能写一条语句
C)简单C语句必须以分号结束D)C语句必须在一行内写完
14.计算机能直接执行的程序是
A)源程序B)目标程序C)汇编程序
D)可执行程序
2009年3月
15.一下选项中合法的标识符是
A)1_1
B)1-1
C)_11
D)1__
2009年9月
16.以下选项中,能用作用户标识符的是
A)void
B)8_8
C)_0_
D)unsigned
2010年3月
17.以下叙述正确的是
A)C语言程序是由过程和函数组成的
B)C语言函数可以嵌套调用,例如:
fun(fun(x))
C)C语言函数不可以单独编译
D)C语言中除了main函数,其他函数不可以作为单独文件形式存在
18.以下关于C语言的叙述中正确的是
A)C语言中的注释不可以夹在变量名或关键字的中间
B)C语言中的变量可以再使用之前的任何位置进行定义
C)在C语言算术的书写中,运算符两侧的运算数类型必须一致
D)C语言的数值常量中夹带空格不影响常量值的正确表示
19.以下C语言用户标示符中,不合法的是
A)_1B)AaBcC)a_bD)a--b
2010年9月
20.以下关于结构化程序设计的叙述中正确的是
A)一个结构化程序必须同时由顺序、分支、循环三种结构组成
B)结构化程序使用goto语句会很便捷
C)在C语言中,程序的模块化是利用函数实现的
D)由三种基本结构构成的程序只能解决小规模的问题
21.以下关于简单程序设计的步骤和顺序的说法中正确的是
A)确定算法后,整理并写出文档,最后进行编码和上机调试
B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构
22.以下叙述中错误的是
A)C程序在运行过程中所有计算都以二进制方式进行
B)C程序在运行过程中所有计算都以十进制方式进行
C)所有C程序都需要编译链接无误后才能运行
D)C程序中整型变量只能存放整数,实型变量只能存放浮点数
第三章
1.下面说法错误的是:
(C)
A.do…while{}语句至少执行一次循环
B.break语句可以跳出switch语句和循环语句
C.每个if一定有一个else和它对应
D.每个else一定有一个if和它对应
2.以下程序输出结果为:
#include“stdio.h”
main()
{
Charc=’c’;
printf(“%c”,c+2);}
输出结果是:
(B)
A.有语法错误,不能通过编译
B.e
C.99
D.c
3.判断字符串a和b相等的正确表达式是:
(C)
A.if(a=b)
B.if(strcpy(a,b))
C.if(strcmp(a,b)==0)
D.if(a==b)
4.与y=a>b?
a:
b语句等价的程序段的是:
(A)
A.if(a>b)y=a;elsey=b;
B.if(a>b)y=b;elsey=a;
C.if(a>b)y=a;y=b;
D.if(a>b)y=b;y=a;
5.运行以下程序段时编译出错,其原因是:
(D)
charc1=’a’,c2=’123’;
printf(“%c,%d\n”,c1,c2);
A.字符串要用“123”表示
B.’123’只能赋值给字符数组
C.C2是字符变量,不能用%d格式输出
D.’123’不是正确的字符常量,不能赋值给字符变量C2
6.下列程序执行后输出结果是:
(A)
main()
{
intm=3;
printf(“f(%d)=%d”,m,(m>=0?
1:
0))
}
A.f(3)=1
B.f(3)=0
C.f(3)=3
D.f
(1)=3
7.下列程序执行后输出结果是:
(A)
main()
{intx=1,y=2,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;
case1:
b++;
}
break;
case2:
a++;b++;break;
}
printf(“a=%d,b=%d\n”,a,b);
}
A.a=0,b=0
B.a=1,b=0
C.a=0,b=1
D.a=1,b=1
8.以下程序执行后输出的结果是:
(C)
main()
{inta,b,x=45;
a=b=0;
if(!
a)x--;
if(b)x=30;
elsex=40;
printf(“x=%d\n”,x);
}
A.x=0
B.x=30
C.x=40
D.x=44
9.判断char型变量ch是否为大写字母的正确表达式是(C)。
A.‘A’<=ch<=’Z’
B.(ch>=’A’)OR(ch<=’Z’)
C.(ch>=’A’)&&(ch<=’Z’)
D.(‘A’<=ch)AND(‘Z’>=ch)
10.若希望当inta;a的值为奇数时,表达式的值为“真”,a的值为偶数时,表达式的值为“假”。
则以下不能满足要求的表达式是(D)。
A.a%2==1
B.!
(a%2==0)
C.a%2
D.!
(a%2)
11.正确判断字符串a和b相等的表达式为:
(D)
A.a==b
B.a=b
C.strcpy(a,b)
D.strcmp(a,b)==0
12.与y=a>b?
a:
b语句等价的程序段的是:
(A)
A.if(a>b)y=a;elsey=b;
B.if(a>b)y=b;elsey=a;
C.if(a>b)y=a;y=b;
D.if(a>b)y=b;y=a;
13.语句if(!
e)中e等于(A)时条件为真。
A.0
B.1
C.非0
D.2
14.以下程序的运行结果是(C)。
#include"stdio.h"
main()
{intx,a=10,b=20,c=5;
if(a
{x=-1;
if(b!
=10)
{if(!
c)
{x=1;}
else
{x=2;}
}
}
printf("%d\n",x);
}
A.-1
B.1
C.2
D.不确定值
15.以下程序
main()
{
inta=1,b=2,c=3,d=4,m=6;
if(a>b)
if(c>d)m=3;
elsem=4;
elsem=5;
printf("%d",m);
}
_执行后输出的结果(C)。
A.3
B.4
C.5
D.6
16.表达式y<3?
-1.0:
1.0的值是类型应是(B)。
A.不确定B.实型C.整型D.无符号整型17.以下程序:
#include
main()
{intx=1,y=3,z=0;
if(!
z)z++;
if(x)z--;
if(y)z-=1;
printf("%d\n",z);
}
_执行后输出的结果是:
(A)
A.-1B.0C.1D.2
18.以下程序执行后输出的结果是:
(B)
#include
main()
{inta=1,b=0,c=2;
a-=b+(b&&c);
printf("%d\n",a);}
_
A.0
B.1
C.2
D.3
19.以下程序:
(C)
#include
main()
{inta=0,b=1,c=2,d;
d=(a+a||b)+c;
printf("%d",d);}
A.1
B.2
C.3
D.4
20.若有a=-2,b=3,c=-4,d=5,则表达式a>b?
a:
c>d?
c:
d的值为:
(D)
A.3
B.-2
C.-4
D.5
21.以下程序:
inta=0,b=1,c=0;
if(a=b+c)printf("==");
elseprintf("!
=");
下列判断正确的是:
(A)
A.输出:
==
B.输出:
!
=
C.没有输出
D.语法错误,编译不通过
22.以下程序:
main()
{
inta=4,b=1,c=0;
a/=b+(b||c);
printf("%d\n",a);
}
执行后输出的结果是:
(A)
A.2
B.4
C.0
D.1
23.以下程序:
main()
{
floatx=2.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.000000
B.0.250000
C.0.500000
D.1.000000
24.以下程序:
main()
{
intx=0,y=0,z=0;
switch(x)
{case0:
x++;break;
case1:
y++;break;
case2:
z++;break;
}
printf("%d\n",x+y+z);
}
执行后输出的结果是:
(B)
A.0
B.1
C.2
D.3
25.下列语句中正确的是(A)。
A.chara,b,c;B.intx=y=l0:
C.floatx;y;
D.charstrlstr2str2:
26.执行下面两个语句后.输出的结果为(C)。
charc1=97,c2=98;
printf(“%d%c“,c1,c2);
A.ab
B.9798
C.97b
D.a98
27.下列程序:
main()
{
intx,y,z;
x=5,y=8,z=25;
if(z>x+y)
z+=x*y;
else
z-=x*y;
printf("%d\n",z);
}
执行后输出的结果是:
(A)
A.65
B.15
C.40
D.25
28.下列程序从键盘输入65后,程序的运行结果为:
(D)
main()
{
intm;
scanf(“%d“,&m);
switch(m/10)
{
case10:
Case9:
printf(“优秀”):
break:
case8:
printf(“良好”).break:
case7:
printf(“中等”):
break:
case6:
printf(“及格”):
break.
default:
prJntf(“不及格”):
}
}
A.不及格
B.优秀
C.中等
D.及格
第二卷
说明:
(1)第二卷均为填空题,在阅读和原题程序的基础上,在第二卷答题卡上编号对应的栏目中填入适当的字符,语句,以构成一个正确的C语言程序。
(2)每空栏3分,10个空栏共30分。
1.以下程序将两个数从大到小输出:
#include
main()
{
floata,b,1;
scanf("2",&a,&b);
if(a>b)
(
temp=a;
3;
b=temp;
}
printf("%f,%f",a,b);
}
答案:
printf("%f,%f",a,b);应改为printf("%f,%f",b,a);
1.temp
2.%f%f
3.a=b
2.
以下程序是从键盘输入一个字符.如果它是一个大写字母。
则把它变成小写字母,如果它是一个小写字母.则把它变成大写字母,其它字符不变。
#include
main()
{chartch;
scanf("%c",4);
if(5)tch=tch+32;
elseif(tch>='a'&&tch<='z')6;
printf("%c",tch);
}
答案:
4.&tch
5.tch>='A'&&tch<='Z'
6.tch=tch-32
2.下列语句正确的是:
(C)
A.cnar:
a,b,cB.chara;b;c;
C.intx,y;D.intxyz;
8.以下程序:
main()
{
intx=2,y=4,z=7,m;
m=x&&y+z);
printf(“%d”,m);
}
输出结果是()如果m=x&&(y+z);答案B;如果m=(x&&)y+z;答案AA.8B.1
C.0
D.12
16.以下程序:
main()
{
intx=5,y=4,z=3;
if(xelseprintf(“####”);
}
执行后输出的结果是:
(A)
A.****
B.无输出结果
C.####
D.存在语法错误
23.下列程序:
main()
{itnx,y,z;
x=10,y=-15,z=3;
if(x+y>z)
x=x*2;
else
x=x*5
printf(“%d\n”,x)
}
则执行后输出结果是:
(B)
A.20
B.50
C.10
D.15
31.从键盘输入B,以下程序的运行结果是:
(B)
main()
{chargrade;
scanf(“%c”,&grade);
switch(grade)
{case‘A’;printf(“>=90”);
case‘B’;
case‘C’;printf(“>=60”);break;
case‘D’;printf(“<60”);
default:
printf(“error”);
}
}
A.>=60<60error
B.>=60
C.<60
D.error
6.以下程序
main()
{intx1=3,x2=0,x3=0;
if(x1=x2+x3)printf(“****”);
elseprintf(“####”)
}
执行后输出的结果是(C)。
A.****
B.存在语法错误
C.####
D.无输出结果
15.设x,y,z都是为int型变量,且x=8,y=10,z=15;则以下的表达式中值为0的表达式是(D)。
Ax&&yB.x((xz||1)
17.以下程序:
main()
{inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf(“%d,%d,%d\n”,i,j,k);
}
执行后输出结果是(D)。
A.1,1,2
B.2,2,1
C.2,2,3
D.2,2,2
21.以下程序:
main()
{intx=16;
if(x++>16)
printf(“%d\n”,x++);
elseprintf(“%d\n”,x--);
}
执行后输出结果是(B)
A.18B.17C.16D.15
24.以下程序:
main()
{intm=5;
switch(m/2)
{case1:
m++;
case2:
m+=3;
case5:
m+=6;break;
default:
m-=7;
}
printf(“%d\n”,m);
}
执行后输出结果是(C)
A.8
B.-2
C.14D10
28.当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值为(B)。
if(a
if(c
x=1;
elseif(aif(bx=2;
else
x=3;
else
x=6;
elsex=7;
供选择的答案是:
A.1
B.2C.3D.6
试题三下列程序是将两个数从小到大输出。
#include
main()
{floata,b,8;
scanf(9,&a,&b);
if(a>b)
{t=a;
10;
b=t;
}
printf(“%f,%f”,a,b);
}
答案
8t
9“%f%f”
10a=b
3.设a、b和c都是int型变量,且a=3,b=4,c=5:
则以下的表达式中,值为0的表达式是(D)。
A.a&&b;
B.a<=b;
C.a||b+c&&b-c;
D.!
((a
c||1)
5.执行x=5>1+2&&2||2*4<4-!
0;后,x的值为(C)。
A.-1
B.0
C.1
D.5
8.假定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.4
B.3
C.2
D.1
22.若输入B,以下程序的运行结果为(C)
main()
{chargrade;
scanf(“%c”,&grade);
switch(grade)
{case‘A’;printf(“>=85”);
case‘B’;
case‘C’;printf(“>=60”);
case‘D’;printf(“<60”);
default:
printf(“error”);
}
}
A.>=85
B.>=60
C.>=60<60error
D.error
12.标有/**/的语句执行次数是_________。
inty,i;
for(i=0;i<20;i++)
{if(i%2==0)
continue;
y+=i;/**/
}
(A)20(B)19(C)10(D)9
21.以下程序的运行情况是_________。
main()
{inti=1,sum=0;
while(i<10)
{sum=sum+1;
i++;}
printf(“i=%d,sum=%d”,i,sum);
}
(A)i=10,sum=9(B)i=9,sum=9(C)i=2,sum=1(D)运行发现错误
23.有如下程序
main()
{intx=23;
do{printf(“%d”,x--);}
while(!
x);
}
该程序的执行结果是_________。
(A)321(B)23(C)不输出任何内容(D)陷入死循环
25.以下程序的输出结果是_________。
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=10)break;
if(b%3==1)
{b+=3;continue;}
}
printf(“%d\n”,a);
}
(A)101(B)6(C)5(D)4
2006年1月与第四章循环结构相关的题目2题
8.以下程序:
main()
{intx=1,y=1;
while(y<=5)
{if(x>=10)break;
if(x%2==1)
{x+=5;
continue;
}
x-=3;
y++;
}
printf(“%d,%d”,x,y);
}
执行后输出结果是_________。
(A)10,6(B)7,6(C)10,3(D)7,3
22.以下程序:
main()
{inta=5;
while(!
(a—>5))
{switch(a)
{case1:
a++;
case4:
a+=4;
case5:
a+=5;break;
default:
a-=5;
}
}
printf(“%d\n”,a);
}
执行后输出的结果是_________。
(A)12(B)7(C)5(D)13
30.在执行以下程序时,如果从键盘上输入:
ABCdef,则输出结果为。
#include“stdio.h”
main()
{
charch;
while((ch=getchar())!
=‘\n’)
{if(ch>=’A’&&ch<=’Z’)
ch=ch+32;
elseif(ch>=’a’&&ch<=’z’)
ch=ch-32;
prin