C语言复习题整理.docx
《C语言复习题整理.docx》由会员分享,可在线阅读,更多相关《C语言复习题整理.docx(51页珍藏版)》请在冰豆网上搜索。
C语言复习题整理
第2部分
C语言程序设计习题与解答
题解1 绪 论
习题
一、选择题
1.一个完整的可运行的C源程序中( B )。
A.可以有一个或多个主函数 B.必须有且仅有一个主函数
C.可以没有主函数 D.必须有主函数和其他函数
2.构成C语言源程序的基本单位是( D )。
A.子程序 B.过程 C.文本 D.函数
3.某C程序由一个主函数main( )和一个自定义函数max( )组成,则该程序( D )。
A.总是从max( )函数开始执行 B.写在前面的函数先开始执行
C.写在后面的函数先开始执行 D.总是从main( )函数开始执行
4.C语言规定,一个C源程序的主函数名必须为( C )。
A.program B.include C.main D.function
5.下列说法正确的是( C )。
A.在书写C语言源程序时,每个语句以逗号结束
B.注释时,'/'和'*'号间可以有空格
C.无论注释内容的多少,在对程序编译时都被忽略
D.C程序每行只能写一个语句
6.C语言源程序文件的后缀是( C ),经过Compile后,生成文件的后缀是( A ),经过Build后,生成文件的后缀是( B )。
A..obj B..exe C..c D..doc
7.VisualC++IDE的编辑窗口的主要功能是( A ),输出窗口的主要功能是( D ),调试器(Debug)的主要功能是(C)。
A.建立并修改程序 B.将C源程序编译成目标程序
C.跟踪分析程序的执行 D.显示编译结果信息(如语法错误等)
8.在VisualC++开发环境下,C程序按工程(project)进行组织,每个工程可包括( D )C/CPP源文件,但只能有( A )main函数。
A.1个 B.2个
C.3个 D.1个以上(含1个)
9.调试程序时,如果某个语句后少了一个分号,调试时会提示错误,这种情况一般称之为( A )。
而某个“计算2的平方”的程序在调试时没有提示出错,而且成功执行并计算出了结果,只是结果等于5,这种情况一般称之为( D )。
A.语法错误 B.正常情况
C.编译器出错 D.逻辑设计错误
二、简答题
1.如何使用注释语句使用注释有何好处
2.C程序对书写格式有何要求规定书写格式有何好处符号名包括模块名、常量名、标号名、子程序名等。
这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解
3.简述C程序上机调试的一般步骤编辑,编译,连接,运行
4.简述C程序从.c源文件到.exe可执行文件的生成过程
题解2 基本数据类型与运算符
习题
一、选择题
1.C语言中最基本的非空数据类型包括( D )。
A.整型、浮点型、无值型 B.整型、字符型、无值型
C.整型、浮点型、字符型 D.整型、浮点型、双精度型、字符型
2.C语言中运算对象必须是整型的运算符是( A )。
A.% B./ C.= D.〈=
3.若已定义x和y为int类型,则执行了语句x=1;y=x+3/2;后y的值是( B )。
A.1 B.2 C. D.
4.若有以下程序段:
inta=1,b=2,c;
c=b*a;
则执行后,c中的值是( A )。
A.0 B. C.1 D.2
5.能正确表示逻辑关系:
"a≥10或a≤0"的C语言表达式是( D )。
A.a>=10ora<=0 B.a>=0|a<=10
C.a>=10&&a<=0 D.a>=10‖a<=0
6.下列字符序列中,不可用作C语言标识符的是( B )。
A.xds426 B. C._ok D.zwd
7.在printf( )函数中,反斜杠字符'\'表示为( D )。
A.\' B.\0 C.\n D.\\
8.设先有定义:
inta=10;
则表达式a+=a*=a的值为( D )。
A.10 B.100 C.1000 D.200
9.设先有定义:
inta=10;
则表达式(++a)+(a--)的值为( C )。
A.20 B.21 C.22 D.19
10.有如下程序:
#include<>
main( )
{
inty=3,x=3,z=1;
printf("%d %d\n",(++x,y++),z+2);
}
运行该程序的输出结果是( D )。
A.3 4 B.4 2 C.4 3 D.3 3
11.假定x、y、z、m均为int型变量,有如下程序段:
x=2;y=3;z=1;
m=(yx;
m=(zy;
则该程序运行后,m的值是( C )。
A.4 B.3 C.2 D.1
12.以下选项中合法的字符常量是( B )。
A."B" B.'\010' C.68 D.D
13.设x=3,y=4,z=5,则表达式((x+y)>z)&&(y==z)&&x||y+z&&y+z的值为(B)
A.0 B.1 C.2 D.3
((x+y)>z)&&(y==z)&&x||(y+z)&&(y+z)=1&&0&&3||9&&9=0||1=1
14.如果a=1,b=2,c=3,d=4,则条件表达式a(cd的值为( A )。
A.1 B.2 C.3 D.4
15.设intm=1,n=2; 则m++==n的结果是( A )。
A.0 B.1 C.2 D.3
二、填空题
1.表达式10/3的结果是 3 ;10%3的结果是 1 。
2.执行语句:
inta=12;a+=a-=a*a;后的值是 -264 。
3.以下语句的输出结果是 -1 。
shortb=65535;
printf("%d",b);
4.以下程序的执行结果是 X=3,a=2,b=2 。
#include<>
main( )
{
inta,b,x;
x=(a=3,b=a--);
printf("x=%d,a=%d,b=%d\n",x,a,b);
}
5.以下程序的执行结果是 0 。
#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.以下程序的执行结果是 n=1 。
#include<>
main( )
{
floatf=;
intn;
n=(int)f%3;
printf("n=%d\n",n);
}
三、简答题
2.简述转义字符的用途并举实例加以说明。
题解3 控制结构
习题
一、选择题
1.结构化程序模块不具有的特征是( B )。
A.只有一个入口和一个出口
B.要尽量多使用goto语句
C.一般有顺序、选择和循环3种基本结构
D.程序中不能有死循环
2.C语言中,逻辑“真”等价于( C )。
A.整数1 B.整数0 C.非0数 D.TRUE
3.以下4条语句中,有语法错误的是( D )。
A.if (a>b) m=a; B.if (a
C.if ((a=b)>=0) m=a; D.if ((a=b;)>=0) m=a;
4.若i,j均为整型变量,则以下循环*( C )。
for(i=0,j=2;j=1;i++,j--)
printf("%5d,%d\n",i,j);
A.循环体只执行一次 B.循环体执行二次
C.是无限循环 D.循环条件不合法
5.以下程序段,执行结果为( A )。
a=1;
do
{a=a*a;}
while(!
a);
A.循环体只执行一次 B.循环体执行二次
C.是无限循环 D.循环条件不合法
6.C语言中while与do-while语句的主要区别是( A )。
A.do-while的循环体至少无条件执行一次
B.do-while允许从外部跳到循环体内
C.while的循环体至少无条件执行一次
D.while的循环控制条件比do-while的严格
7.语句while(!
a);中条件等价于( D )。
A.a!
=0 B.~a C.a==1 D.a==0
8.以下程序的运行结果为( D )。
#include<>
main( )
{
inti=1,sum=0;
while(i<=100)
sum+=i;
i++;
printf("1+2+3+...+99+100=%d",sum);
}
A.5050 B.1 C.0 D.程序陷入死循环
9.以下程序的运行结果为( A )。
#include<>
main( )
{
intsum,pad;
sum=pad=5;
pad=sum++;
pad++;
++pad;
printf("%d\n",pad);
}
A.7 B.6 C.5 D.4
10.以下程序的运行结果为( D )。
#include<>
main( )
{
inta=2,b=10;
printf("a=%%d,b=%%d\n",a,b);
}
A.a=%2,b=%10 B.a=2,b=10
C.a=%%d,b=%%d D.a=%d,b=%d
11.为了避免嵌套的if-else语句的二义性,C语言规定else总是( C )。
A.与缩排位置相同的if组成配对关系
B.与在其之前未配对的if组成配对关系
C.与在其之前未配对的最近的if组成配对关系
D.与同一行上的if组成配对关系
12.对于for(表达式1;;表达式3)可理解为( B )。
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
二、程序填空
1.下面程序的功能是计算n!
。
#include<>
main( )
{
int i,n;
long p;
printf("Pleaseinputanumber:
\n");
scanf("%d",&n);
p= 1 ;
for(i=2;i<=n;i++)
p*=i或p=p*i ;
printf("n!
=%ld",p);
}
2.下面程序的功能是:
从键盘上输入若干学生的成绩,统计并输出最高和最低成绩,当输入负数时结束输入。
#include<>
main( )
{
float score,max,min;
printf("Pleaseinputonescore:
\n");
scanf("%f",&score);
max=min=score;
while( score>=0 )
{
if(score>max) max=score;
if( score printf("Pleaseinputanotherscore:
\n");
scanf("%f",&score);
}
printf("\nThemaxscoreis%f\nTheminscoreis%f",max,min);
}
3.下面程序的功能是:
计算y=的值。
要求从键盘上输入x的值,精度控制在内。
#include<>
#include<>
main( )
{
float x,y=0,fz=-1,fm=-1,temp=1;
printf("Pleaseinputthevalueofx:
\n");
scanf("%f",&x);
while(abs(temp)> )
{
fz= 【6】-fz*x ;
fm=fm+2;
temp=fz/fm;
y+=temp;
}
printf("\ny=%f",y);
}
4.下面的程序完成两个数的四则运算。
用户输入一个实现两个数的四则运算的表达式,程序采用switch语句对其运算进行判定后执行相应的运算并给出结果。
#include<>
main( )
{
floatx,y;
charop;
printf("PleaseinputExpression:
");
scanf("%f%c%f",&x,&op,&y);
【7】switch(op)
{
case'+':
printf("%g%c%g=%g\n", 【8】 );
【9】break ;
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( 【10】(y>=-1e-6)&&(y<=1e-6) )
printf("DivisionError!
\n");
else
printf("%g%c%g=%g\n",x,op,y,x/y);
break;
default:
printf("ExpressionError!
\n");
}
}
题解4 函 数
习题
一、选择题
1.C语言中函数形参的缺省存储类型是( B )。
A.静态(static) B.自动(auto)
C.寄存器(register) D.外部(extern)
2.函数调用语句function((exp1,exp2),18)中含有的实参个数为( C )。
A.0 B.1 C.2 D.3
3.下面函数返回值的类型是( D )。
square(floatx)
{
returnx*x;
}
A.与参数x的类型相同 B.是void型
C.无法确定 D.是int型
4.C语言规定,程序中各函数之间( D )。
A.不允许直接递归调用,也不允许间接递归调用
B.允许直接递归调用,但不允许间接递归调用
C.不允许直接递归调用,但允许间接递归调用
D.既允许直接递归调用,也允许间接递归调用
5.一个函数返回值的类型取决于( C )。
A.return语句中表达式的类型 B.调用函数时临时指定
C.定义函数时指定或缺省的函数类型 D.调用该函数的主调函数的类型
6.下面叙述中,错误的是( C )。
A.函数的定义不能嵌套,但函数调用可以嵌套
B.为了提高可读性,编写程序时应该适当使用注释
C.变量定义时若省去了存储类型,系统将默认其为静态型变量
D.函数中定义的局部变量的作用域在函数内部
7.在一个源程序文件中定义的全局变量的有效范围为( C )。
A.一个C程序的所有源程序文件 B.该源程序文件的全部范围
C.从定义处开始到该源程序文件结束 D.函数内全部范围
8.某函数在定义时未指明函数返回值类型,且函数中没有return语句,现若调用该函数,则正确的说法是( D )。
A.没有返回值 B.返回一个用户所希望的值
C.返回一个系统默认值 D.返回一个不确定的值
9.函数swap(intx,inty)可实现对x和y值的交换。
在执行如下定义及调用语句后,a和b的值分别为( B )。
inta=10,b=20;
swap(a,b);
A.10和10 B.10和20 C.20和10 D.20和20
10.下面错误的叙述是( D )。
A.在某源程序不同函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在函数内定义的变量只在本函数范围内有效
D.在函数内的复合语句中定义的变量在本函数范围内有效
二、程序填空
1.求s=1!
+2!
+3!
+…+10!
之和。
程序如下:
#include<>
longintfactorial(intn)
{
intk=1;
longintp=1;
for(k=1;k<=n;k++)
【1】p=p*k; ;
return p;
}
main( )
{
intn;
floatsum=0;
for(n=1;n<=10;n++)
【2】sum=sum+factorial(n); ;
printf("%\n",sum);
}
2.以下函数用以求x的y次方。
double fun(doublex,inty)
{
int i;
double m=1;
for(i=1;i 【3】<=y或 m= 【4】m*x ;
return m;
}
三、阅读程序并写出运行结果
1.下面程序运行的结果是_____2,4,,6,8________:
#include<>
#define MAX_COUNT 4
voidfun( );
main( )
{
intn;
for(n=1;n<=MAX_COUNT;n++)
fun( );
}
voidfun( )
{
staticintk;
k=k+2;
printf("%d,",k);
}
4.下面程序运行的结果是___8,17______:
#include<>
intfun(intx,inty)
{
staticintm=0,n=2;
n+=m+1;
m=n+x+y;
returnm;
}
main( )
{
intj=4,m=1,k;
k=fun(j,m);
printf("%d,",k);
k=fun(j,m);
printf("%d\n",k);
}
题解5 数 组
习题
一、选择题
1.在下列数组定义、初始化或赋值语句中,正确的是( C )。
A.inta[8];a[8]=100;