C语言程序设计习题答案.docx
《C语言程序设计习题答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题答案.docx(14页珍藏版)》请在冰豆网上搜索。
![C语言程序设计习题答案.docx](https://file1.bdocx.com/fileroot1/2022-12/31/ce3a89a3-ff82-487b-bda1-0b946cf33001/ce3a89a3-ff82-487b-bda1-0b946cf330011.gif)
C语言程序设计习题答案
习题答案
第1章C语言概述
一、填空题答案
1.操作码操作数
2.编辑编译连接运行
3.UNIX
4.main
二、选择题答案
1.D2.A3.C4.C5.D
三、编程题答案
1.编写一个C程序,输出以下信息:
******************************
Verygood!
******************************
main()
{printf("**************************\n");
printf("\n");
printf("Verygood!
\n");
printf("\n");
printf("**************************\n");
}
运行结果:
**************************
Verygood!
**************************
2.编写一个C程序,输入a、b、c3个值,输出其中最大者。
main()
{inta,b,c,max;
printf("请输入三个数a,b,c:
\n");
scanf("%d,%d,%d",&a,&b,&c);
max=a;
if(max
max=b;
if(maxmax=c;
printf("最大数为:
%d",max);
}
运行结果:
请输入三个数a,b,c:
6,5,1↙
最大数为:
6
第2章数据类型、运算符与表达式
一、填空题答案
1.基本类型构造类型指针类型空类型
2.小数形式指数形式
3.+、-、*、/、%
4.1
5.逗号运算符
二、选择题答案
1.B2.C3.D4.C5.D
三、编程题答案
1.要将“China”译成密码,密码规律是:
用原来的字母后面第4个字母代替原来的字母。
例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。
因此“China”应译为“Glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使c1、c2、c3、c4、c5分别变为‘G’、‘l’、‘m’、‘r’、‘e’,并输出。
main()
{charc1='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
2.
main()
{inti,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章顺序结构程序设计
一、填空题答案
1.67,D
2.字符或字符型变量值
3.右对齐输出该字串,左补空格
4.123 ,A.45.000000
5.65,89
二、选择题答案
1.D2.C3.A4.C
三、编程题答案
1.从键盘输入圆的半径值,求圆的面积。
#define PI 3.14159
main()
{floatr,s;
scanf("%f",&r);
s=PI*r*r;
printf("s=%f\n",s);
}
2、已知方程ax2+bx+c=0的系数值(设b2-4ac>0),求方程的根。
#include
main()
{floata,b,c,x1,x2;
scanf("%f%f%f",&a,&b,&c);
x1=(-b+sqrt(b*b-4*a*c))/(2*a); /*不要丢失乘号和括号*/
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);
}
第4章选择结构程序设计
一、填空题答案
1.><≥≤==!
=
2.假(0值)真(非0值)
3.2
4.逻辑非(!
)
5.任何类型的数据
二、选择题答案
1.A2.D3.D4.B5.B
三、编程题答案
1.有一函数:
写一程序,输入x,输出y值。
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
{y=3*x-11;
printf("x=%3d,y=3*x-11=%d\n",x,y);}
}
2.给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。
90分以上为‘A’,80~90分为‘B’,70~79分为‘C’,60~69分这‘D’,60分以下为‘E’。
main()
{floatscore;
chargrade;
printf("请输入学生成绩:
");
scanf("%f",&score);
while(score>100||score<0)
{printf("\n输入有误,请重输:
");
scanf("%f",&score);}
switch((int)(score/10))
{case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0:
grade='E';
}
printf("成绩是%5.1f,相应的等级是%c。
\n",score,grade);
}
3.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
#include
main()
{charc;
intletter=0,space=0,digit=0,other=0;
printf("请输入一行字符:
\n");
while((c=getchar())!
='\n');
{if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letter++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
elseother++;
}
printf("字母数=%d,空格数=%d,数字数=%d,其他字符数=%d\n",letter,space,digit,other);
}
运行情况:
请输入一行字符:
Myteacher'saddressis"#123BeijingRoad,Shanghai".
字母数:
38,空格数:
6,数字数:
3,其他字符数:
6
第5章循环结构程序设计
一、填空题答案
1.continue
2.循环执行一次
3.*#*#*#$
4.8
5.1
2
3
二、选择题答案
1.C2.D3.B4.A5.C
三、编程题答案
1、求1+4+7+……+100之和。
解法1:
main()
{ints=0,i;
for(i=1;i<=100;i+=3)
s=s+i;
printf("s=%d\n",s);
}
解法2:
main()
{ints=0,i=1;
while(i<=100)
{s=s+i;
i+=3;
}
printf("s=%d\n",s);
}
2、求12+32+52+...+992之和。
main()
{longs;
inti;
s=0;
for(i=1;i<=99;i+=2)
s=s+i*i;
printf("s=%ld\n",s);
}
3、求1+1/3+1/5+...+1/99之和。
main()
{inti;
floats;
s=0;
for(i=1;i<=99;i+=2)
s=s+1.0/i; /*不能写作1/i*/
printf("s=%f\n",s);
}
4、求1+1/3+1/5+...的前20项之和。
main()
{inti;
floats;
s=0;
for(i=1;i<=20;i++)
s=s+1.0/(2*i-1); /*不能写作1/(2*i-1)*/
printf("s=%f\n",s);
}
5、从键盘输入一批字符(以@结束),按要求加密并输出。
加密规则:
①所有字母均转换为小写。
②若是字母'a'到'y',则转化为下一个字母。
③若是'z',则转化为'a'。
④其它字符,保持不变。
#include
main()
{charch;
while((ch=getchar())!
='@') /*先赋值再判断*/
{if(ch>='a'&&ch<='y')
ch=ch+1;
elseif(ch>='A'&&c<='Y')
ch=ch+32+1;
elseif(ch=='Z'||ch=='z')
ch='a';
putchar(ch);
}
putchar('\n');
}
第6章数组
一、填空题答案
1.10
2.第二维的长度
3.\0
4.0
5.0
二、选择题答案
1.B2.D3.B4.B5.C
三、编程题答案
1.从键盘输入11个数存入一维数组中,先输出下标为奇数的元素,再输出下标为偶数的元
素。
main()
{floata[11];
inti;
for(i=0;i<=10;i++) scanf("%f",&a[i]);
for(i=1;i<=9;i+=2)printf("%f,",a[i]);
for(i=0;i<=10;i+=2)printf("%f,",a[i]);
printf("\n");
}
2.从键盘输入11个数存入一维数组中,将下标为奇数的元素值取倒数后重新存入该数组中,并输出所有元素。
main()
{floata[11];
inti;
for(i=0;i<=10;i++)
scanf("%f",&a[i]);
for(i=1;i<=9;i+=2)
a[i]=1/a[i];
for(i=0;i<=10;i++)
printf("%f,",a[i]);
printf("\n");
}
3.从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。
main()
{intp[10],i,j,t;
chara[10][30],m[30];
for(i=0;i<=9;i++)
gets(a[i]);/*输入姓名存入数组a的第i行*/
for(i=0;i<=9;i++)
scanf("%d",&p[i]);/*输入成绩*/
for(i=0;i<=8;i++)
{for(j=i+1;j<=9;j++)
{if(p[i]
{t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/
strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/
}
}
}
for(i=0;i<=9;i++)
{printf("%s,",a[i]); /*输出姓名*/
printf("%d\n",p[i]);/*输出成绩*/
}
}
第七章函数
一、填空题
1.a=7;b=6;x=7a=2;j=7;x=5
2.1,1,1
二、选择题
1.D2.A3.B4.D5.B
第八章指针
一、填空题
1.*max=j;*min=j;7,a,&max,&min
2.地址的变量
3.取地址
4.24
5.8,12
二、选择题
1.B2.C3.D4.D5.D
三、编程题
1.输入3个整数,按由小到大的顺序输出。
#include
voidmain()
{
voidswap(int*p1,int*p2);
intn1,n2,n3;
int*p1,*p2,*p3;
printf("Inputthreeintegersn1,n2,n3:
");
scanf("%d%d%d",&n1,&n2,&n3);
p1=&n1;p2=&n2;p3=&n3;
if(n1>n2)swap(p1,p2);
if(n1>n3)swap(p1,p3);
if(n2>n3)swap(p2,p3);
printf("\nNow,theorderis:
%d,%d,%d\n",n1,n2,n3);
}
voidswap(int*p1,int*p2)
{
intt;
t=*p1;
*p1=*p2;
*p2=t;
}
2.输入3个字符串,按由小到大的顺序输出。
#include
#include
voidmain()
{
voidswap(char*,char*);
charstr1[20],str2[20],str3[20];
printf("inputthreeline:
\n");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("Now,theorderis:
\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}
voidswap(char*p1,char*p2)
{
charp[20];
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
3.写一函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
#include
intsn(char*a)
{
inti=0;
while(*a++)
i++;
returni;
}
voidmain()
{
intsum;
chara[100];
scanf("%s",a);
sum=sn(a);
printf("\n");
printf("%d\n",sum);
}
第九章编译预处理
一、1、宏定义文件包含条件编译
2、#define宏名(标识符)字符串
3、形参替换
4、条件编译
二、DDBD
第十章结构体和共用体
一、1、struct
2、union
3、enum
4、结构体变量名.成员名
5、将结构体变量中的成员作为参数将整个结构体变量作为参数将指向该结构体变量的指针作为参数
二、DABCA
第十一章文件
一、1、文件
2、文本文件二进制文件
3、fopen
4、换行符
5、写的方式
二、CBACA
第十二章面向对象程序设计
一、1、过程对象
2、私有的
3、默认的(缺省的)
4、对象名、成员名
5、重载
二、DDCAD