C语言程序设计
习题集
基础知识
一单项选择题(每题2分,共44分)
1 以下叙述正确的是___。
A C程序基本组成单位是语句
B C程序每一行只能写一个语句
C 简单C语句必须以分号作为结束符
D 注释语句可以嵌套
2 一个C语言程序是从___开始执行的。
A 程序中第一个函数
B 名为main的函数
C 包含文件(头文件)的第一个函数
D 程序中的第一个语句
3 请选出合法的C语言赋值语句___。
A a=b=58
B i++;
C a=58,b=58
D k=int(a+b);
4 下面标识符中,合法的用户标识符是___。
A 1abc
B include
C a-b-c123
D char
5 以下所列的C语言整形常量中,正确的是___。
A 0x10
B 0976
C 076L
D 01ff
6 C语言中下列运算符的操作数必须为整型的是___。
A %
B ++
C /
D =
7 设a和b均为int型变量,则执行以下语句后的输出为___。
int a=20; int b=3; printf("%d\n",a+=(b%=2));
A 20
B 21
C 0
D 23
8 已知int i;,则执行语句 i=2.6;后,i的值为___。
A 2
B 3
C 2.6
D 不确定
9 以下合法的字符常量为___。
A 'ab'
B '\482'
C '\'
D '\xaf'
10 若y为int型变量,则执行以下语句后,y的值是___。
y=8; y+=y-=y*y;
A 64
B –56
C –112
D –48
11 以下合法的浮点型常量是___。
A e-3
B 1.5e+2.4
C 3.14e+2L
D 3.14 e +5
12 设int数据占用两个字节,float数据占用四个字节,double数据占用8个字节,且已
知float a=2;int b=3;则执行下列语句输出为___。
printf("%d",sizeof(a*b)+2/5);
A 4
B 8
C 6
D 7
13 设int型占2个字节,且int i=-2;,则语句printf("%u",i);的输出结果为___。
A 0
B -2
C 65534
D 65535
14 若x、y、z均为整型常量,且a=100,则执行下列语句后的z值为___。
x=a++; y=--a; z=x+y-a--;
A 100
B 400
C 200
D 300 15 若有以下定义和语句:int u=010,v=0x10,w=10,printf("%d,%d,%d\n ",u,v,w);,则输出结果是___。
A 8,16,10
B 10,10,10
C 8,8,10
D 8,10,10 16 设x 、y 为int 型变量,则执行下列语句后,y 的值是___。
x=5; y=x++*x++; y=--y*--y;
A 529
B 2401
C 1209
D 625
17 假设在程序中a,b,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式
A 1/a*b*c
B 1/(a*b*c)
C 1/a/b/(float)c
D 1.0/a/b/c 18 若有定义:int a=8,b=5,c;char d='A ';,则执行语句c=a/b+d%a+0.5;后c 的值为___。
A 2
B 2.5
C 3
D 类型不一致,无法计算,编译出错 19 在有以下程序:
int main()
{ int i=10,j=1; i=i+j++;
printf("%d,%d,%d\n ",i++,++j,i); int main()
执行后输出结果是___。
A 12,3,11
B 12,2,11
C 11,3,11
D 12,3,12 20 已知int i=65;,则putchar(i);printf("%d ",i);printf("%c ",i);的输出结果为___。
A A,65,A
B 65,65,A
C A,A,65
D A,A,A 21 已知int y,a,i=1;,则语句printf("%d,%d ",-i++,(y=a=3.6*3));的输出结果为___。
A -1,10
B -2,1.8
C 0,3
D 1,18 22 有以下程序:
int main()
{ char a,b,c,d;
a='\'; b='\xbc '; c='\0xab '; d='\023';
printf("%c%c%c%c\n ",a,b,c,d); return 0; return 0; }
编译时出现错误,以下叙述中正确的是___。
A 程序中只有a='\';语句不正确
B b='\xbc ';语句不正确
C d='\023';语句不正确
D a='\';和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 设有语句int a=3;,则执行了语句 a+=a-=a*a 后,变量a 的值是___。
abc
1
的表达式是____。
4 以下程序的输出结果是___。
int main()
{ int a=-10,b=-3;
printf("%d\n",-a++);
printf("%d\n",-a+b);
return 0;
}
5 以下程序的输出结果是___。
int main()
{ char c;
c=0362;
printf("%d\n",c);
return 0;
}
6 以下程序段(n所赋的是八进制数)执行后输出结果是___。
int m=32767,n=032767; printf("%d,%o\n",m,n);
7 字符串"\\name\\\101ddress\b\xaf"的长度为:___。
8有以下程序段:
int m=0,n=0; char c='a';
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:10A10<回车>,则输出结果是___。
9 以下程序的输出结果是___。
int main()
{ printf("%d,%o,%x\n",10,10,10);
printf("%d,%d,%d\n",10,010,0x10);
printf("%d,%x\n",012,012);
return 0;
}
10 设a、b、c为整形变量,且a=2、b=3、c=4,则执行完语句 a*=16+(b++)-(++c);之后,
变量a的值为___。
11 以下程序的输出结果为___。
int main()
{ int x=023;
printf("%x\n",--x);
return 0;
}
12 以下程序的结果为___。
int main()
{ int a=2,b=3,c,d;
c=(a++)+(a++)+(a++);
d=(++b)+(++b)+(++b);
printf("a=%d c=%d\n",a,c);
printf("b=%d d=%d\n",a,d);
return 0;
}
13 以下程序
int main()
{ char ch1,ch2,ch3;
scanf("%c%c%c",&ch1,&ch2,&ch3);
printf("%c%c%c%c%c",ch1,'#',ch2,'#',ch3);
return 0;
}
当输入ABC时运行结果为【1】,当输入A BC时运行结果为【2】。
14 若有定义:float x;,以下程序段的输出结果是___。
x=5.16894;
printf("%f\n",(int)(x*1000+0.5)/(float)1000);
15 以下程序的功能是:输入一个小写字母,输出对应的大写字母,将程序补充完整。
int main()
{ char ch;
【1】 /* 从键盘输入一个小写字母 */
【2】 /* 将该字母转换为大写字母 */
【3】 /* 输出转换后的结果 */
return 0;
}
16 当运行以下程序时,在键盘上从第一列开始输入9876543210↙(此处↙代表回车),则
程序的输出结果是___。
int main()
{ int a; float b,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\na=%d,b=%f,c=%f\n",a,b,c);
return 0;
}
17 以下程序的运行结果是___。
int main()
{ printf("%12.5f\n",123.1234567);
printf("%12f\n",123.1234567);
printf("%12.8d\n",12345);
printf("%12.8s\n","abcdefghij");
return 0;
}
18 运行以下程序时,如从键盘上输入abcdefg↙,则输出结果是___。
int main()
{ char ch1,ch2,ch3;
ch1=getchar(); ch2=getchar(); ch3=getchar();
putchar(ch1); putchar(ch2); putchar(ch3);
putchar('\n');
}
19 运行以下程序时,如从键盘上输入:a=3,b=5↙35,35.12↙abc↙后,结果是___。
int main()
{ int a,b; float x,y; char c1,c2;
scanf("a=%d,b=%d",&a,&b);
scanf("%f,%e",&x,&y);
scanf("%c%c%c",&c1,&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
return 0;
}
顺序、选择结构程序设计
一单项选择题(每题2分,共40分)
1 以下程序运行后的输出结果是___。
int main()
{ int a=0,b=0;
a=10; b=20; printf("a+b=%d\n",a+b);
return 0;
}
A a+b=10
B a+b=30
C 30
D 出错
2 以下程序运行后的输出结果是___。
int main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf("%d\n",d*y);
return 0;
}
A 3
B 3.2
C 0
D 3.07
3 以下程序运行后的输出结果是___。
int main()
{ double d; float f; long l; int i;
i=f=l=d=20/3;
printf("%d %ld %.1f %.1f\n",i,l,f,d);
return 0;
}
A 6 6 6.0 6.0
B 6 6 6.7 6.7
C 6 6 6.0 6.7
D 6 6 6.7 6.0
4 以下程序运行后的输出结果是___。
int main()
{ int a=1,b=2;
a=a+b; b=a-b; a=a-b;
printf("%d,%d\n",a,b);
return 0;
}
A 1,2
B 1,1
C 2,2
D 2,1
5 以下程序运行后的输出结果是___。
int main()
{ int x,y,z;
x=y=2; z=3;
y=x++-1; printf("%d %d ",x,y);
y=++x-1; printf("%d %d\n",x,y);
y=z---1; printf("%d %d ",z,x);
y=--z-1; printf("%d %d\n",z,x);
return 0;
}
A 3 1 4 3
B 3 1 3 3
C 3 1 4 3
D 2 1 3 2
2 4 1 4 2 4 2 2 2 4 1 2 1
3 1 2 6 以下程序运行后的输出结果是___。
int main()
{ int x,y,z;
x=y=1;
z=x++,y++,++y;
printf("%d,%d,%d\n",x,y,z);
return 0;
}
A 2,3,3
B 2,3,2
C 2,3,1
D 2,2,1
7 以下程序运行后的输出结果是___。
int main()
{ int x=4,y=7;
x-=y; y+=x;
printf("%d %d\n",x,y);
return 0;
}
A 4 7
B -3 -3
C -3 11
D -3 4
8 以下程序运行后的输出结果是___。
int main()
{ unsigned short a=65536; int b;
printf("%d\n",b=a);
return 0;
}
A 65536
B 0
C 1
D -1
9 以下程序:
#include
int main()
{ char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf("%c%c\n",c5,c6);
return 0;
}
程序运行后,若从键盘输入(从第1列开始)
123<回车>
45678<回车>
则输出结果是___。
A 1267
B 1256
C 1278
D 1245
10 设a、b和c都是int型变量,且a=3,b=0,c=5,则以下值为0的表达式是___。
A 'a'&&'b'
B a&&b||c
C a&&b&&c
D a||b&&c
11 在嵌套使用if语句时,C语言规定else总是___。
A 和之前与其具有相同缩进位置的if配对
B 和之前与其最近的if配对
C 和之前与其最近不带else的if配对
D 和之前的第一个if配对
12 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为
___。
A a<>0
B !a
C a=0
D a
13 以下程序运行后的输出结果是___。
int main()
{ int a=2,b=-1,c=2;
if(a
if(b<0) c=0;
else c++;
printf("%d\n",c);
return 0;
}
A 0
B 1
C 2
D 3
14 若k是int型变量,下面的程序段的输出结果是。
k=-3;
if(k<=0) printf("####")
else printf("&&&&");
A ####
B &&&&
C ####&&&&
D 有语法错误,无输出
15 以下程序运行后的输出结果是___。
int main()
{ int a=0,b=0,c=0,d=0;
if(a=1) b=1;c=2;
else d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}
A 0,1,2,0
B 0,0,0,3
C 1,1,2,0
D 编译有错
16 以下程序运行后的输出结果是___。
int main()
{ int x1=1,x2=0,x3=0;
if(x1=x2+x3) printf("****");
else printf("####");
return 0;
}
A ****
B 有语法错误
C ####
D 无输出结果
17 当a=1,b=3,c=5,d=4时,执行下面一行程序后,x的值是___。
if(a
A 1
B 2
C 3
D 6
18 下列叙述中正确的是___。
A break语句只能用于switch语句
B 在switch语句中必须使用default
C break语句必须与switch语句中的case配对使用
D 在switch语句中不一定使用break语句
19 若有定义:float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是___。
A switch(x)
B switch((int)x);
{ case 1.0:printf("*\n"); { case 1:printf("*\n");
case 2.0:printf("**\n"); } case 2:printf("**\n"); }
C switch(a+b)
D switch(a+b)
{ case 1:printf("*\n"); { case 1:printf("*\n");
case 2+1:printf("**\n"); } case c:printf("**\n"); }
20 以下程序运行后的输出结果是___。
#include
int main()
{ int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0:a++;break;
case 1:b++;break;
}
case 2:a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
return 0;
}
A a=2,b=1
B a=1,b=1
C a=1,b=0
D a=2,b=2
二填空题(每题3分,共30分)
1 以下程序运行后的输出结果是___。
#include
int main()
{ int i=010 , j=10;
printf("%d,%d\n",++i,j--);
return 0;
}
2 以下程序运行后的输出结果是___。
#include
int main()
{ printf("%d%d%d\n",'\0','\0','\0'); return 0;
}
3 以下程序运行后的输出结果是___。
int main()
{ int i=5,j,k;
j=i+++i+++i++;
k=(++i)+(++i)+(++i);
printf("i=%5d j=%5d\nk=%5d\n",i,j,k);
return 0;
}
4 下面的程序运行时从键盘上输入9876543210<回车>,程序的输出结果是___。
int main()
{ int a; float b,c;
scanf("%2d%2f%2f",&a,&b,&c);
printf("a=%d,b=%.1f,c=%.0f",a,b,c);
return 0;
}
5 下面程序的输出结果是___。
int main()
{ char ch1,ch2;
ch1='A'+'5'-'3'; ch2='A'+'6'-'3';
printf("%d,%c\n",ch1,ch2);
return 0;
}
6 执行下面的语句:printf("%d\n",(a=3*5,a*4,a+5));,输出是___。
7 以下程序运行后的输出结果是___。
int main()
{ int x=10; printf("%d,%d\n",--x,--x); return 0;
}
8 为表示关系x≥y≥z,应使用C语言表达式___。
9 下面的程序段的输出结果是___。
int x=3;
if((x%2)?printf("**%d",x):printf("##%d\n",x));
10 以下程序运行后的输出结果是___。
int main()
{ int m=5;
switch(m/2)
{ case 1: m++;
case 2: m+=3;
case 5: m+=6;break;
default: m-=7;
}
printf("%d\n",m);
return 0; }
三 程序填空(每空5分,共30分)
1 下列程序的输出结果是16.00,请填空。
int main()
{ int a=9,b=2;
float x= 【1】 ,y=1.1,z; z=a/2+b*x/y+1/2; printf("%5.2f\n ",z); return 0; }
2 完成以下程序,输入变量a,b,c 的值,判断a,b,c 能否组成三角形,计算三角形面积。
(公式为: )。
#include
【2】 ; int main() { int a,b,c; 【3】
printf("please input the value of a,b,c ") scanf("%d %d %d ", 【4】 ); if( 【5】 ) { 【6】
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("Yes,this is a triangle!\n the area is %.2f.\n ",s); }
else printf("No,this is not a triangle!\n ") return 0; }
循环结构程序设计
一 单项选择题(每题2分,共40分)
1 以下程序中,while 循环的循环次数是___。
int main() { int i=0; while(i<10)
{ if(i<1) continue; if(i==5) break; i++; } …… return 0; }
2
c
b a p )
c p )(b p )(a p (p s ++=---=其中
A 1
B 10
C 6
D 死循环
2 以下程序的执行结果是___。
int main()
{ int n=9;
while(n>6) { n--; printf("%d",n); }
return 0;
}
该程序的输出结果是
A 987
B 876
C 8765
D 9876
3 以下程序段,while循环执行的次数是___。
int k=0;
while(k=1) k++;
A 无限次
B 有语法错
C 一次也不执行
D 执行1次
4 以下叙述正确的是___。
A do-while语句构成的循环不能用其它语句构成的循环来代替
B do-while语句构成的循环只能用break语句退出
C 用do-while语句构成的循环,在while后的表达式为非零时结束循环
D 用do-while语句构成的循环,在while后的表达式为零时结束循环
5 以下程序的执行结果是___。
int main()
{ int a,y;
a=10; y=0;
do{ a+=2; y+=a;
printf("a=%d y=%d\n",a,y);
if(y>20) break;
}while(a=14);
return 0;
}
A a=12 y=12
B a=12 y=12
a=14 y=16 a=16 y=28
a=16 y=20
a=18 y=24
C a=12 y=12
D a=12 y=12
a=14 y=26
a=14 y=44
6 以下程序的执行结果是___。
int main()
{ int x=23;
do{ printf("%d",x--); }while(!x);
return 0;
}
A 321
B 23
C 不输出任何内容
D 陷入死循环
7 有以下程序段,输出结果是___。
int x=3;
do { printf("%d ",x-=2); }while(!(--x));
A 1
B 3 0
C 1 -2
D 死循环
8 以下程序的输出结果是___。
int main()
{ int a=0,i;
for(i=1;i<5;i++)
{ switch(i)
{ case 0: case 3: a+=2;
case 1: case 2: a+=3;
default:a+=5;
}
}
printf("%d\n",a);
return 0;
}
A 31
B 13
C 10
D 20
9 以下程序的输出结果是___。
int main()
{ int i=0,a=0;
while(i<20)
{ for(; ;)
if((i%10)==0) break;
else i--;
i+=11; a+=i;
}
printf("%d\n",a);
return 0;
}
A 21
B 32
C 33
D 11
10 以下循环体的执行次数是___。
int main()
{ int i,j;
for(i=0,j=1;i<=j+1;i+=2,j--) printf("%d \n",i);
return 0;
}
A 3
B 2
C 1
D 0
11 下列程序的输出结果是___。
int main()
{ int i,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);
return 0;
}
A 4
B 2
C 1
D 0
12 下列程序的输出结果是___。
int main()
{ int i,sum;
for(i=1;i<=3;sum++) sum+=i;
printf("%d\n",sum);
return 0;
}
A 6
B 3
C 死循环
D 0
13 以下程序执行后sum的值是___。
int main()
{ int i,sum;
for(i=1;i<6;i++) sum+=i;
printf("%d\n",sum);
return 0;
}
A 15
B 14
C 不确定
D 0
14以下程序执行后的输出结果是___。
int main()
{ int i,n=0;
for(i=2;i<5;i++)
{ do{ if(i%3) continue; n++; } while(!i);
n++;
}
printf("n=%d\n",n);
return 0;
}
A n=5
B n=2
C n=3
D n=4
15 下列语句中,能正确输出26个英文字母的是___。
A for(a='a';a<='z';printf("%c",++a));
B for(a='a';a<='z';) printf("%c",a);
C for(a='a';a<='z';printf("%c",a++));
D for(a='a';a<='z';printf("%c",a));
16 以下程序执行后的输出结果是___。
int main()
{ int x=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);
return 0;
}
A 6,6
B 7,6
C 10,3
D 7,3
17 以下程序执行后的输出结果是___。
int main()
{ int a=5;
while(!(a-->5))
{ switch(a)
{ case 1:a++;
case 4:a+=4;
case 5:a+=5;break;
default:a-=5;
}
}
printf("%d\n",a);
return 0;
return 0;
}
A 12
B 7
C 5
D 13
18 对于下面的for循环语句,可以断定它执行___次循环。
for(x=0,y=0;(y!=67)&&(x<5);x++) printf("----");
A无限 B 不定 C 5次 D 4次19 在执行以下程序时,如果从键盘上输入:ABCdef,则输出结果为___。
#include "stdio.h"
int main()
{ char ch;
while((ch=getchar())!='\n')
{ if(ch>='A' && ch<='Z') ch=ch+32;
else if(ch>='a' && ch<='z') ch=ch-32;
printf("%c",ch);
}
printf("\n");
return 0;
return 0;
}
A ABCdef
B abcDEF
C abc
D DEF
20 当执行以下程序时,___。
int a=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 下列程序的输出结果是___。
int main()
{ int x=0,y=5,z=3;
while(z-->0 && ++x<5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
return 0;
}
4 下面程序的功能是:计算1到10之间的奇数之和及偶数之和,请填空。
int main()
{ int a,b,c,i; a=c=0;
for(i=0;i<=10;i+=2) { a+=i;
_ 【1】 ; c+=b; }
printf("偶数之和=%d\n 奇数之和=%d\n ",a, 【2】 ); return 0; }
5 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。
int main() { int i,j;
for(i=0; _ 【1】 ; i++) { j=i*10+6;
if(_ 【2】 )continue; printf("%d\n ",j); }
return 0; }
6 以下程序的输出结果是___。
int main() { int s,i;
for(s=0,i=1;i<3;i++,s+=i); printf("%d\n ",s); return 0; }
7 要使以下程序段输出10个整数,请填入一个整数。
for(i=0;i<=___;printf("%d \n ",i+=2)) ; 8 程序的功能是根据以下近似公式求π值:
请填空完成求π的功能。
#include "math.h " int main()
{ int n=30000; double s=0.0; long i; for(i=1;i<=n;i++) s=s+_ 【1】 ; printf("pi=%f\n ",_ 【2】 ); return 0; }
三 程序填空题(每空3分,共27分)
1 下列程序是求 的值。
#include "stdio.h "
50
141211++++ n n ?++?+?+=1331221162 π
int main()
{ int i=2; float sum=1;;
while( 【1】 )
{ sum=sum+1.0/i; 【2】 ; }
printf("sum=%f\n", 【3】 );
return 0;
}
2 以下程序的功能是从键盘输入若干个学生的成绩,统计最高成绩和最低成绩,当输入为
负数时,结束输入。
int main()
{ float x,max,min;
scanf("%f",&x);
max=min= 【1】 ;
do{ if(x>max) max=x;
if(x scanf("%f",&x); } while( 【3】 ); printf("%f,%f",max,min); return 0; } 3 下面的程序用来求出所有的水仙花数。所谓水仙花数是指一个3位数,它的各位数字的 立方和恰好等于它本身。 int main() { int n,i,j,k; for(n=100; 【1】 ) /* 判断3位数n是否是水仙花数 */ { i=n/100; /* i是n的百位上的数字 */ j= 【2】 ; /* j是n的十位上的数字 */ k=n%10; /* k是n的个位上的数字 */ if( 【3】 ) printf("%d\n",n); } return 0; } 数组 一单项选择题(每题2分,共40分) 1 以下对一维整型数组a的正确定义(说明)的是___。 A int a(10); B)int n=10,a[n]; C int n; D #define SIZE 10 scanf("%d",&n); int a[SIZE]; int a[n]; 2 若有定义(说明)int a[10];,则对数组a的元素正确引用的是___。 A a[10] B a[3.5] C a(5) D a[10-10] 3 执行下面程序段后,变量k 的值是___。 int k=3,s[2]; s[0]=k; k=s[1]*10; A 不定值 B 33 C 30 D 10 4 以下程序的输出结果是___。 int main() { int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf("%d\n",k); return 0; } A 20 B 21 C 22 D 23 5 以下对一维整型数组a初始化的语句中正确的是___。 A int a[10]=(0,0,0,0,0); B int a[10]=(); C int x=2,a[10]={10*x}; D int a[10]={0}; 6 若有以下说明,则数值为4的表达式是___。 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; A a[g-c] B a[4] C a['d'-'c'] D a['d'-c] 7 下列程序运行后的输出结果是___。 #define MAX 10 int main() { int i,sum,a[]={1,2,3,4,5,6,7,8,9,10}; sum=1; for(i=0;i printf("sum=%d\n",sum); return 0; } A sum=55 B sum=-54 C sum=-55 D sum=54 8 以下程序的输出结果是___。 int main() { int y=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]); return 0; } A 1000 B 1001 C 1010 D 1100 9 以下对二维数组a的正确定义(说明)的是___。 A int a[3][]; B float a(3,4); Cdouble a[1][4]; D float a(3)(4); 10 若有定义(说明)int a[3][4];,则对数组a的元素的引用非法的是___。 A a[2][2*1] B a[1][3] C a[4-2][0] D a[0][4] 11 以下不能对二维数组a进行正确初始化的语句是___。 A int a[2][3]={0}; B int a[][3]={{1,2},{0}}; C int a[2][3]={{1,2},{3,4},{5,6}}; D int a[][3]={1,2,3,4,5,6}; A char a[][]={'a','b','c','d','e','f'}; B char a[2][3]='a','b'; C char a[][3]={'a','b','c','d','e','f'}; D char a[][]={{'a','b','c','d','e','f'}}; 13 下列程序运行后的输出结果是___。 int main() { int a[4][4],i,j,k; for(i=0;i<4;i++) for(j=0;j<4;j++) a[i][j]=i-j; for(i=1;i<4;i++) for(j=i+1;j<4;j++) { k=a[i][j]; a[i][j]=a[j][i]; a[j][i]=k; } for(i=0;i<4;i++) { printf("\n"); for(j=0;j<4;j++) printf("%4d",a[i][j]); } return 0; } A 0 -1 -2 -3 B 0 1 2 3 1 0 -1 - 2 -1 0 1 2 2 1 0 -1 -2 -1 0 1 3 2 1 0 -3 -2 -1 0 C 0 -1 -2 -3 D 0 1 2 3 1 0 1 2 -1 0 -1 -2 2 -1 0 1 -2 1 0 -2 3 -2 -1 0 -3 2 1 0 14以下程序的输出结果是___。 int main() { int i,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]); return 0; } A 0650 B 1470 C 5430 D 输出值不定 15有以下程序: int main() { int x[3][2]={0},i; for(i=0;i<3;i++) scanf("%d",x[i]); printf("%3d%3d%3d\n",x[0][0],x[0][1],x[1][0]); return 0; } 若运行时输入:2 4 6<回车>,则输出结果是___。 A 2 0 0 B 2 0 4 C 2 4 0 D 2 4 6 16 下列描述不正确的是___。 A 字符型数组中可以存放字符串 B 可以对字符型数组进行整体输入和输出 C 可以对整型数组进行整体输入和输出 D 不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值 char x[]="a bcdef"; char x[]={'a','b' 'c','d','e','f'}; A 数组x和数组y等价 B 数组x和数组y的长度相等 C 数组x的长度大于数组y的长度 D 数组x的长度小于数组y的长度 18 以下选项中,不能正确赋值的是___。 A char s1[10];s1="Ctest"; B char s2[]={'C','t','e','s','t'}; C char s3[20]="Ctest"; D char s4[30];strcpy(s4,"Ctest"); 19 若有定义和语句:char s=[10];s="abcd";printf("%s\n",s);,则输出结果是___。 (以下□表示空格) A abcd B a C abcd□□□□□ D 编译不通过 20 当执行下面程序时,如果输入ABC,则输出结果是___。 #include #include int main() { char ss[10]="12345"; gets(ss); strcat(ss, "6789"); printf("%s\n",ss); return 0; } A ABC6789 B ABC67 C 12345ABC6 D ABC45678 二填空题(每空3分,共24分) 1 若int类型变量占两个字节,定义int x[10]={0,2,4};,则数组x在内存中所占的字节 数是___。 2 若有定义char a[]="\\141\141abc\t";,则数组a在内存中所占的字节数是___。 3 下列程序的输出结果是___。 int main() { int i,a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf("%d%d%d\n",a[2],a[5],a[8]); return 0; } 4 下列程序运行的结果是___。 int main() { char ch[7]="65ab21"; int i,s=0; for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); return 0; } 5 有定义语句:char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现 字符串复制。(注意:不得使用逗号表达式) while(s[i]) { d[j]=___; j++ ; } d[j]=0; 6 下面程序运行的结果是___。 int main() { char s[]="abcdef"; s[3]='\0'; printf("%s\n",s); return 0; } 7 以下程序的输出结果是___。 int main() { char ch[3][5]={"AAAA","BBB","CC"}; printf("\"%s\"\n",ch[1]); return 0; } 8 以下程序的输出结果是___。 int main() { char ch[]="abc",x[3][4]; int i; for(i=0;i<3;i++) strcpy(x[i],ch); for(i=0;i<3;i++) printf("%s",&x[i][i]); printf("\n"); return 0; } 三程序填空题(每空3分,共36分) 1 以下程序的功能是:从键盘上输入若干个学生的成绩(用输入负数结束输入),统计出平 均成绩,并输出低于平均分的学生成绩。请填空。 #include "stdio.h" int main() { int n=0,i; float x[1000],sum=0.0,ave,a; printf("Enter mark:\n"); scanf("%f",&a); while(a>=0.0 && n<1000) { sum+= 【1】 ; x[n]= 【2】 ; n++; scanf("%f",&a); } ave= 【3】 ; print("Output:\n"); printf("ave=%f\n",ave); for(i=0;i return 0; } 2 以下程序的功能是求出矩阵x的上三角元素之积。其中矩阵x的行列数和元素的值均由 键盘输入。请填空。 #define M 10 int main() C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); c 语言程序设计教程第二版课后习题 答 案 篇一: c 语言程序设计教程_李含光_ 郑关胜_ 清华大学 出版社习题答案习题答案[完美打印版]】1.单项选择题 (1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数 (2)主函数(main )(3)printf(),scanf()第 2 章习题参考答案 1.单项选择题 1-5 cbccc 6-10 cdcdc 11-13 dbb 2 .填空题 (1)1(2)26 (3)6 , 4 , 2 (4)10 , 6 (5)3.000000 (6)双精度(double )(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10 )%10 )*100+ (m/100 )*10+m%10 (12)0 (13)10 ,9 ,11(15) (x0y0)||(x0z0)||(y0||z0)(16 )double (17)x==0 (18)sqrt(fabs(a-b))/(3*(a+b))(19 )sqrt((x*x+y*y)/ (a+b)) 第 3 章习题参考答案 1.单项选择题 1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2 .填空题 (1)用;表示结束(2){ } (3 )y=x0?1:x==0?0:-1 (4)y%4==0y%100!=0||y%400==0 (5)上面未配对(6)default 标号(7)while ,do while ,for (8)do while (9)本次(10)本层3.阅读程序,指出结果 (1)yes (2)*(3)abother (4)28 70 (5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12 (11) i=6 ,k=4 (12)1,-2 4 .程序填空 (1)x:y ,u :z (2)m=n ,m !=0 ,m=m/10 (3)teps , t*n/(2*n+1) , printf( n”“,%2*lsf )(4)m%5==0 , 目录 第一章C语言基础知识 (1) 第二章C语言程序设计的初步知识 (3) 第三章顺序结构程序设计 (5) 第四章选择结构程序设计 (9) 第五章循环结构程序设计 (12) 第六章数组 (16) 第七章函数 (19) 第八章指针 (23) 第九章结构体与共用体 (27) 第十章文件 (30) 模拟试题一 (33) 第一章答案 (39) 第二章答案 (40) 第三章答案 (40) 第四章答案 (41) 第五章答案 (42) 第六章答案 (44) 第七章答案 (45) 第八章答案 (47) 第九章答案 (48) 第十章答案 (49) 模拟试题一答案 (52) 第一章C语言基础知识 一、选择题 1.C语言规定,必须用作为主函数名。 A)Function B)include C)main D)stdio 2.是C程序的基本构成单位。 A)函数B) 函数和过程C) 超文本过程D) 子程序3.下列说法正确的是。 A)一个函数的函数体必须要有变量定义和执行部分,二者缺一不可 B)一个函数的函数体必须要有执行部分,可以没有变量定义 C)一个函数的函数体可以没有变量定义和执行部分,函数可以是空函数 D)以上都不对 4.下列说法正确的是。 A)main函数必须放在C程序的开头 B)main函数必须放在C程序的最后 C)main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执 行的 D)main函数可以放在C程序的中间部分,但在执行C程序时是从main函数 开始的 5.下列说法正确的是。 A)在执行C程序时不是从mian函数开始的 B)C程序书写格式严格限制,一行内必须写一个语句 C)C程序书写格式自由,一个语句可以分写在多行上 D)C程序书写格式严格限制,一行内必须写一个语句,并要有行号 6.在C语言中,每个语句和数据定义是用结束。 A)句号B)逗号C)分号D)括号 7.下列字符串是标识符的是。 A)_HJ B)9_student C)long D)LINE 1 8.以下说法正确的是。 A)C语言程序总是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义 C)C语言程序总是从main()函数开始执行 D)C语言程序中的main()函数必须放在程序的开始部分 9.不是C语言提供的合法关键字。 A)switch B)print C)case D)default 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20. 指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的就是_B__。 A 在程序中凡就是以“#”开始的语句行都就是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX就是合法的宏定义命令行 D C程序对预处理命令行的处理就是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的就是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果就是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果就是_A__。 #define F(X,Y) (X)*(Y) main() { int a=3,b=4; printf("%d\n",F(a++,b++)); } A 12 B 15 C 16 D 20 5 以下程序运行后的输出结果就是_C__。 #define f(x) (x*x) main() { int i1,i2; i1=f(8)/f(4); i2=f(4+4)/f(2+2); printf("%d,%d\n",i1,i2); } A 64,28 B 4,4 C 4,3 D 64,64 6 若已定义a为int型变量,则__D_就是对指针变量p的正确说明与初始化。 A int p=&a; B int *p=a; C int *p=*a; D int *p=&a; 7 已知下列说明语句: static int a[]={2,4,6,8} static int *p[]={a,a+1,a+2,a+3}; int **q; q=p; 则表达式**(q+2)的值就是_A__。 A 6 B 2 C 4 D 8 8 下面就是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。 习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200 3.输入下面程序并运行。 #include 《C语言程序设计》练习及答案 得分评卷人复查人 一、单选题,每小题1分,共60分(将正确答案的序号写在题目的括号中)。 1、结构化程序设计的三种基本控制结构是(D )。 A、主程序、子程序、函数 B、输入、处理、输出 C、调用,返回,转移 D、顺序、选择、循环 2、下列关于C程序变量的叙述, ( D )是错误的。 A、变量名必须由字母或下划线开头。 B、程序中的变量必须在被使用之前定义。 C、不同的基本类型的变量之间可以混合运算。 D、变量的数据类型决定变量的"作用域"。 3、能将C语言编写的源程序转换为目标程序的软件是(C )。 A、编辑程序 B、汇编程序 C、编译程序 D、解释程序 4、以下符号中,合法的用户标识符是( D )。 A、-p B、int C、3ab D、_xt_ 5、以下选项中,与m=n++完全等价的表达式是( C )。 A、m=++n B、m+=n+1 C、m=n, n=n+1 D、n=n+1,m=n 6、若有定义:int aa[8];。则以下表达式中不能代表数组元aa[1]的地址的是(C )。 A、&aa[0]+1 B、&aa[1] C、&aa[0]++ D、aa+1 7、表达式!5&(7+3)&&(4+5)的值是(A)。 A、0 B、1 C、5 D、9 8、以下选项中非法的C语言表达式是(A )。 A、x+1=x+1 B、0<=x<100 C、i=j==0 D、(char)(65+3) 9、在TURBO C中, int类型变量所占字节数是(B )。 A、1 B、2 C、4 D、8 10、C语言中基本的数据类型包括(B)。 A、整型,实型,逻辑型 B、整型,实型,字符型 C语言程序设计第二版 习题参考答案 Document serial number【LGGKGB-LGG98YT-LGGT8CB-LGUT- C语言程序设计习题参考答案 习题 1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII 码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是 ___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 C语言程序设计习题参考答案 习题1 一、判断题 1.在计算机中,小数点和正负号都有专用部件来保存和表示。 2.二进制是由0和1两个数字组成的进制方式。 3.二进制数的逻辑运算是按位进行的,位与位之间没有进位和借位的关系。 4.在整数的二进制表示方法中,0的原码、反码都有两种形式。 5.有符号数有三种表示法:原码、反码和补码。 6.常用字符的ASCII码值从小到大的排列规律是:空格、阿拉伯数字、大写英文字母、小写英文字母。 解:1.F 2.T 3.T 4.T 5.T 6.T 二、单选题 1.在计算机中,最适合进行数值加减运算的数值编码是。 A. 原码 B. 反码 C. 补码 D. 移码 2.已知英文小写字母m的ASCII码为十进制数109,则英文小写字母y的ASCII码为十进制数。 A. 112 B. 120 C. 121 D. 122 3.关于ASCII码,在计算机中的表示方法准确地描述是。 A. 使用8位二进制数,最右边一位为1 B. 使用8位二进制数,最左边一位为1 C. 使用8位二进制数,最右边一位为0 D. 使用8位二进制数,最左边一位为0 4.设在机器字长4位,X=0111B,Y=1011B,则下列逻辑运算中,正确的是___________。 A. X∧Y=1000 B. X∨Y=1111 C. X⊕Y=0011 D. ˉY=1000 5.下列叙述中正确的是()。 A.高级语言就是机器语言 B.汇编语言程序、高级语言程序都是计算机程序,但只有机器语言程序才是计算机可以直接识别并执行的程序 C.C语言因为具有汇编语言的一些特性,所以是汇编语言的一种 D.C源程序经过编译、连接,若正确,执行后就能得到正确的运行结果6.用C语言编写的源程序经过编译后,若没有产生编译错误,则系统将()。 A.生成可执行文件B.生成目标文件 C.输出运行结果D.自动保存源文件 7.下列叙述中不正确的是()。 A.main函数在C程序中必须有且只有一个 B. C程序的执行从main函数开始,所以main函数必须放在程序最前面 C. 函数可以带参数,也可以不带参数。 D. 每个函数执行时,按函数体中语句的先后次序,依次执行每条语句 解:1.C 2.C 3.D 4.B 5.B 6.B 7.B 三、填空题 一 单项选择题(每题2分,共44分) 1 以下叙述正确的是__C _。 A C 程序基本组成单位是语句 B C 程序每一行只能写一个语句 C 简单C 语句必须以分号作为结束符 D 注释语句可以嵌套 2 一个C 语言程序是从_B __开始执行的。 A 程序中第一个函数 B 名为main 的函数 C 包含文件(头文件)的第一个函数 D 程序中的第一个语句 3 请选出合法的C 语言赋值语句_B __。 A a=b=58 B i++; C a=58,b=58 D k=int(a+b); 4 下面标识符中,合法的用户标识符是 _B __。 A 1abc B include C a-b-c123 D char 5 以下所列的C 语言整形常量中,正确的是_A __。 A 0x10 B 0976 C 076L D 01ff 6 C 语言中下列运算符的操作数必须为整型的是_A __。 A % B ++ C / D = 7 设a 和b 均为int 型变量,则执行以下语句后的输出为_B __。 int a=20; int b=3; printf("%d\n ",a+=(b%=2)); A 20 B 21 C 0 D 23 8 已知int i;,则执行语句 i=2.6;后,i 的值为_A __。 A 2 B 3 C 2.6 D 不确定 9 以下合法的字符常量为_D __。 A 'ab ' B '\482' C '\' D '\xaf ' 10 若y 为int 型变量,则执行以下语句后,y 的值是 _C __。 y=8; y+=y-=y*y; A 64 B –56 C –112 D –48 11 以下合法的浮点型常量是_D __。 A e-3 B 1.5e+2.4 C 3.14e+2L D 3.14 e +5 12 设int 数据占用两个字节,float 数据占用四个字节,double 数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为__A _。 printf("%d ",sizeof(a*b)+2/5); A 4 B 8 C 6 D 7 13 设int 型占2个字节,且int i=-2;,则语句printf("%u ",i);的输出结果为_C __。 A 0 B -2 C 65534 D 65535 14 若x 、y 、z 均为整型常量,且a=100,则执行下列语句后的z 值为_A _。 x=a++; y=--a; z=x+y-a--; A 100 B 400 C 200 D 300 15 若有以下定义和语句:int u=010,v=0x10,w=10,printf("%d,%d,%d\n ",u,v,w);,则输出结果是_A __。 A 8,16,10 B 10,10,10 C 8,8,10 D 8,10,10 16 设x 、y 为int 型变量,则执行下列语句后,y 的值是__A _。 x=5; y=x++*x++; y=--y*--y; A 529 B 2401 C 1209 D 625 17 假设在程序中a,b,c 均被定义成整型,并且已赋大于1的值,则下列能正确表示代数式 abc 1 的表达式是__D __。 C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后( #include C 语言程序设计习题答案 习题一 C 语言程序设计概述 一、名词解释 (1)程序P1 (2)程序设计P1 (3)机器语言P1 (4)汇编程序P2 (5)高级语言P2 (6)编译程序P3 (7)解释程序P3 (8)算法P4 (9)结构化的程序设计P9 二、简述题 1. 设计程序时应遵循哪些基本原则?P4 答:正确性、可靠性、简明性、有效性、可维护性、可移植性。 2. 算法的要素是什么?算法具有哪些特点? 答:算法的要素是:操作与控制结构;算法的特点有:有穷性、确定性、有效性、有零个或多个输入、有一个或多个输出。 3. 算法的表示形式有哪几种? 答:算法的表示形式有:自然语言、传统流程图、伪代码、结构化的流程图(N_S 流程图,盒图)。 4. 有哪三种基本结构? 答:三种基本结构是:顺序结构、选择结构和循环结构。 5. 传统流程图与N-S 流程图最大的区别是什么? 答:N-S 流程图去掉了在传统流程图中常用的流程线,使得程序的结构显得更加清晰、简单。 三、用传统流程图、N-S 图分别表示求解以下问题的算法。 1. 有3个数a ,b ,c ,要求按由大到小的顺序把它们输出。 2. 依次将10个数输入,求出其中最大的数 和最小的数并输出。 3. 求1+2+3+…+100的值。 5. 求下列分段函数的值。 6. 求100~200之间的所有素数。 7. 求一元二次方程ax 2+bx+c=0的根。分别考虑d=b 2-4ac 大于0、等于0和小于0三种情况。 四、注释下面C 程序的各个组成部分。 main() /*主函数 */ { /*程序开始 */ int a,k,m; /*定义三个用来存放整数的变量 */ a=10; /*将整数10赋值给变量a */ k=2; /*将整数2赋值给变量k */ m=1; /*将整数1赋值给变量1 */ a=(k+m)*k/(k-m); /*先求出算术表达式的值,并将其赋值给变量a */ printf("%d\n",a); /*在屏幕上打印出变量a 的值 */ } /*程序结束 */ 习题二 数据类型、运算符与表达式 一、选择题 1~10:BCDCB DDBCA 11~20: ADDAA DBADC 21~28: DABAD CDD Y= 3X (X<1) 4X-1 (X=1) 5(X-1)+6 (1 第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII) 单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n 【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。 《C语言程序设计》习题解答 沈国荣隋雪莉闵芳 目录 第1章 C语言程序设计概述 (2) 第2章数据类型及其运算 (3) 第3章语句与输入输出 (4) 第4章选择结构程序设计 (6) 第5章循环结构程序设计 (9) 第6章数组 (12) 第7章函数 (15) 第8章编译预处理 (18) 第9章指针 (19) 第10章结构体与共用体 (22) 第11章位运算 (26) 第12章文件操作 (27) 第1章 C语言程序设计概述 1. 函数、main()函数 2. /*、*/ 3. .C、.OBJ、.EXE 4. 顺序结构、选择结构、循环结构 三、编程题 1.【参考代码】 #include 第2章数据类型及其运算 注:第5题B选项为:'\'' '\017' '\t' 二、填空题 1. 字母、数字、下划线 2. 1、4、4、8 3. -16 4. 3.5 5. 0 6. 9 7. 6 8. -60 9. y%2==1 10. 1、0、1 三、程序阅读题 1. b 2. 0 3. 0 4. 10,2 5. 9,10,9,10 6. 3,1,0,0 7. 3,20,30,1 第3章语句与输入输出 1. 123.47 2. D 3. 回车 4. 10,2 三、程序阅读题 1. 261 2. 20 3. 201,10 4. y=4630 y=4630 5. *3.140000,3.142* 6. c:dec=120,oct=170,hex=78,ASCII=x 7. x=1 y=2 *sum*=3 10 squared is : 100 8. 2 48 20.2 20.2 9. x+y+z=48 10. 55, ,A 四、编程题 1.【参考代码】 #includeC语言程序设计第三版习题库答案
c语言程序设计教程第二版课后习题答案
C语言程序设计习题集
C语言程序设计试题集与答案解析
C语言程序设计习题集3
c语言程序设计第五版习题答案
(完整版)C语言程序设计练习及答案
C语言程序设计第二版习题参考答案
C语言程序设计(第二版)习题参考答案
桂林电子科技大学C语言程序设计习题集及答案
C语言程序设计期末考试试题(含答案)
C语言程序设计习题答案
C语言程序设计试题集及其答案
C语言程序设计第三版谭浩强课后习题答案完整版
C语言程序设计试题集及答案
C语言程序设计习题集沈国荣-参考答案