1、 习题和模拟试题答案 第1章 C语言编程概述 〖基础篇〗 一、选择题 1.B 2.C 3.B 4.A 5.A 6.A 7.A 二、填空题 1.顺序 选择 循环 2.\ 3.常量 变量 函数 用户自定义类型 4./* */ 5. ; 6.函数 〖提高篇〗 一、选择题 1.A 2.B 3.B 4.B 二、填空题 1.UNIX 2.ASCII3..C .OBJ .EXE 4.连接 第2章 基本数据类型和简单程序设计 〖基础篇〗 一、选择题 1.C 2.B 3.A 【解析】B选项中5e2.5非法,C选项中do
2、是C语言的保留字,D选项中的用户标识符2_and以数字开头,都是非法的。 4.B 5.B 6.C 7.C 8.A 9.C 10.C 二、填空题 1.double x=7,y=7; 2.构造数据类型 浮点型 3.①②③⑦⑧⑨⑩ 4.自动转换 强制转换 5.5.0 6.\0 三、判断题 1.× 2.× 3.× 4.× 5.× 6.√ 7.√ 8.× 9.× 10.× 11.× 12.× 四、写出下面程序的运行结果。 1.n=1.000000 2.7 五、编写程序 1.有两个浮点数a=5.2,b=3.1,计算并输出它们的和、差、积、商。 main( )
3、 {float a=5.2,b=3.1; printf("%f, %f, %f, %f,",a+b,a-b,a*b,a/b); } 2.已知笑脸字符的ASCII值为1,编程输出三个笑脸字符。 main( ) {char c='\1'; printf("%c",c); printf("%c",c); printf("%c",c); } 〖提高篇〗 一、选择题 1.C 2.D 【解析】因为285是一个非法的八进制常量 3.A 7.B 8.B 4.A 【解析】sum是变量,main和printf是函数名称。 二、填空题 1.0x4b 0113 0
4、165 117 61 0x3d 2.2.5 2.32 3.10 9.7 9 10 4.0 0.8 (int)(a+b)%a 三、写出下面程序的运行结果。 1.\ab 123 aAA bBB 2.xabcde hjk 四、编写程序 1.有一个字符变量c='F',将其转换为小写字母后输出。 main( ) {char c='F'; c=c+32; printf("%c",c); } 第3章 运算符与表达式 〖基础篇〗 一、选择题 1.D 2.D 3.B 4.B 5.D6.
5、B 7.D8.D9.A 10.A 11.C 12.B 13.D 14.C 15.B 16.B 17.D 18.C 19.B 二、填空题 1.900 2.1 3.2 4.000000 4.36 5.40 6.float a1=1,a2=1; 7.; 8.c=a a=b b=c 9.12 -14 10.3 7 11.自左向右 自右向左 12.-3 三、判断题 1.× 2.√ 3.× 4.√ 5.× 6.× 四、写出下面程序的运行结果。 1.9 8 15 7 2.y=10,x=6 3.2 4 2 8 4.
6、60 20 x=18 b=18 x=3 b=3 〖提高篇〗 一、选择题1.D2.B38.B4.A 5.B6.C7.A8.C 二、填空题 1.48.8 2.fabs(x)+fabs(b) fabs(a+b) 3.73.1 7.2 三、写出下面程序的运行结果。 1.89 2.x=6 x=7,y=7 x=6,y=7 四、程序填空 1.a/10%10 100=t 第4章 数据的输入输出 〖基础篇〗 一、选择题 1.B 2.C 3.A 4.D 5.C 6.B 7.B 8.D 9.D 10.B 二、填空题 1
7、. "%6x" "%o" "%3c" "%10.3f" "%8s" 2. "%d" 3.i=10,j=20 三、判断题 1.× 2.× 3.× 4.√ 5.× 四、写出下面程序的运行结果。 1.a=1234 a= 1234 a=001234 a=1234 f=3.141593 f=3.1416 c=A c=41 2.c1 is 1, c2 is 2, m is 34 f is 567.000000 3.a=63,b=77,c=119 a=77,b=115,c=167 a=3f,b=4d,c=77 4.BBB 5.In
8、ternet,Internet,Internet Internet,Internet ,Internet 五、编写程序 1.读入正方形边长a,求面积。 main() { int a,s; scanf("%d",&a); s=a*a; printf("%d \n",s); } 2.设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果。输出时要有文字说明,取小数点后两位数字。 main() {float r,h; scanf("%f%f",&r,&h); printf("圆周长为:%.2f \n",2*3
9、14*r); printf("圆面积为:%.2f \n",3.14*r*r); printf("圆球体积为:%.2f \n",4.0/3*3.14*r*r*r); printf("圆柱体积为:%.2f \n",3.14*r*r*h); } 〖提高篇〗 一、选择题 1.D 2.A3.D 二、填空题 1. H C 三、写出下面程序的运行结果。 1.ch=G,c1=H,c2=F 2.x=10,x=10,x=12,x=a,x=10 (假设表示一个空格) 四、下列各程序段都存在语法或逻辑错误,请标明并说明原因。
10、 1.main() { int i1 , j , k ; scanf("%3d%3d%3d" i1 , j , k) ; /*变量名前应加&运算符,改为:scanf("%3d%3d%3d",& i1 ,& j ,&k) ; */ printf("%d,%d", i1 , j , k) ; /*%格式符应与输出项的个数相等,改为:printf("%d,%d,%d", i1 , j , k) ;*/ } 2.main() { int a , b ; /*变量x应先定义,后使用,在此处
11、添加语句 :float x;*/
scanf("%d,%d", &a,&b) ;
x=a/b;
printf("x=%f", x) ;
}
3.main()
int x , y ;
scanf("%d,%d", x , y) ;
/*变量名前应加&运算符,改为:scanf("%d,%d", &x , &y) ;*/
if (x>=y) printf(“x>=y”);
printf("x 12、意,上一行的语句应为: else printf("x 13、
}
3.输入两个八进制整数,以十进制形式输出它们的和。
main()
{ int a1,a2;
scanf("%o%o",&a1,&a2);
printf("%d \n",a1+a2);
}
4.输入两个实数a,b,交换它们的值后输出。
main()
{ float a1,a2,x;
scanf("%f%f",&a1,&a2);
x=a1;a1=a2;a2=x;
printf("%f %f \n",a1,a2);
}
第5章 控制语句
5.1关系表达式和逻辑表达式
基础篇
一、选择题
1.C 2.D 3.D 4.D 5.D. 6 14、.B 7.C 8.A 9.D 10.B
11.D
二、填空题
1.!
2.10
3.0 1 1
4.1 1
0 1
1 0
1 1
0
提高篇
一、选择题
1.B 2.D 3.A 4.B 5.D 6.D
二、填空题
1.pow(x,3)>4
2.(1)a 15、'A'&&a<='Z'
3.1 0 1
5.2条件语句if
基础篇
一、选择题
1.D 2.D 3.A 4.D 5.B
二、填空题
1.复合语句
2.max=x>=y?x:y;
3.其前面最近的未曾配对的if
三、写出下面的程序结果
1.10
2.b
四、程序填空
(n%3= =0)
五、编写程序
1.输入一个整数,判断它是奇数还是偶数。
main()
{ int n;
scanf("%d",&n);
if(n%2= =1) printf("ji shu \n");
else printf("ou shu");
}
提高篇
一 16、选择题
1.C 2.A 3.A 4.B 5.C
二、填空题
1.9
2.3 1 1
3.(1)5 5 4
(2)5 5 4
(3)3 3 4
三、写出下面的程序结果
1.1
2.s=2,t=3
3.1
四、程序填空
1. (a>b)
(a>c)
(b>c)
2.a:b;
max:c;
a:b;
min:c;
五、编写程序
1.编制一个C程序,计算并输出下列分段函数值:(其中x由键盘输入)
x2+2x-6 x<0,x≠-3
y= x2-5x+6 0≤x<10,x 17、≠2,x≠3
x2-x-15 x=-3,x=2,x=3,x≥10
main()
{
int x,y;
scanf("%d",&x);
if(x<0&&x!=-3) y=x*x+2*x-6;
if(0<=x&&x<10&&x!=2&&x!=3) y=x*x-5*x+6;
if(x= =-3||x= =2||x= =3||x>=10) y=x*x-x-15;
printf("%d\n",y);
}
2.输出一元二次方程ax2+bx+c=0的根。(a不等于0)
#include 18、d;
scanf("%d%d%d",&a,&b,&c);
d=b*b-4*a*c;
if(d>0) printf("%f%f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
if(d= =0) printf("%f\n",-b/(2*a));
if(d<0) printf("wu shi shu jie \n");
}
5.3开关语句switch
一、选择题
1.B 2.A 3.C 4.C 5.A
二、填空题
1.8
2.break
三、写出下面程序的运行结果。
1.a=2,b=1
2.VeryGood
G 19、ood
VeryGood
Fail
Pass
Pass
5.4 for循环
基础篇
一、选择题
1.A 2.D 3.C 4.C
二、填空题
continue
break
三、写程序结果
1.10 20 30 40 50
2.1 1 2 3 5 8 13 21
3. sum=6
四、程序填空
1.s=s*i
2.year%400= =0 year%100!=0 count++
五、编写程序
1.求200~300之间7的倍数的和。
main( )
{int i,s=0;
for(i=200;i<= 20、300; i++)
if(i%7= =0) s=s+i;
printf("%d\n",s);
}
2.从0开始,输出n个连续的偶数。
main( )
{int i,n;
scanf("%d",&n);
for(i=1;i<=n; i++)
printf("%d\n",(i-1)*2);
}
3.按公式 s(n)=12+22+......+n2 ,编写计算并输出s值,其中的n值由键盘输入。
main( )
{int i,n,s;
scanf("%d",&n);
for(i=1;i<=n; i++)
s=s+i*10+2;
printf("%d\n",s);
21、}
提高篇
一、 选择题
1.D 2.A 3.B
二、 写出下面程序的运行结果
1.s=30
2.*#*#*#$
3.1 3 0
4.6
三、 程序填空
1.f3
四、 编写程序
1.编写一程序,从键盘输入10个实数,计算并输出算术平均值。
main( )
{float x,,s=0;
int i;
for(i=1;i<=10; i++)
{scanf("%f",&x);
s=s+x;
}
printf("%f\n",s/10);
}
3.
2.输入20个数,统计非负数个数并计算非负数之和。
main( )
{int 22、i,n=0,s=0,x;
for(i=1;i<=20; i++)
{scanf("%d",&x);
if(x>=0) { n++; s+=x; }
}
printf("%d%d\n",n,s);
}
5.5 while和do while循环
基础篇
一、选择题
1.A 2.D 3.B 4.B
二、判断题
1.× 2.√ 3.√ 4.√
三、写出下面程序的运行结果
1.73165
四、程序填空
1.x!=-1
x 23、t s=0,i=1;
for(;i<=100;i++)
s=s+i;
printf("%d\n",s);
}
main( )
{int s=0,i=1;
while(i<=100)
s=s+i++;
printf("%d\n",s);
}
main( )
{int s=0,i=1;
do
s=s+i++;
while(i<=100);
printf("%d\n",s);
}
提高篇
一、选择题
1.D 2.C 3.D 4.C 5.C 6.B 7.C
二、写出下面程序的运行结果
1.6 0 6
2.(1)qwert
(2)rxfsu
24、
(3) qwert?
三、程序填空
d=1.0;
k++;
(k<=n)
四、编写程序
输入20个数,输出其中最大的数。
main( )
{int max,i=1,x;
scanf("%d",&x);
max=x;
do
{ scanf("%d",&x);
if(max 25、};
int grid[4][10];
2. int array[10] = {9,4,7,49,32,-5};
0 9
scanf("%d",&array[1]);
array[0] = 39;
array[0] = array[5] + array[3];
3.(1)3
(2)5
(3)8
(4)9
(5)9
4. int a[10]={9,4,12,8,2,10,7,5,1,3};
0 9
8
8
5.j=0 j<10 sum=sum+s[j]
二、选择题
1.B 2.D 3.D 4.C 5.C 6.B 7.C 26、 8.C 9.C 10.D
11.D
三、判断题
1.× 2.× 3.√ 4.× 5.× 6.√ 7.× 8.√ 9.×
四、写程序结果
1.s=15
五、程序填空
1.&a[i]
ave=ave+a[i]
六、编写程序
1.定义一个3行4列的整型数组,将数组每个元素的值设置为行和列下标的和。
main()
{int array[3][4];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{array[i][j]=i+j;
printf("%d\t", array[i][j]);}
}
提高篇
一、选择题
27、
1.D 2.B 3.A
二、请改正下面程序的错误
1.int i,j,list(10); 改为 int i,j,list[10];
for(i=0,i<10,i++) 改为 for(i=0;i<10;i++)
for(j=9,j>=0,j--) 改为 for(j=9;j>=0;j--)
三、写出下面程序的运行结果
1. -5.77 2 1
2. 4 0 0 -4 -3
四、程序填空
1.[20]
20
&array[i]
19
max=array[i];
min=array[i];
sum+array[i] 28、
sum/20
五、编写程序
1.数组x有十个元素,编程将其元素首尾颠倒。(即第一个元素与最后一个元素交换,第二个元素与倒数第二个元素交换…)
main()
{int a[10]={5,65,654 ,5 ,5 ,56,588,77,58,5},j,x;
for(j=0;j<5;j++)
{x=a[j]; a[j]=a[9-j]; a[9-j]=x;}
for(j=0;j<10;j++)
printf("%d\t", a[j]);
}
6.2字符型数组
基础篇
一、填空题
1. "XYZxyz" "XYZxyz"
2.XYZxyz
二、选择题
29、1.B 2.C 3.D 4.A 5.C 6.C 7.A 8.C
9.A 10.C 11.C 12.C 13.C
三、判断题
1.× 2.× 3.× 4.√
四、写出下面程序的运行结果
1.4 3
2.123
五、程序填空
s[i]>= '0'&& s[i]<= '9'
六、编写程序
求数组int a[20]中奇数的个数和平均值,以及偶数的个数和平均值。
main()
{ int a[20] ,i,m,n,s1=0,s2=0;
for(i=0;i<20;i++)
{scanf("%d",&a[i]);
if (a[i]%2= =1 )
{s1=s1 30、a[i];m++;}
else {s2=s2+a[i];n++;}
}
printf("%d,%f,%d,%f\n", m, (float)s1/m, n, (float)s2/n);
}
提高篇
一、选择题
1.C 2.A
二、写程序结果
1.abc
三、程序填空
1.a[n]>= 'A'&& a[n]<= 'Z'
a[n-1]
四、编写程序
1.输入一行文字,将字母变成其下一字母(如'a'变成'b','b'变成'c',……'z'变成'a',其他字符不变)后输出。
main()
{ char str[80];
int i;
gets(str 31、);
for(i=0;str[i]!='\0';i++)
{if (str[i]= ='Z'||str[i]= ='z')
str[i]-=25;
else if (str[i]> ='A'&&str[i]<'Z'|| str[i]> ='a'&&str[i]<'z') str[i]+=1;
}
puts(str);
}
2.统计输入的一串字符(假设以‘\n’结束)中,大写字母A,B,...,Z各出现的次数。
(提示,用一个数组count[26]计数各个字母出现的次数,count[0]表示A出现的次数,count[1]表示B出现的次数,...,count[25 32、]表示字母Z出现的次数。初始时count的各元素值为0。以后,每读入一个字符ch ,若它是一个大写字母,就让相应计数单元count[ch-'A']加1。)
main( )
{int count[26] ,i;
char ch[80];
for(i=0;i<26;i++)
count[i]=0;
gets(ch);
for(i=0;i 33、A'+i,count[i]);
}
第7章 函数
一、选择题
1.D 2.D 3.B 4.D 5.C 6.B 7.B 8.B 9.C 10.B
11.C 12.D 13.B 14.A 15.A 16.D
二、填空题
1.7 3
2.auto
3.函数调用
4.局部变量
5.return
6.auto extern register static
7.外部
8.递归
9.9
三、判断题
1.× 2.× 3.× 4.× 5.× 6.√ 7.√ 8.√ 9.× 10.√
11.× 12.√ 13.√ 14.√ 15 34、.√
四、写出下面程序的运行结果。
1. *
*
*
*
*
2.15
300
3.x=3,y=4,n=7
4.good! pass! bad! well!
五、程序填空
1.int int result
2.n=1
1.0/(n*n)
sqrt(6*s)
3.return 0
gets(str)
num++
4.-f
m
六、请写出下面每个函数的功能
1. 比较两个正数a和b的大小,若a大于b,则返回1,若a等于b,则返回0,若a小于b 35、则返回-1。
2.求出从键盘上输入的n个常数的平方和并返回。
2. 计算1+x+x2+x3+…+xn的值并返回。
第8章 文件
一、选择题
1.B 2.C 3.B 4.B 5.B 6.A 7.C 8.C 9.B 10.B
11.D 12.A
二、填空题
1.fputs('A',fp)
2.fputs("Hello",fp)
3.fprintf(fp,"%d %d",23,567);
4. "r"
"w"
"a"
三、程序填空
1.fopen("c.dat","w")
ch , fp
四、写出以下程序的功能:
1.输入若干浮点数,输出到文 36、件“dada.dat”文件中,输入负数时结束输入。
第9章 编译预处理
一、选择题
1.A 2.B 3.A 4.B 5.B 6.D
二、填空题
1.#define EOF -1
2.#include 37、C 20.D
21.B 22.B 23.C 24.B 25.B 26.C 27.C
二、填空题
1.26
2.首地址
3.10 12 13
4.指针变量
三、判断题
1.× 2.× 3.√ 4.√ 5.× 6.√ 7.×
四、写出下面这个程序的输出结果:
1. ABCDEFGHIJKL
EFGHIJK
ABFDEFGHIJKL
ABFDEFGHI
2.a=36,b=16,c=19
3.n1=1,n2=6
4.i=10,j=2
5.i=15
6.s=24
五、程序填空
1.p
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818