《c语言题答案.doc》由会员分享,可在线阅读,更多相关《c语言题答案.doc(12页珍藏版)》请在装配图网上搜索。
复习题
一、选择题
1、C程序由( C )组成。
A.子程序 B.主程序和子程序 C.函数 D.过程
2、以下正确的叙述是( C )。
A. 在C语言中,main函数必须位于文件的开头
B. C语言每行中只能写一条语句
C. C语言本身没有输入、输出语句
D. 对一个C语言进行编译预处理时,可检查宏定义的语法错误
3、下面属于C语言标识符的是( D )
A. 2ab B. @f C. ?b D. _a12
4、下列符号中用来表示C语言中的回车换行的是( B )
A. \” B. \n C. \b D. \\
5、若定义#define P 3.1416 则P是( A )
A.符号常量 B.单精度变量 C.整型变量 D.一般变量
6、一个C程序的执行是从( A )
A. 本程序的main()函数开始,到main()函数结束.
B. 本程序文件的第一个函数开始,到本程序文件第一个函数结束.
C. 本程序文件的第一个函数开始,到本程序main函数结束.
D. 本程序的main()函数开始,到本程序文件的最后一个函数结束.
7、下列关于C语言注释的叙述中错误的是( D )。
A.以“/*”开头并以“*/”结尾的字符串为C语言的注释内容。
B.注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义。
C.程序编译时,不对注释作任何处理。
D.程序编译时,需要对注释进行处理。
8、若有定义:int a=8, b=5, c; 执行语句c = a/b+0.4 ;后,c的值为(B )。
A. 1.4 B.1 C. 2.0 D. 2
9、若t为int类型,表达式t=1,t= 5,t++的值是( C)
A.2 B.6 C.5 D. 7
10、设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句( B )
if (x=y) printf(" x is equal to y.");
A. 语法错 B. 不能判断x和y是否相等
C. 编译出错 D. 能判断x和y是否相等
11、 有如下输入语句:scanf(“x=%d:y=%d”, &x, &y); 为使变量x的值为2002,
变量y的值为11,那么从键盘输入数据的正确格式为 ( B )。
A. 2002 11 B. x=2002:y=11
C. x=2002 y = 11 D. x=2002,y=11
12.有int x,y,z ;且 x=3,y=-4,z=5 ;则以下表达式的值为( A )
! ( x>y ) +(y != z ) || ( x+y )&& ( y - z)
A) 1; B) 0; C) 2; D) 4;
13.设 a=50, b=20, c=12,则 x 的值是( D )
x= if( a>b ) a=b ,c=a ,++c;
A) 13 B) 51
C) 50 D) 21
14.下面的表达式正确的是( C )
A) (a+b)++ B) 8++
C) _(i++) D) (-k )++
15.设以下变量均为int类型,则值不等于 7的表达式是:( C )
A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1)
C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1)
16.设有如下程序段,输出结果应为( A )
x=( a=3, 6*3 );
y=a=3, 6*a;
printf(“x=%d,y=%d \n”,x, y );
A) x=18, y=3; B) x=18, y=19;
C) x=3, y=18; D) x=3, y=3;
17、写出下列程序的执行结果( D )
int x=-2;
printf("%d,%u,%o",x, x, x);
A. -2, -2, -2 B.-2, 32767, -177777
C.-2, 32768, 177777 D.-2, 65534, 177776
18、若有定义int a; char b; float c; 则表达式 a*b-c 的类型是( D )
A.float B. int C. char D. double
19、若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是( C )。
A. 1 B. 2 C. 2.0 D. 2.5
20、Putchar 函数可以向终端输出一个( D )
A)整型变量表达式值; B) 字符串;
C)实型变量值; D) 字符或字符型变量值;
21.执行以下程序段,正确的输出结果( A )
#include
main( )
{ int b=1;
b%=5-2;
Printf( “%d”,b);
b+=b*=b-=b*=4;
printf(“%d”,b);
}
A) 1,0; B) 2,0; C) -2,8; D) 1,8;
22、若有程序段:double x=-5.9;int y;y=(int)x; 执行该段程序后( A )。
A.x=-5.9,y=-5 B.x=-5.9,y=-6 C.x=-5,y=-5 D.x=-6,y=-6
23.以下程序的运行结果是:( B )
#include”stdio.h”
main()
{
int a,b,d=241;
a=d /100% 9;
b=(-1) && (-1);
printf(“%d,%d”,a,b);
A) 6, 1 B) 2, 1 C) 6, 0 D) 2, 0
24、以下正确的叙述是( C )。
A.在if-else语句中第一个else与第一个if相匹配
B.完整的if语句中都有else存在的
C.if-else语句中,else 与最近的if匹配
D.以上都正确
25、下列保留字中用于构成循环结构的是( B )
A. if B. while C. switch D. default
26. 运行下面的程序段,结果是:( A )
int n=0;
while(n++<=2);printf(“%d”,n);
A)2 B)3 C)4 D)有语法错
27.以下描述正确的是:( B )
A) goto 语句只能用于退出多层循环。
B)switch 语句中不能出现continue语句。
C) 只能用 continue语句来终止本次循环。
D) 在循环中break语句不能独立出现。
28.以下循环的执行次数是( C )
for(x=0,y=0;(y=123&& x<4 );x++);
A)是无限循环 B) 循环次数不定
C)执行4次 D) 执行3次
29.下面有关 for循环的正确描述是:( D )
A) for循环只能用于循环次数已经确定的情况
B) for循环是先执行循环体语句,后判断表达式
C) 在for循环中,不能用break语句跳出循环体
D) for循环的循环体语句中,可以包含多条语句,但是,必须用花括号括起来。
30、for(i=0; ;i++) ;执行循环的次数为:( D )
A.0次 B. 许多次 C.错误 D.无限多次
31.设有以下程序段
int x=0, s=0;
while(!x!=0) s+=++x;
Printf(“%d”,s);
则( B )
A)运行程序段后输出0 B) 运行后输出 1
C)程序段中控制表达式是非法的 D)程序执行无限次
32、以下程序段中由while构成的循环,执行的次数为( A )。
int k=0;
while(k=1)
k++;
A.无限次 B.有语法错,不能执行
C. 一次也不执行 D. 执行1次
33、 以下正确的描述是( B )
A. continue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.goto语句只能用于退出多层循环
34、下面的for循环语句的循环次数是( A )。
int i;
for (i=1;i<100;i+=2)i++;
A. 33次 B.50次 C. 49次 D. 99次
35、下列语句中,不正确的是( D )。
A. int a[2][3] = {1 , 2 , 3 , 4 , 5 , 6}; B. int a[2][3] = {{1}, { 4 , 5}};
C. int a[ ][3] = {{1}, {4}}; D. int a[ ][ ] = {{1 , 2 , 3 }, {4 , 5 , 6}};
36、若有定义char x[]="abcdefg"; char y[]={a, b, c, d, e, f, g }; 则下述正确的叙述为( C )。
A.数组x 和数组y等价 B. 数组x 和数组y的长度相同
C.数组x 长度大于数组y的长度 D. 数组x 长度小于数组y的长度
37、合法的数组定义是(C )
A.char a={‘H’,‘e’,‘l’,‘l’,‘o’}; B.char a[5]=’Hello’;
C.char a[5]={‘H’,‘e’,‘l’,‘l’,‘o’}; D.char a[5]=”Hello”;
38、若有如下定义:
int n[5]={1, 2, 3, 4, 5 }, *p=n; 则值为5的表达式是( C ) 。
A. *p+5 B. *(p+5) C.*(p+4) D.p+4
39、以下各语句或语句组中,正确的操作是( C )。
A. char s[5]="abcde" ; B. char *s; gets(s);
C.char *s; s="abcde"; D.char s[5]; scanf("%s", &s);
40、已知int b; 则对指针变量p正确的说明和初始化是:( D )
A.int *p=b; B.int p=b; C.int p=&b; D.int *p=&b;
41、以下正确的函数定义形式是( A )
A.double fun(int x, int y) B.double fun(int x;int y)
C.double fun(int x, int y); D.double fun(int x,y);
42、如果定义char a[20]={‘0’};则a[3]的初值是( A )
A.0 B.‘\0’ C.‘\n’ D.‘F’
43、以下各语句或语句组中,正确的操作是( C )。
A. char s[5]="abcde" ; B. char *s; gets(s);
C.char *s; s="abcde"; D.char s[5]; scanf("%s", &s);
44、若有定义:int a[5][6]; 则下面关于数组a的叙述中正确的是( C )。
A.该数组共有20个元素 B.a[0][6]是该数组的一个元素
C.a[0][0]是该数组的一个元素 D.a[5][6]是该数组的一个元素
45、已知int b; 则对指针变量p正确的说明和初始化是:( D )
A.int *p=b; B.int p=b; C.int p=&b; D.int *p=&b;
46.下面程序C(每行程序前面的数字表示行号) ( C )
1 main()
2 {
3 float a[ 10]={ 0.0};
4 int i;C
5 for(i=0; i<3; i++) scanf(“%d”,&a[i]);
6 for(i=0; i<10; i++) a[0]=a[0]+a[i];
7 printf(“%f\n”,a[0]);
8 }
A)没有错误 B)第 3行有错误
C)第 5 行有错误 D) 第7行有错误
47.合法的数组定义是( B )
A) int s[ ]= “good”; B) int s[5]={ 0,1,2,3,4};
C) char s= “good”; D) char[ ]= {0,1,2,3,4};
48.下面程序中有错误的行是( D )(每行程序前面的数字表示行号)
1 main()
2 {
3 int a[3]= {1 };
4 int i;
5 scanf(“%d”,&a);
6 for(i=1; i<3; i++) a[0]=a[0]+a[i];
7 printf(“a[0]=%d\n”,a[0]);
8 }
A) 3 B)6; C)7; D) 5;
49.以下能对一维数组进行正确初始化的语句是( C )
A) int a[10]=( 0,0,0,0,0);
B) int a[10]={ };
C) int a[ ]={ 0 };
D) int a[10]= { 10*1};
50.对一维整型数组 a的正确说明是( D )
A) int a; B) int n =10 ,a[n];
C) int n;scanf(“%d”,&n); D) #define SIZE 10
int a[n ]; int a[SIZE];
51.执行以下程序段,输出结果( D )
#include
int x[ ]={ 5,4,3,2,1};
main( )
{
int i,*p,m=0;
for(p=x,i=1;p+i<=x+4;i+=2)
printf(“%d,”,*(p+i));
for(i=0;i<=4;i++)
m+=x[i];
printf(“%d”,m);
}
A) 5,4,3,2,1 B) 1,2,3,4,5
C) 4,2,10 D) 4,2,15
二、填空题
1、C语言标识符由字母、下划线或数字组成。命名标识符必须以 下划线 或 字母 开头,字母严格区分大小写,不能使用C语言的关键字作为标识符。
2、C语言中为了简化程序,提高程序的编译效率,在赋值运算符前面加上其他运算符号构成复合运算符。例如:x=x+5 用复合运算符可以写成 x+=5 。
3、结构化程序设计的基本结构有三种,分别是_顺序__,_选择__和_循环___
4、“: ?”条件运算符是C语言中唯一的三目运算符。由其连接的表达式为条件表达式,其格式为: <表达式1>?<表达式2>:<表达式3> 。执行过程:首先计算表达式1的值,如果表达式1的值是“真”(非0),则整个表达式的值为 表达式2 的值如果表达式1的值是“假”(0),则整个表达式的值为 表达式3 的值。
5、表达式10||20||30的值是 1 。
6、C语言中常用的三种循环控制语句中,while语句和for语句属于 当 型循环,do……while语句属于 直到 型循环。
7、 多分支选择结构,可以用嵌套的if语句和__switch_ _while___语句来实现。
8、 break语句只能用于___switch___ __语句和__ 循环 _____语句。
9、已知字符A的ACSII码值为65,以下语句的输出结果是 B,66 。
char ch=B;
printf("%c,%d\n",ch,ch);
10、 在定义时,对数组的每一个元素赋值叫数组的___初始化 ______,对全部数组元素赋初值,可以不指定数组的_ ___长度_____。
11、有定义int b[7]={3, 1, 2}, 则b[5]的值为 0 。
12、在C语言中,头文件的扩展名是 .h 。
13、int *p,i;p=&i;*p=5;中的两个*含义是不一样的,前者指 定义指针变量
后者指 对指针变量的引用 。
14、若定义:int a=511,*b=&a;, 则printf("%d\n",*b); 的输出结果为 511 。
15、若C语言中定义了二维数组a[2][2],则a中的元素为(按存储顺序写) {a[0][0],a[0][1],a[0][2]},{a[1][0],a[1][1],a[1][2]},{a[2][0],a[2][1],a[2][2]}}
16、 int *p,i;p=&i;*p=5;中的两个*含义是不一样的,前者指 定义指针变量
后者指 对指针变量的引用 。
17、设有说明char str[20], 如果想从终端上把以下字符“This is a book.”送到数组str中,使用的完整语句为 gets(str); 。
18、 有这样的定义:
float a;
float *point;
a=8.23;
让指针point指向a的语句是___,point=&a___,当point指向a 后,_ __&a___与point等价,___a ___与 *point等价。
19、 数组定义和输出语句如下:
Static char str[ ]=”abcxefg!”;
Printf(“%4.5s”,str );
则输出结果为__abcxe__ _____。
20、有这样的定义 :
static int a[5]={1,2,3,4,5};
int * p;
p=&a[0];
写出一个与p=&a[0]等价的语句 p=a ,*(p+1)的值是_2_ ___,*(a+2)的值是___3___。
21、函数直接或间接地自己调用自己,称为函数的___递归调用_______。
22、在函数内部定义的只在本函数内有效的变量叫__局部变量___,在函数以外定义的变量叫_全局变量_____。
三、分析下列程序。
1.程序输出结果是 a=2,i=3 。
#include
void main()
{int i=2,a;
a=i++;
printf(“a=%d,i=%d”,a,i);
}
2.程序输出结果是 cap=12 。
#include
void main()
{int sum=10,cap=10;
cap=sum++,cap++,++cap;
printf("cap=%d\n",cap);
}
3. 程序输出结果是 x=14,y=4 。
#include
void main()
{int x=10,y=5;
switch(x)
{case 1:x++;
default :x+=y;
case 2:y--;
case 3:x--;}
printf("x=%d,y=%d\n",x,y);
}
4 程序输出结果是 x= 3 。
#include
void main()
{int x=3,y=1;
if(x<0)
if(y>0)
x=x+1;
else
x=x+2;
printf("x=%d\n",x); 2 2 3
} 9 10 6
5.给出下面程序运行结果 16 17 18 。
#include
void main()
{int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i>=j) a[i][j]+=a[i][i];
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
6.若键盘输入为 1 3 5 7 9 2 4 6 8 0,则程序输出结果是 0 8 6 4 2 9 7 5 3 1 。
#include
void main()
{int a[10],i;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
for(i=9;i>=0;i--)
printf("%2d",a[i]);
}
7. 给出下面程序运行 love china! H W 。
#include
void main()
{
char *s2="I love China!";
char *s3,c;
char *s4="w";
s3=&c;
*s3=H;
s2=s2+2;
printf("%s\t%c\t%s\n",s2,*s3,s4);
}
8.给出下面程序运行结果 abcd 123 。
#include
void main()
{char a[50]="abcd",b[20]="123456";
int i,j;
i=0;
while(a[i]!=\0) i++;
for(j=0;b[j]!=\0&&j<3;j++,i++)
a[i]=b[j];
a[i]=\0;
printf("%s",a);
}
9. 给出下面程序运行结果 10,10,10 。
#include
void main()
{ int a,b,*ap,*bp;
a=10;
ap=&a;
bp=&*ap;
printf("%d,%d,%d",*bp,*ap,a);
}
10. 若通过键盘输入2 3↙,给出下面程序运行结果 8.000000 。
#include
#include
float func(float x,float y)
{return(pow(x,y));
}
void main()
{float a,b;
scanf("%f%f",&a,&b);
c=func(a,b);
printf("%f\n",c);
}
11、 下面程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。
main( )
{ float x, max, min;
scanf (“%f ”,&x);
max=x;
min=x;
while ( x>0 )
{ if (x>max ) max = x;
if ( x
void main()
{int i,j,k,n;
for(n=100; n<1000 ;n++)
{i=n/100;
J=(n-i*100)/10 ;
K=n%10 ;
if( n==i*i*i+j*j*j+k*k*k )
printf("%d",n);
}
}
13. 程序输出结果是 15 1
void fact(int m, int n, int *p1, *p2)
{ *p1=2*m+n;
*p2=m-n/2;
}
void main( )
{ int a, b, c, d;
a=4; b=7;
fact(a, b, &c, &d);
printf(" %d %d\n", c,d);
}
14.给出下面程序运行结果 -5,5
main()
{ int x,y; x=-5; if (x<0) y=-x;
else if (x==0) y=0; else y=x*x;
printf(“x=%d,y=%d\n”,x,y);}
15.给出下面程序运行结果 3.6,3
main()
{ int y; float x=3.6;
y=(int)x;
printf(“x=%f,y=%d\n”,x,y);}
链接地址:https://www.zhuangpeitu.com/p-12766717.html