大学C语言设计教程习题.docx
《大学C语言设计教程习题.docx》由会员分享,可在线阅读,更多相关《大学C语言设计教程习题.docx(71页珍藏版)》请在冰点文库上搜索。
大学C语言设计教程习题
第一章习 题
一、选择题
1.以下叙述不正确的是()
A.在C程序中,语句之间必须要用分号";"分隔
B.若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数
C.在C程序中,无论是整数还是实数都能正确无误地表示
D.在C程序中,%是只能用于整数运算的运算符
2.一个C语言程序总是从()开始执行。
A.主过程B.主函数
C.子程序D.主程序
3.一个完整的可运行的C源程序中()。
A.可以有一个或多个主函数B.必须有且仅有一个主函数
C.可以没有主函数D.必须有主函数和其他函数
4.构成C语言源程序的基本单位是()。
A.子程序B.过程C.文本D.函数
5.以下说法中正确的是()
A.C语言程序总是从第一个定义的函数开始执行
B.在C语言程序中,要调用的函数必须放在main()函数中定义
C.C语言程序总是从main()函数开始执行
D.C语言程序中的main()函数必须放在程序的开始部分
6.C语言规定,一个C源程序的主函数名必须为()。
A.programB.includeC.mainD.function
7.下列说法正确的是()。
A.在书写C语言源程序时,每个语句以逗号结束
B.注释时,“/”和“*”号间可以有空格
C.无论注释内容的多少,在对程序编译时都被忽略
D.C程序每行只能写一个语句
8.在VisualC++6.0开发环境下,C程序按工程(project)进行组织,每个工程可包括( )C/CPP源文件,但只能有( )main函数。
A.1个B.2个
C.3个D.1个以上(含1个)
9.C语言源程序文件的后缀是( ),经过Compile后,生成文件的后缀是( ),经过Build后,生成文件的后缀是( )。
A..objB..exeC..cD..doc
10.C语言的程序一行写不下时,可以()
A)用逗号换行B)用分号换行
C)在任意一空格处换行D)用回车符换
第二章习 题
一、选择题
1.以下不正确的C语言标识符是()。
A.ABCB.abcC.a_bcD.ab.c
2.C语言中最基本的非空数据类型包括()。
A.整型、浮点型、无值型B.整型、字符型、无值型
C.整型、浮点型、字符型D.整型、浮点型、双精度型、字符型
3.若有定义:
inta=7;floatx=2.5;y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是:
()。
A.2.500000B.2.750000C.3.500000D.0.000000
4.C语言中运算对象必须是整型的运算符是()。
A.%B./C.=D.〈=
5.若已定义x和y为int类型,则执行了语句x=1;y=x+3/2;后y的值是()。
A.1B.2C.2.0D.2.5
6.若x,y,z均为int型变量,则执行以下语句后的输出为()。
x=(y=(z=10)+5)-5;
printf("x=%d,y=%d,z=%d\n",x,y,z);
y=(z=x=0,x+10);
printf("x=%d,y=%d,z=%d\n",x,y,z);
A.X=10,Y=15,Z=10B.X=10,Y=10,Z=10
X=0,Y=10,Z=0X=0,Y=10,Z=10
C.X=10,Y=15,Z=10D.X=10,Y=10,Z=10
X=10,Y=10,Z=0X=0,Y=10,Z=0
7.若有以下程序段
inta=1,b=2,c;
c=1.0/b*a;
则执行后,c的值是()。
A.0B.0.5C.1D.2
8.能正确表示逻辑关系:
“a≥10或a≤0”的C语言表达式是()。
A.a>=10ora<=0B.a>=0|a<=10
C.a>=10&&a<=0D.a>=10||a<=0
9.下列字符序列中,不可用作C语言标识符的是()。
A.xds426B.No.1C._okD.zwd
10.在printf()函数中,反斜杠字符'\'表示为()。
A.\'B.\0C.\nD.\\
11.已知有变量定义:
inta;charc;用scanf(“%d%c”,&a,&c);语句给a和c输入数据,使30存入a,字符‘b’存入c,则正确的输入是()。
A.30’b’<回车>B.30b<回车>
C.30<回车>b<回车>D.30b<回车>
12.设先有定义:
inta=10;
则表达式a+=a*=a的值为()。
A.10B.100C.1000D.200
13.设先有定义:
inta=10;
则表达式(++a)+(a--)的值为()。
A.20B.21C.22D.19
14.有如下程序
#include
main()
{
inty=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
运行该程序的输出结果是()。
A.34B.42C.43D.33
15.假定x、y、z、m均为int型变量,有如下程序段:
x=2;y=3;z=1;
m=(yy:
x;
m=(zm:
y;
则该程序运行后,m的值是()。
A.4B.3C.2D.1
16.以下选项中合法的字符常量是()。
A."B"B.'\010'C.68D.D
17.设x=3,y=4,z=5,则表达式((x+y)>z)&&(y==z)&&x||y+z&&y+z的值为
A.0B.1C.2D.3
18.如果a=1,b=2,c=3,d=4,则条件表达式a
a:
cc:
d的值为()。
A.1B.2C.3D.4
19.设intm=1,n=2;则m++==n;的结果是()。
A.0B.1C.2D.3
二、填空题
1.及乘法运算具有相同优先级的算术运算符是。
2.在具有嵌套括号的算术表达式中,____括号首先被计算。
1.表达式10/3的结果是;10%3的结果是。
2.执行语句:
inta=12;a+=a-=a*a;后的值是。
3.以下语句的输出结果是。
shortb=65535;
printf("%d",b);
4.以下程序的执行结果是。
#include
main()
{
inta,b,x;
x=(a=3,b=a--);
printf("x=%d,a=%d,b=%d\n",x,a,b);
}
5.以下程序的执行结果是。
#include
main()
{
floatf1,f2,f3,f4;
intm1,m2;
f1=f2=f3=f4=2;
m1=m2=1;
printf("%d\n",(m1=f1>=f2)&&(m2=f3}
6.以下程序的执行结果是。
#include
main()
{
floatf=13.8;
intn;
n=(int)f%3;
printf("n=%d\n",n);
}
三、编程题
1.请编写一个这样的程序:
请求用户输入两个数,读取两个数后打印它们的和、乘积、差、商及余数。
2.输入一个3位整数,求出该数每个位上的数字之和。
如123,每个位上的数字和就是1+2+3=6。
第三章习 题
一、选择题
1.结构化程序模块不具有的特征是()。
A.只有一个入口和一个出口
B.要尽量多使用goto语句
C.一般有顺序、选择和循环3种基本结构
D.程序中不能有死循环
2.程序段如下:
则以下说法中不正确的是:
。
#include
main()
{
intk=2,;
while(k<7)
{
if(k%2){
k=k+3;printf(“k=%d\n”,k);continue;
}
k=k+1;
printf(“k=%d\n”,k);
}
}
A.k=k+3;执行一次B.k=k+1;执行2次
C.执行后k值为7D.循环体只执行一次
3.C语言中,逻辑“真”等价于()。
A.整数1B.整数0C.非0数D.TRUE
4.以下4条语句中,有语法错误的是()。
A.if(a>b)m=a;B.if(a
C.if((a=b)>=0)m=a;D.if((a=b;)>=0)m=a;
5.若i,j均为整型变量,则以下循环()。
for(i=0,j=2;j=1;i++,j--)
printf("%5d,%d\n",i,j);
A.循环体只执行一次B.循环体执行二次
C.是无限循环D.循环条件不合法
6.程序段如下:
则以下说法中正确的是:
。
intk=-20;
while(k=0)k=k+1;
A.while循环执行20次B.循环是无限循环
C.循环体语句一次也不执行D.循环体语句执行一次
7.以下程序段,执行结果为()。
a=1;
do
{
a=a*a;
}while(!
a);
A.循环体只执行一次B.循环体执行二次
C.是无限循环D.循环条件不合法
8.C语言中while及do~while语句的主要区别是()。
A.do~while的循环体至少无条件执行一次
B.do~while允许从外部跳到循环体内
C.while的循环体至少无条件执行一次
D.while的循环控制条件比do~while的严格
9.语句while(!
a);中条件等价于()。
A.a!
=0B.~aC.a==1D.a==0
10.分析以下程序,下列说法正确的是。
main()
{
intx=0,a=0,b=0;
if(x==a+b)printf("****\n");
elseprintf("####\n");
}
A.有语法错,不能通过编译B.通过编译,但不能连接
C.输出****D.输出####
11.以下程序的运行结果为()。
#include
main()
{
inti=1,sum=0;
while(i<=100)
sum+=i;
i++;
printf("1+2+3+...+99+100=%d",sum);
}
A.5050B.1C.0D.程序陷入死循环
12.以下程序的运行结果为()。
#include
main()
{
intsum,pad;
sum=pad=5;
pad=sum++;
pad++;
++pad;
printf("%d\n",pad);
}
A.7B.6C.5D.4
13.以下程序的运行结果为()。
#include
main()
{
inta=2,b=10;
printf("a=%%d,b=%%d\n",a,b);
}
A.a=%2,b=%10B.a=2,b=10
C.a=%%d,b=%%dD.a=%d,b=%d
14.为了避免嵌套的if-else语句的二义性,C语言规定else总是()。
A.及缩排位置相同的if组成配对关系
B.及在其之前未配对的if组成配对关系
C.及在其之前未配对的最近的if组成配对关系
D.及同一行上的if组成配对关系
15.对于for(表达式1;;表达式3)可理解为()。
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
二、填空题
1.是算法的图形化表示。
2.在流程图中,符号表示了各步骤执行的顺序。
3.结束框表示了每个算法的和
4.若a=5,b=6,c=7,d=8,则表达式d=a/2&&b==c||!
a的值为
5.定义intx=10,y,z;执行y=z=x;x=y==z后,变量x的值为。
6.下面程序的功能是计算n!
。
#include
main()
{
inti,n;
longp;
printf("Pleaseinputanumber:
\n");
scanf("%d",&n);
p=;
for(i=2;i<=n;i++)
;
printf("n!
=%ld",p);
}
7.投票表决器:
输入Y、y,打印agree
输入N、n,打印disagree
输入其他,打印lose
main()
{
charc;
scanf("%c",&c);
{
case‘Y’:
case‘y’:
printf(“agree”);;
case‘N’:
case‘n’:
printf(“disagree”);;
:
printf(“lose”);
}
8.准备客票。
某铁路线上共10个车站,问需要准备几种车票?
main()
{inti,j,station,total=0;
printf("输入车站数:
");
scanf("%d",&station);
for(i=1;i<;i++)
for(j=;j<=station;j++)
total=;
printf("车票种类=%d\n",total);
}
9.下面程序的功能是:
从键盘上输入若干学生的成绩,统计并输出最高和最低成绩,当输入负数时结束输入。
#include
main()
{
floatscore,max,min;
printf("Pleaseinputonescore:
\n");
scanf("%f",&score);
max=min=score;
while()
{
if(score>max)max=score;
if()
min=score;
printf("Pleaseinputanotherscore:
\n");
scanf("%f",&score);
}
printf("\nThemaxscoreis%f\nTheminscoreis%f",max,min);
}
10.打印出以下图形
*
***
*****
*******
*****
***
*
main()
{
inti,j,k;
for(i=0;i<=;i++)
{for(j=0;j<=2-i;j++)printf("");
for(k=0;k<=;k++)printf("*");
}
for(i=0;i<=2;i++)
{for(j=0;j<=;j++)
printf("");
for(k=0;k<=;k++)
printf("*");
printf("\n");
}
}
11.下面程序的功能是:
计算y=
…的值。
要求从键盘上输入x的值,精度控制在0.00001内。
#include
#include
main()
{
floatx,y=0,fz=-1,fm=-1,temp=1;
printf("Pleaseinputthevalueofx:
\n");
scanf("%f",&x);
while()
{
fz=;
fm=fm+2;
temp=fz/fm;
y+=temp;
}
printf("\ny=%f",y);
}
12.下面的程序完成两个数的四则运算。
用户输入一个实现两个数的四则运算的表达式,程序采用switch语句对其运算进行判定后执行相应的运算并给出结果。
#include
main()
{
floatx,y;
charop;
printf("PleaseinputExpression:
");
scanf("%f%c%f",&x,&op,&y);
{
case'+':
printf("%g%c%g=%g\n",_);
;
case'-':
printf("%g%c%g=%g\n",x,op,y,x-y);
break;
case'*':
printf("%g%c%g=%g\n",x,op,y,x*y);
break;
case'/':
if()
printf("DivisionError!
\n");
else
printf("%g%c%g=%g\n",x,op,y,x/y);
break;
default:
printf("ExpressionError!
\n");
}
}
三、编程题
1.写一程序求y值(x值由键盘输入)。
2.给出三角形的三边a、b、c,求三角形的面积。
(应先判断a、b、c三边是否能构成一个三角形)
3.有一函数
请编程序计算y的值(x的值由键盘输入)。
4.某幼儿园只收2~6岁的小孩,2~3岁编入小班,4岁编入中班,5~6岁编入大班,编制程序实现每输入一个年龄,输出该编入什么班。
5.输入一元二次方程的3个系数a、b、c,求出该方程所有可能的根。
6.一个灯塔有8层,共有765盏灯,其中每一层的灯数都是其相邻上层的两倍,求最底层的灯数。
7.求
(即求1!
+2!
+3!
+...+20!
)。
8.一张10元票面的纸钞兑换成1元、2元或5元的票面,问共有多少种不同的兑换方法?
9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。
例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
编程序找出1000之内的所有完数,并按下面格式输出其因子:
6itsfactorsare1,2,3
10.编程打印出所有的“水仙花数”。
所谓水仙花数:
是指一个三位数,其各位数字的立方之和等于该数。
11.如果一个数等于其所有真因子(不包括其本身)之和,则该数为完数,例如,6的因子有1、2、3,且6=1+2+3,故6为完数,求2~1 000中的完数。
12.两个乒乓球队进行比赛,各出三人,甲队为A、B、C三人,乙队为X、Y、Z三人,已知抽签决定比赛名单。
有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,请编程序找出三对赛手的名单。
13.将4~100中的偶数分解成两个素数之和,每个数只取一种分解结果。
如100可分解为3和97、或为11和89、或为17和83等,但我们只取第一种分解即可。
14.一个自然数平方的末几位及该数相同时,称该数为同构数。
例如,252=625,则25为同构数。
编程求出1~1 000中所有的同构数。
15.两位数13和62具有很有趣的性质:
把它们个位数字和十位数字对调,其乘积不变,即13*62=31*26。
编程序求共有多少对这种性质的两位数(个位及十位相同的不在此列,如11、22,重复出现的不在此列,如13*62及62*13)。
第四章习 题
一、选择题
1.C语言中函数形参的缺省存储类型是()。
A.静态(static)B.自动(auto)
C.寄存器(register)D.外部(extern)
2.在C语言中,当函数调用时()。
A.实参和形参各占一个独立的存储单元
B.实参和形参共用存储单元
C.可以由用户指定实参和形参是否共用存储单元
D.由系统自动确定实参和形参是否共用存储单元
3.如果在一个函数的复合语句中定义了一个变量,则该变量()。
A.只在该符合语句中有效,在该符合语句外无效
B.在该函数中任何位置都有
C.在本程序的原文件范围内均有效
D.此定义方法错误,其变量为非法变量
4.函数调用语句function((exp1,exp2),18)中含有的实参个数为()。
A.0B.1C.2D.3
5.下面函数返回值的类型是()。
square(floatx)
{
returnx*x;
}
A.及参数x的类型相同B.void型C.无法确定D.int型
6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。
A.float型B.int型C.long型D.double型
7.C语言规定,程序中各函数之间()。
A.不允许直接递归调用,也不允许间接递归调用
B.允许直接递归调用,但不允许间接递归调用
C.不允许直接递归调用,但允许间接递归调用
D.既允许直接递归调用,也允许间接递归调用
8.一个函数返回值的类型取决于()。
A.return语句中表达式的类型B.调用函数时临时指定
C.定义函数时指定或缺省的函数类型D.调用该函数的主调函数的类型
9.以下叙述中正确的是()。
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态(static)类别变量的生存期贯穿于整个程序的运行期间
C.函数的形参都属于全局变量
D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值
10.下面叙述中,错误的是()。
A.函数的定义不能嵌套,但函数调用可以嵌套
B.为了提高可读性,编写程序时应该适当使用注释
C.变量定义时若省去了存储类型,系统将默认其为静态型变量
D.函数中定义的局部变量的作用域在函数内部
11.在一个源程序文件中定义的全局变量的有效范围为()。
A.一个C程序的所有源程序文件B.该源程序文件的全部范围
C.从定义处开始到该源程序文件结束D.函数内全部范围
12.某函数在定义时未指明函数返回值类型,且函数中没有return语句,现若调用该函数,则正确的说法是()。
A.没有返回值B.返回一个用户所希望的值
C.返回一个系统默认值D.返回一个不确定的值
13.函数sx,inty)可实现对x和y值的交换。
在执行如下定义及调用语句后,a和b的值分别为()。
inta=10,b=20;
swap(a,b);
A.10和10B.10和20C.20和10D.20和20
14.下面错误的叙述是()。
A.在某源程序不同函数中可以使用相同名字