c语言课后习题参考答案.docx
- 文档编号:23775893
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:31
- 大小:23.11KB
c语言课后习题参考答案.docx
《c语言课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《c语言课后习题参考答案.docx(31页珍藏版)》请在冰豆网上搜索。
c语言课后习题参考答案
第1章习题参考答案
1、选择题
(1)C
(2)C(3)D(4)B(5)D
(6)D(7)C(8)A(9)A(10)C
2、填空题
(1)函数、一个主函数、函数。
(2)/*、*/。
(3)连接。
(4)#。
(5)main。
(6)/*……*/。
(7).h。
(8)F5。
(9).exe(10).exe、.obj、.exe。
3、程序设计题
(1)#include
voidmain()
{
printf("*\n");
printf("*S*\n");
printf("*\n");
}
(2)#include
voidmain()
{
printf("*****************\n");
printf("Yourarewelcome!
\n");
printf("-----------------\n");
}
(3)#include
voidmain()
{
charc1,c2;
printf("请输入c1和c2的值:
");
c1=getchar();
scanf("%c",&c2);
printf("c1=%c\n",c1);
printf("c2=");
putchar(c2);
printf("\n");
}
第2章习题参考答案
1、简述算法的概念。
答:
算法就是为解决一个具体的问题而使用的确定的、有限的方法和步骤。
2、算法应具备哪些特性?
答:
算法应具备有穷性、确定性、可行性、输入、输出等五种特性。
3、分别说明什么是自然语言描述法?
什么是框图语言描述法?
什么是伪语言描述法?
什么是N-S框图语言描述法?
它们的优缺点各是什么?
答:
①用人们日常使用的语言来描述算法,称为算法的自然语言描述法。
②框图语言描述法是用一些特殊符号来描述算法流程的算法。
③N-S框图语言描述法是一种将具体的功能都写在一个矩形框内,框内又可以包含其他的从属框的描述方法。
④伪语言描述法是用介于自然语言和计算机语言之间的文字符号来描述算法。
(优缺点略)
4、在结构化程序设计方法中,有哪几种基本结构?
答:
在结构化程序设计方法中有顺序结构、分支结构和循环结构三种。
5、请用伪语言写出打印乘法九九口诀表的算法。
参考算法如下:
①初始化
2i=1
3j=1
4printf("%d*%d=%-3d",i,j,i*j);//-3d表示左对齐,占3位
5j++列号加1
6如果列号j<=行号i转到④。
7i++行号加1
8如果行号i<10转到③。
9算法结束。
第3章习题参考答案
1、选择题
(1)C
(2)C(3)D(4)D(5)D
(6)D(7)C(8)A(9)B(10)B
(11)A(12)A(13)C(14)B(15)A
(16)C(17)B(18)A(19)B(20)C
2、填空题
(1)a%2!
=0或a%2==1。
(2)0。
(3)_1,_0_。
(4)3.5。
(5)0。
(6)3.5。
(7)4.5。
3、程序设计题
(1):
#include
main()
{
floatr=0,h=0,l=0,v=0,pi=0;
pi=3.1415926;
printf("请输入圆半径及圆柱的高,用逗号分隔:
");
scanf("%f,%f",&r,&h);
l=2*pi*r;
v=pi*r*r*h;
printf("圆周长为:
%6.2f\n",l);
printf("%圆柱体积为:
%6.2f\n",v);
}
(2):
#include
main()
{
charc1='C',c2='h',c3='i',c4='n',c5='a';
printf("原字符为:
%c%c%c%c%c\n",c1,c2,c3,c4,c5);
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("加密后的字符为:
%c%c%c%c%c\n",c1,c2,c3,c4,c5);
c1='T',c2='o',c3='d',c4='a',c5='y';
printf("题目
(2)原字符为:
%c%c%c%c%c\n",c1,c2,c3,c4,c5);
/*c1='w',c2='x',c3='y',c4='z',c5='w';*/
c1-=22;
c2-=22;
c3-=22;
c4-=22;
c5-=22;
printf("题目
(2)加密后的字符为:
%c%c%c%c%c\n",c1,c2,c3,c4,c5);
printf("题目(3)原字符为:
%c%c%c%c%c\n",c1,c2,c3,c4,c5);
c1-=4;
c2-=4;
c3-=4;
c4-=4;
c5-=4;
printf("题目(3)加密后的字符为:
%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
(3):
#include
main()
{
longx=0;
inth=0,m=0,s=0;
printf("请输入秒数,为一个正整数:
");
scanf("%d",&x);
h=x/3600;
m=x%3600/60;
s=x%3600%60;
printf("你输入的秒数为%d小时%d分%d秒\n",h,m,s);
}
第4章习题参考答案
1、选择题
(1)C
(2)C(3)C(4)B(5)D
(6)B(7)C(8)A(9)A
2、填空题
(1)i<9、i、i++;++a;、i++;、9、10
(2)i<10、i、a++、i++、9、10、10。
(3)54321。
(4)x%3==0||x%7==0、f=1。
3.程序阅读题
(1)pass
(2)120
4、程序设计题
(1)参考程序:
#include
intmain(void)
{
intnumber;
printf("Enteranumber:
");
scanf("%d",&number);
if(number<0)
{
number=-number;
}
printf("Theabsolutevalueis%d.\n",number);
return0;
}
Enteranumber:
10
Theabsolutevalueis10.
Enteranumber:
-300
Theabsolutevalueis300.
(2)参考程序:
#include
voidmain()
{
intn=0;
printf("inputastring\n");
while(getchar()!
='\n')n++;
printf("%d",n);
}
(3)参考程序:
#include
voidmain()
{
intn,i;
for(n=2;n<=100;n++)
{
for(i=2;i if(n%i==0)break; if(i>=n)printf("\t%d",n); } } (4)参考程序: #include main() { doublesum=0; doubletmp=1; intmul=1; inti; for(i=1;i<=50;i++) { tmp*=i; sum+=tmp*mul; mul*=-1; } printf("1! -2! +3! -4! +.....+49! -50! =%e",sum); } (5)参考程序: /*输入10个字符,分别统计出其中空格或回车、数字和其他字符的个数。 */ #include intmain(void) { intblank,digit,i,other;/*定义3个变量分别存放统计结果*/ charch; blank=digit=other=0;/*置存放统计结果的3个变量的初值为零*/ printf("Enter10characters: ");/*输入提示*/ for(i=1;i<=10;i++){/*循环执行了10次*/ ch=getchar();/*输入一个字符*/ /*在switch语句中灵活应用break*/ switch(ch){ case'': /*语句段为空,请注意空格的表示*/ case'\n': blank++;/*2个常量表达式''和'\n'共用该语句段*/ break;/*跳出switch语句*/ case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': digit++;/*10个常量表达式'0'~'9'共用该语句段*/ break;/*跳出switch语句*/ default: other++;/*累加其他字符*/ break;/*跳出switch语句*/ } } printf("blank=%d,digit=%d,other=%d\n",blank,digit,other); return0; } 第5章习题参考答案 1、选择题 (1)A (2)D(3)D(4)A(5)C (6)D(7)D(8)B(9)A(10)D 2、填空题 (1)6个字节。 (2)you&me。 (3)21。 (4)6。 3、程序设计题 (1)main() { inta[9],i,temp; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); for(i=0;i<5;i++) { temp=a[i]; a[i]=a[9-i]; a[9-i]=temp; } for(i=0;i<10;i++) printf("%d",a[i]); printf("\n"); }_ (2)main() { inta[8]={2,8,7,6,4,28,70,25}; intb[8]={79,27,32,41,57,66,78,80}; intc[8],i; for(i=0;i<8;i++) c[i]=a[i]+b[i]; for(i=0;i<8;i++) printf("%d\t",a[i]); printf("\n"); for(i=0;i<8;i++) printf("%d\t",b[i]); printf("\n"); for(i=0;i<8;i++) printf("%d\t",c[i]); printf("\n"); }_ (3)main() { inta[4][4]={{25,36,78,13},{12,26,88,93},{75,18,22,32},{56,44,36,58}}; intdui1=0,dui2=0,i,j,temp; for(i=0;i<4;i++) for(j=0;j<4;j++) { if(i==j) dui1+=a[i][j]; if(i+j==3) dui2+=a[i][j]; } for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%d\t",a[i][j]); printf("\n"); } printf("dui1=%d\tdui2=%d\n",dui1,dui2); for(i=0;i<4;i++) { temp=a[0][i]; a[0][i]=a[2][i]; a[2][i]=temp; } for(i=0;i<4;i++) { for(j=0;j<4;j++) printf("%d\t",a[i][j]); printf("\n"); } }_ 第6章习题参考答案 1、选择题 (1)A (2)B(3)C(4)B(5)D (6)D(7)B(8)D(9)B(10)D 2、填空题 (1) I=7;j=6;x=7; I=2;j=7;x=5; (2) 111 (3) maxis2 (4) <1>x=2y=3z=0 <2>x=4y=9z=5 <3>x=2y=3z=0 三、程序设计题 1、 #include"stdio.h" intprime(intn) { inti; for(i=2;i { if(n%i==0) return0; } return1; } voidmain() { intn; scanf("%d",&n); if(prime(n)) printf("该数是个素数\n"); else printf("该数不是个素数\n"); } 2、 #include"stdio.h" voidfun(inta[],intb[],intn) { inti; for(i=0;i b[(a[i]/10)]++; } voidmain() { inti,a[100]={9,18,27,38,59,33,14,75,38},b[6]={0}; fun(a,b,9); printf("Theresultis: "); for(i=0;i<6;i++) printf("%d",b[i]); printf("\n"); } 第7章习题参考答案 1.单项选择题 1)A2)B3)C4)C5)A6)D7)A8)D9)A10)C 11)B12)C13)D14)A15)B16)D17)D18)A19)D20)B 2.填空题 (1)84 (2)35(3)0(4)7(5)0 (6)int*(7)–1(8)*sn(9)*x(10)t (11)int*(12)*z 3.程序设计题 (1)编写一个函数,将数组中n个数按反序存放。 voidinv(int*x,intn) {int*p,m,t,*i,*j; m=(n-1)/2; i=x;j=x+n-1;p=x+m; for(;i<=p;i++,j--) {t=*i;*i=*j;*j=t;} return; } main() {inti,arr[10],*p=arr; printf("Theoriginalarray: \n"); for(i=0;i<10;i++,p++) scanf("%d",p); printf("\n"); p=arr;/*payattentiontoreassigningforp*/ inv(p,10); printf("Thearrayhasbeeninverted: \n"); for(p=arr;p printf("%d",*p); printf("\n"); } (2)用地址法输入输出二维数组各元素。 #include main() { inta[3][4]; inti,j; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",a[i]+j);/*地址法*/ for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%4d",*(a[i]+j));/**(a[i]+j)是地址法所表示的数组元素*/ printf(""); } } 运行程序: 123456789101112 1234 5678 9101112 (3)用指针法输入输出二维数组各元素。 #include main() { inta[3][4],*ptr; inti,j; ptr=a[0]; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",ptr++);/*指针的表示方法*/ ptr=a[0]; for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%4d",*ptr++); printf(""); } } 运行程序: 123456789101112 1234 5678 9101112 第8章习题参考答案 一、选择题(10小题) 题号 1 2 3 4 5 6 7 8 9 10 答案 D C B C B D B A D D 二、填空题(3小题) 题号 1 2 3 答案 成员 指向 abc.a p_abc->a (*p_abc).a 34 三、程序分析题(5小题) 题号 1 2 3 4 5 答案 9 name: zhongtotal=170.0000 name: wangtotal=150.00000 DDBBCC Qian,p,95,92 20098703.000000 四、程序设计题(4小题) 1、#defineN3 structperson {char*name; floatwages; floatfloatwages; floatexpenditure; floatrealpay; }; main() {structpersonp[N]; inti=0; for(i=0;i {scanf("%s,%f,%f,%f",p[i].name,&p[i].wages,&p[i].floatwages,&p[i].expenditure); p[i].realpay=p[i].wages+p[i].floatwages+p[i].expenditure; } for(i=0;i printf("%s,%f",p[i].name,p[i].realpay); } 2、#defineN10 structstudent {longnumber; char*name; floatscore[4]; }; main() {structstudentstu[N]; inti,max_i=0; floatmax scanf("%ld,%s,%f,%f,%f",&stu[0].number,stu[0].name,&stu[0].score[0],&stu[0].score[1],&stu[0].score[2]); max=stu[0].score[3]=stu[0].score[0]+stu[0].score[1]+stu[0].score[2]; for(i=1;i {scanf("%ld,%s,%f,%f,%f",&stu[i].number,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); stu[i].score[3]=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]; if(max max=stu[i].score[3],max_i=i; } printf("max: %s,%f",stu[max_i].name,stu[max_i].score[3]); } 3、#include"stdio.h" structstudent {char*name; floatcc; floatsql; floatc; floatave;}; main() {structstudentstu[4]; inti=0; for(;i<4;i++) {scanf("%s,%f,%f,%f",stu[i].name,&stu[i].cc,&stu[i].sql,&stu[i].c); stu[i].ave=(stu[i].cc+stu[i].sql+stu[i].c)/3.0; } for(i=0;i<4;i++) printf("%s,%f",stu[i].name,stu[i].ave); } 4、#include"stdio.h" #include"stdlib.h" /*定义链表数据结构*/ typedefstructnode{ floatdata;/*这里设数据类型为float*/ structnode*next; }Lnode; Lnode*a,*b; /*建立a链表*/ Ln
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课后 习题 参考答案