c语言课后习题答案(c语言程序设计(何钦铭 颜晖 第三版)课后习题答案)
朋友们,c语言课后习题答案和c语言程序设计(何钦铭 颜晖 第三版)课后习题答案是当今热门话题,但是它们的内涵和影响力可能会让人感到困惑。在本篇文章中,我将为你们揭示它们的本质和重要性,希望能够为你们带来新的认识。
c语言程序设计(何钦铭 颜晖 第三版)课后习题答案
习题 1
1.1填空题
1.函数
2.主函数main();主函数main()
3.主函数main()
4.函数首部;函数体
5.{;}
6.顺序结构;选择结构;循环结构
7..c;.obj;.exe
1.2思考题
1.答:结构化程序设计是指,为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。顺序结构,选择结构,循环结构
2.答:算法是对具体问题求解步骤的一
c语言第三版课后习题答案
1.5请参照本章例题,编写一个C程序,输出以下信息:
**************************
Very Good!
**************************
解:
mian()
{printf(“**************************”);
printf(“\n”);
printf(“Very 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<b)
max=b;
if(max<c)
max=c;
printf(“最大数为:“%d”,max);
}
第三章
3.6写出以下程序运行的结果。
main()
{char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);
printf(“\t\b%c%c”,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
3.7要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译为"Glmre"。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。
解:
#include<stdio.h>
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
c语言程序设计能力教程答案
1【C语言】《C语言程序设计教程(第二版)》习题答案
说明
1.本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理
工大学出版社出版的,绿皮。
2第1章程序设计基础知识
一、单项选择题(第23页)
1-4.CBBC 5-8.DACA
二、填空题(第24页)
1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言 7.有穷性 8.直到型循环 9.算法 10.可读性 11.模块化 12.对问题的分析和模块的划分
三、应用题(第24页)
2.源程序:
main()
{int i,j,k;/* i:公鸡数,j:母鸡数,k:小鸡数的1/3*/<br>printf("cock hen chick\n");<br>for(i=1;i<=20;i++)<br>for(j=1;j<=33;j++)<br>for(k=1;k<=33;k++)<br>if(i+j+k*3==100&&i*5+j*3+k==100)<br>printf("%d%d%d\n",i,j,k*3);}
执行结果:
cock hen chick
4 18 78
8 11 81
12 4 84
3.现计算斐波那契数列的前20项。
递推法源程序:
main()
{long a,b;int i;<br>a=b=1;<br>for(i=1;i<=10;i++)/*要计算前30项,把10改为15。*/<br>{printf("%8ld%8ld",a,b);<br>a=a+b;b=b+a;}}
递归法源程序:
main()
{int i;<br>for(i=0;i<=19;i++)<br>printf("%8d",fib(i));}
fib(int i)
{return(i<=1?1:fib(i-1)+fib(i-2));}
执行结果:
1 1 2 3 5 8 13 21 34 55
89 144 233 377 610 987 1597 2584 4181 6765
4.源程序:
#include"math.h";
main()
{double x,x0,deltax;<br>x=1.5;<br>do{x0=pow(x+1,1./3);<br>deltax=fabs(x0-x);<br>x=x0;<br>}while(deltax>1e-12);
printf("%.10f\n",x);}
执行结果:
1.3247179572
5.源程序略。(分子、分母均构成斐波那契数列)
结果是32.66026079864
6.源程序:
main()
{int a,b,c,m;<br>printf("Please input a,b and c:");<br>scanf("%d%d%d",&a,&b,&c);<br>if(a<b){m=a;a=b;b=m;}
if(a<c){m=a;a=c;c=m;}
if(b<c){m=b;b=c;c=m;}
printf("%d%d%d\n",a,b,c);}
执行结果:
Please input a,b and c:123 456 789
789 456 123
7.源程序:
main()
{int a;<br>scanf("%d",&a);<br>printf(a%21==0?"Yes":"No");}
执行结果:
42
Yes
3第2章 C语言概述
一、单项选择题(第34页)
1-4.BDCB 5-8.AABC
二、填空题(第35页)
1.主 2.C编译系统 3.函数函数 4.输入输出 5.头 6..OBJ 7.库函数 8.文本
三、应用题(第36页)
5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。
8.源程序:
main()
{int a,b,c;<br>scanf("%d%d",&a,&b);<br>c=a;a=b;b=c;<br>printf("%d%d",a,b);}
执行结果:
12 34
34 12
4第3章数据类型与运算规则
一、单项选择题(第75页)
1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB
二、填空题(第77页)
1.补码 2.±(10^-308~10^308) 3.int(整数) 4.单目自右相左 5.函数调用 6.a或b 7.1 8.65,89
三、应用题(第78页)
1.10 9
2.执行结果:
11
0
0
12
1
5第4章顺序结构程序设计
一、单项选择题(第90页)
1-5.DCDAD 6-10.BACBB
二、填空题(第91页)
1.一;2. 5.169000 3.(1)-2002500(2)I=-200,j=2500(3)i=-200
j=2500 4.a=98,b=765.000000,c=4321.000000 5.略 6.0,0,3 7.3 8.scanf("%lf%lf%lf",&a,&b,&c); 9. 13 13.000000,13.000000 10.a=a^c;c=c^a;a=a^c;(这种算法不破坏b的值,也不用定义中间变量。)
三、编程题(第92页)
1.仿照教材第27页例2-1。
2.源程序:
main()
{int h,m;<br>scanf("%d:%d",&h,&m);<br>printf("%d\n",h*60+m);}
执行结果:
9:23
563
3.源程序:
main()
{int a[]={-10,0,15,34},i;
for(i=0;i<=3;i++)
printf("%d\370C=%g\370F\t",a[i],a[i]*1.8+32);}
执行结果:
-10℃=14°F 0℃=32°F 15℃=59°F 34℃=93.2°F
4.源程序:
main()
{double pi=3.14159265358979,r=5;<br>printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r);}
执行结果:
r=5 A=31.4159265359 S=49.3480220054
5.源程序:
#include"math.h";
main()
{double a,b,c;<br>scanf("%lf%lf%lf",&a,&b,&c);<br>if(a+b>c&&a+c>b&&b+c>a)<br>{double s=(a+b+c)/2;<br>printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}
else printf("Data error!");}
执行结果:
4 5 6
SS=9.9215674165
6.源程序:
main()
{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;<br>printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);}
7.源程序:
main()
{int a,b,c,m;<br>scanf("%d%d%d",&a,&b,&c);<br>m=a;a=b;b=c;c=m;<br>printf("%d%d%d\n",a,b,c);}
执行结果:
5 6 7
6 7 5
8.源程序:
main()
{int a,b,c;<br>scanf("%d%d%d",&a,&b,&c);<br>printf("average of%d,%d and%d is%.2f\n",a,b,c,(a+b+c)/3.);<br>执行结果:<br>6 7 9<br>average of 6,7 and 9 is 7.33<br>9.不能。修改后的源程序如下:<br>main()<br>{int a,b,c,x,y;<br>scanf("%d%d%d",&a,&b,&c);<br>x=a*b;y=x*c;<br>printf("a=%d,b=%d,c=%d\n",a,b,c);<br>printf("x=%d,y=%d\n",x,y);}
6第5章选择结构程序设计
一、单项选择题(第113页)
1-4.DCBB 5-8.DABD
二、填空题(第115页)
1.非0 0 2.k==0
3.if(abs(x)>4) printf("%d",x);else printf("error!");
4.if((x>=1&&x<=10||x>=200&&x<=210)&&x&1)printf("%d",x);
5.k=1(原题最后一行漏了个d,如果认为原题正确,则输出k=%。)
6. 8! Right!11 7.$$$a=0 8.a=2,b=1
三、编程题(第116页)
1.有错。正确的程序如下:
main()
{int a,b,c;<br>scanf("%d,%d,%d",&a,&b,&c);<br>printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);}
2.源程序:
main()
{unsigned long a;<br>scanf("%ld",&a);<br>for(;a;printf("%d",a%10),a/=10);}
执行结果:
12345
54321
3.(1)源程序:
main()
{int x,y;<br>scanf("%d",&x);<br>if(x>-5&&x<0)y=x;<br>if(x>=0&&x<5)y=x-1;<br>if(x>=5&&x<10)y=x+1;<br>printf("%d\n",y);}
(2)源程序:
main()
{int x,y;<br>scanf("%d",&x);<br>if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1;<br>else y=x-1; else y=x;<br>printf("%d\n",y);}
(3)源程序:
main()
{int x,y;<br>scanf("%d",&x);<br>if(x<10) if(x>=5)y=x+1;<br>else if(x>=0)y=x-1;<br>else if(x>-5)y=x;<br>printf("%d\n",y);}
(4)源程序:
main()
{int x,y;<br>scanf("%d",&x);<br>switch(x/5)<br>{case-1:if(x!=-5)y=x;break;<br>case 0:y=x-1;break;<br>case 1:y=x+1;}
printf("%d\n",y);}
4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。
现给出Delphi源程序和C++ Builder源程序。
Delphi源程序:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit3.Text:=format('%.0f天',[strtodate(edit2.text)-strtodate(edit1.text)]);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit2.Text:=datetostr(now);
button1click(form1)
end;
C++ Builder源程序:
void __fastcall TForm1::Button1Click(TObject*Sender)
{
Edit3->Text=IntToStr(StrToDate(Edit2->Text)-StrToDate(Edit1->Text))+"天";
}
void __fastcall TForm1::FormCreate(TObject*Sender)
{
Edit2->Text=DateToStr(Now());
Button1Click(Form1);
}
执行结果:(运行于Windows下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg
5.源程序:
main()
{unsigned a,b,c;<br>printf("请输入三个整数:");<br>scanf("%d%d%d",&a,&b,&c);<br>if(a&&b&&c&&a==b&&a==c)printf("构成等边三角形\n");<br>else if(a+b>c&&a+c>b&&b+c>a)<br>if(a==b||a==c||b==c)printf("构成等腰三角形\n");<br>else printf("构成一般三角形\n");<br>else printf("不能构成三角形\n");}
执行结果:
请输入三个整数:5 6 5
构成等腰三角形
6.源程序:
main()
{int x,y;<br>scanf("%d",&x);<br>if(x<20)y=1;<br>else switch(x/60)<br>{case 0:y=x/10;break;<br>default:y=6;}
printf("x=%d,y=%d\n",x,y);}
7.源程序:
main()
{unsigned m;float n;<br>scanf("%d",&m);<br>if(m<100)n=0;<br>else if(m>600)n=0.06;<br>else n=(m/100+0.5)/100;<br>printf("%d%.2f%.2f\n",m,m*(1-n),m*n);}
执行结果:
450
450 429.75 20.25
8. 2171天(起始日期和终止日期均算在内)
本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。
9.源程序:
#include"math.h";
main()
{unsigned long i;<br>scanf("%ld",&i);<br>printf("%ld%d\n",i%10,(int)log10(i)+1);}
执行结果:
99887
7 5
10.源程序:
main()
{unsigned long i;unsigned j[10],m=0;<br>scanf("%ld",&i);<br>for(;i;){j[m++]=(i+2)%10;i/=10;}
for(;m;m--)i=i*10+j[m-1];
printf("%ld\n",i);}
执行结果:
6987
8109
(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)
7第6章循环结构程序设计
一、单项选择题(第142页)
1-4.BCCB 5-8.CBCA
二、填空题(第143页)
1.原题可能有误。如无误,是死循环 2.原题有误。如果把b=1后面的逗号改为分号,则结果是8。 3.20 4.11 5. 2.400000 6.*#*#*#$ 7.8 5 2 8.①d=1.0②++k③k<=n 9.①x>=0②x<amin
三、编程题(第145页)
1.源程序:
main()
{int i=1,sum=i;<br>while(i<101){sum+=i=-i-2;sum+=i=-i+2;}
printf("%d\n",sum);}
执行结果:
51
2.源程序:
main()
{double p=0,n=0,f;int i;<br>for(i=1;i<=10;i++)<br>{scanf("%lf",&f);<br>if(f>0)p+=f; else n+=f;}
printf("%lf%lf%lf\n",p,n,p+n);}
3.源程序:
main()
{unsigned a;<br>scanf("%ld",&a);<br>for(;a;printf("%d,",a%10),a/=10);<br>printf("\b\n");}
执行结果:
23456
6,5,4,3,2
4.源程序:
main()
{unsigned long a,b,c,i;<br>scanf("%ld%ld",&a,&b);<br>c=a%1000;<br>for(i=1;i<b;i++)c=c*a%1000;<br>if(c<100)printf("0");<br>if(c<10)printf("0");<br>printf("%ld\n",c);}
执行结果:
129 57
009
5.略
6.原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1+ 1+ 1/2!+ 1/3!+…+ 1/n!+…
(1)源程序:
main()
{double e=1,f=1;int n;<br>for(n=1;n<=20;n++){f/=n;e+=f;}
printf("e=%.14lf\n",e);}
执行结果:
e=2.71828182845905
(2)源程序:
main()
{double e=1,f=1;int n;<br>for(n=1;f>1e-4;n++){f/=n;e+=f;}
printf("e=%.4f\n",e);}
执行结果:
e=2.7183
7.源程序:
main()
{unsigned long a=0,b=1,c=0;int i,d;<br>scanf("%d",&d);<br>for(i=1;i<=(d+2)/3;i++)<br>printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b));}
本题还可以用递归算法(效率很低),源程序如下:
unsigned long fun(int i)
{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);}
main()
{int i,d; scanf("%d",&d);<br>for(i=1;i<=d;i++)<br>printf("%10ld",fun(i));}
执行结果:
15
1 2 3 6 11 20 37 68
125 230 423 778 1431 2632 4841
8.源程序:
main()
{int i;<br>for(i=1010;i<=9876;i+=2)<br>if(i/100%11&&i%100%11&&i/10%100%11&&i/1000!=i%10&&i/1000!=i/10%10&&i/100%10!=i%10)printf("%d",i);}
执行结果:
1024 1026 1028 1032 1034 1036………… 9874 9876
9.源程序:
main()
{int i,j,k;<br>printf("apple watermelon pear\n");<br>for(i=1;i<=100;i++)<br>for(j=1;j<=10;j++)<br>if((k=100-i-j)*2==400-i*4-j*40)<br>printf("%4d%7d%9d\n",i,j,k);}
执行结果:
apple watermelon pear
5 5 90
24 4 72
43 3 54
62 2 36
81 1 18
10.源程序:
#include"stdio.h";
#define N 4/* N为阶数,可以改为其他正整数*/
main()
{int m=N*2,i,j;<br>for(i=1;i<m;printf("\n"),i++)<br>for(j=1;j<m;<br>putchar(N-abs(i-N)<=abs(j++-N)?'':'*'));}
如果把N值改为5,则执行结果如下:
*
***
*****
*******
*********
*******
*****
***
*
C语言程序设计 中国铁道出版社的 课后习题答案
一.
1.错(链表可以不是)
2.错(顺序适合查找较多的数据结构,链表适合插入删除较多的数据结构)
3.错(有可能连续)
4.错(int a[2][3]中,元素为整型)
5.对.
二.
1.B
2.C
三.
1.D
2.D
3.C(这里是要找到长度为m的链表的尾节点)
四.
1.S1语句是让p指向尾节点(因为while退出的条件是p->next,说明此时p->next为空)
2.S2语句是在链表尾插入q(p->next=q),并让q成为链表尾节点(q->next=NULL)
3.(a1,a2,a3,...an,q)
(注,这里的L是不带头节点的单链表,故第一个节点就是该元素的第一个节点)
另外,虚机团上产品团购,超级便宜
感谢您花时间阅读本文!我们希望通过对c语言课后习题答案的问题进行探讨,为您提供了一些有用的见解和解决方案。如果您需要更多帮助或者有其他疑问,请不要犹豫与我们联系。