c语言程序设计教程第4版答案(c语言程序设计教程答案)

admin 445 0

今天给各位分享c语言程序设计教程第4版答案的知识,其中也会对c语言程序设计教程答案进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

一、C语言程序设计教程(第二版) 周宇 课后答案

二、 1. I love China! printf("we are students.\n") 2. 6项目实训题参考答案 1.编写一个C程序,输出以下信息:******************** I am a student!******************** main(){ printf("********************\n"); printf(" I am a student!\n"); printf("********************\n");} 2222....已知立方体的长、宽、高分别是10cm、20cm、15cm,编写程序,求立方体体积。解: main(){ int a,b,c,v; a=10; b=20; c=15; v=a*b*c; printf("v=%d",v);}本程序运行结果为: v=3000第第第第2章章章章编制编制编制编制C程序的基础知识程序的基础知识程序的基础知识程序的基础知识一选择题 C B A B A C C二操作题 2 21. 3,2,-8,2 3.000000,2.500000,-8.000000 2. ABC DE FGH why is 21+35 equal 52 3. 3 1 4 3 2 3 1 2 4. aa bb cc abc A N项目实训题 1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。#define M 5 main(){ int n,c; n=2; c=M*n; printf("%d\n",c);} 2.编程求下面算术表达式的值。(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)main(){ int a=7; float x=2.5,y=4.7; printf("%f\n",x+a%3*(int)(x+y)%2/4);}(2)main(){ int a=2,b=3; float x=3.5,y=2.5; printf("%f\n",(float)(a+b)/2+(int)x%(int)y);第三章第三章第三章第三章顺序结构程序设计顺序结构程序设计顺序结构程序设计顺序结构程序设计一选择题 A C D C C二操作题 1. x=3,a=2,b=3 2. z=12.700000 3. 1 2 1 a 2 1 2三三三三....编程题编程题编程题编程题编程题 1.某工种按小时计算工资,每月劳动时间(小时)×每小时工资=总工资,总工资中扣除10%公积金,剩余的为应发工资。编写一个程序从键盘输入劳动时间和每小时工资,打印出应发工资。解:#include<stdio.h> main(){ float sj,gz,yfgz; printf("time,salary:"); scanf("%f,%f",&sj,&gz); yfgz=sj*gz*0.9; printf("total salary:%f\n",yfgz);}本程序运行结果为: time,salary:4,3<CR> total salary:10.800000 2.编写一个程序求出任意一个输入字符的ASCII码解:#include<stdio.h> main(){ char c; printf("Input a string:"); scanf("%c",&c); printf("%c ASCII is%d\n",c,c);}本程序运行结果为: Input a string:a<CR> a ASCII is 97 3、编写一个程序用于水果店售货员算帐:已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付第四章第四章第四章第四章选择结构程序设计选择结构程序设计选择结构程序设计选择结构程序设计一、略二、B B A B C B A三、1. 1 0 2. 2 3 2 2 3. 10 20 0 4. ch>=’A’&&ch<=’Z’||ch>=’a’&&ch<=’z’ ch>=’0’&&ch<=’9’ ch==’’ 5.-1四、上机操作 1.从键盘输入一个英文字母,如果是大写字母,则将它变为小写字母输出;如果是小写字母,则将其变为大写字母输出。#include<stdio.h> main(){char ch; ch=getchar(); if(ch>='A'&&ch<='Z') ch+=32; else if(ch>='a'&&ch<='z') ch-=32; putchar(ch); putchar('\n');} 2.根据输入的x值依据下列表达式,计算y的值。 2x(x>-1) y= 3(x=-1) 4+x(x<-1)解: main(){ float x,y; scanf("%f",&x); if(x>-1) y=2*x; else if(x==1) y=3; else y=4+x; printf("y=%f",y);}本程序运行结果为:-2<CR> y=2.000000 3.编写程序,输入一个整数,判断它是奇数还是偶数,若是奇数,输出“Is Odd“;若是偶数,输出“Is Even“。 main(){ int x; scanf("%d",&x); if(x%2==0) printf("Is Even\n"); else printf("Is Odd\n");} 4.设计应用程序,求二次方程ax2+bx+c=0的解。#include<math.h> main(){ float a,b,c,disc,x1,x2,p,q; scanf("%f,%f,%f",&a,&b,&c); if(fabs(a)<=1e-6) printf(" The equation is not a quadratic\n"); else{ disc=b*b-4*a*c; if(fabs(disc)< 1e-6) printf("x1=x2=%8.4f\n",-b/(2*a)); else if(disc>1e-6){x1=(-b+sqrt(disc)/(2*a)); x2=(-b-sqrt(disc)/(2*a)); printf("x1=%8.4f,x2=%8.4f\n",x1,x2);} else{ p=-b/(2*a); q=sqrt(-disc/(2*a)); printf("%8.4f+%x8.4fi\n",p,q); printf("%8.4f-%8.4fi\n",p,q);}}} 5555....按托运规则,行李不超过50公斤时,运费为0.15元/公斤,如超过50公斤,超过部分的运费为0.22元/公斤,现有行李w公斤,编写一个程序计算运费。解:#include<stdio.h> main(){ float w,f,x; printf("weight:"); scanf("%f",&w); if(w<=50) x=0.15*w; else x=0.15*50+0.22*(w-50); printf("money:%6.2f yuan\n",x);}本程序运行结果为: weight:20<CR> money:3.00 yuan weight:60<CR> money:9.70 yuan 6.某商场给与顾客购物的折扣率如下:购物金额<200元不打折 500元>购物金额>=200元 9折 1000元>购物金额>=500元 8折购物金额>=1000元 7.5折输入一个购物金额,输出打折率、购物实际付款金额。#include<stdio.h> main(){ float x,y,realx; scanf("%f",&x); if(x<=0){ printf("Error! You input a worry number!\n"); y=0;} else{ if(x<200) y=1.0; else if(x<500) y=0.9; else if(x<1000) y=0.8; else y=0.75;} if(y!=0){realx=x*y; printf("y=%f, the realx=%5.2f\n", y,realx);}}第五章第五章第五章第五章循环结构程序设计循环结构程序设计循环结构程序设计循环结构程序设计一、选择题 C C A A D D第六章第六章第六章第六章数组数组数组数组、选择题 D A D A A C C A D二、程序阅读题 13 13 13 13 13 13第七章第七章第七章第七章函数函数函数函数一、选择题 B D C B B D A A D第第第第8888章章章章指针指针指针指针一、选择题 D A C C(D) D C D二、填空题 1. m 2.指针数组名 3. ABCDCD 4.49 5. 25

二、求c语言程序设计第三版和c语言程序设计实验与习题指导答案

2.主函数main();主函数main()3.主函数main()4.函数首部;函数体5.{;}

6.顺序结构;选择结构;循环结构7..c;.obj;.exe

1.答:结构化程序设计是指,为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。顺序结构,选择结构,循环结构

2.答:算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:①用自然语言表示算法;②用流程图表示算法;③用伪代码表示算法;④用程序设计语言表示算法。

3.略4.略5.略1.3编程题1.答:

{floata=10,b=20,h=5,s;s=(a+b)*h/2;

{printf("******************************");printf("*helloworld*");printf("******************************");}

3.9;24.65.100;d6.(1)20

4.2,1;互换a,b的值5.6.66.0037.7

10.(1)65(2)65,A(3)3.14,123.46

(4)3.141600e+000,1.234560e+002(5)8765.432100(6)8.765432e+003

11.a=2b=5x=8.8y=76.34c1=65c2=9712.%d/%d;%d/%d=%.2f\n

scanf("%d%d",&x,&y);printf("\t\tx\ty\n");

printf("十进制数\t%d\t%d\n",x,y);printf("八进制数\t%o\t%o\n",x,y);printf("十六进制数\t%X\t%x\n",x,y);}

printf("请输入一个大写英文字母");scanf("%c",&ch);

printf("大写英文字母是%c\n",ch);printf("它的前导字符是%c\n",ch-1);printf("它的后续字符是%c\n",ch+1);}

printf("请输入一个三位整数\n");scanf("%d",&x);a=x/100;

printf("反向输出该整数:%d\n",y);}}

scanf("%d,%lf",&hour,&salaryday);

salary=hour*salaryday-hour*salaryday*0.1;

printf("请输入三个整数\n");scanf("%d%d%d",&a,&b,&c);

printf("交换前a=%d,b=%d,c=%d\n",a,b,c);t=a;a=c;c=b;b=t;

printf("交换后a=%d,b=%d,c=%d\n",a,b,c);}

(2)x>0&&x<=10(3)a==1.5&&b==1.5&&c==1.5

3.(1)0(2)1(3)1(4)0(5)1

4.c=15.-46.17.5,0,38.59.123

10.(cvb=='y'||cvb=='Y')&&(work>=3||college=='y'||college=='Y')&&age<=35

scanf("%lf%lf%lf",&a,&b,&c);

printf("三角形的三边为:%.llf,%.1lf,%.1lf\n",a,b,c);if(a+b>c&&a+c>b&&b+c>a){p=(a+b+c)/2;

area=sqrt(p*(p-a)*(p-b)*(p-c));

printf("三角形的面积为%.2lf\n",area);}else

scanf("%d,%d",&x,&y);if(x*x+y*y>1000)

printf("%d\n",(x*x+y*y)/100);else

#include"stdio.h"#include"math.h"main()

scanf("%lf",&x);if(x<-2)y=x*x-sin(x);elseif(x<=2)y=pow(2,x)+x;elsey=sqrt(x*x+x+1);

printf("x=%.2lfy=%.2lf\n",x,y);}

{longge,shi,qian,wan,x;scanf("%ld",&x);wan=x/10000;

qian=x%10000/1000;shi=x%100/10;

if(ge==wan&&shi==qian)/*个位等于万位并且十位等于千位*/printf("thisnumberisahuiwen\n");else

printf("thisnumberisnotahuiwen\n");

scanf("%f,%,%f",p,s,w);if(s>3000)d=0.15elseif(s>=2000)d=0.1;elseif(s>=1000)d=0.08;elseif(s>=500)d=0.05;elseif(s>=250)d=0.02;elsed=0f=p*w*s*(1-d);printf("%f",f);}

printf("是否是本公司产品(y/n):");scanf("%c",&x);

if(x=='y'||x=='Y')

{printf("产品使用的年限:");scanf("%d",&year);

elseif(year<8)money=50;elsemoney=100;

printf("产品保修额是:%d\n",money);

printf("不是本公司产品,产品保修额是:%d\n",money);}}

printf("请输入取款额(≤2000):");scanf("%d",&money);

if(money>2000)printf("请输入取款额数≤2000!\n");elseif(money%50==0){num1=money/100;num2=(money-num1*100)/50;printf("需支付100元:%d张\n",num1);printf("需支付50元:%d张\n",num2);}elseprintf("输入钱数必须是50的倍数!\n");}

3.(1)i<10或i<=9(2)j%3!=0

4.(1)flag*(float)k/(k+1)或1.0*flag*k/(k+1)(2)flag=-flag5.(1)max=x

(2)x!=-1(3)scanf("%d",&x)

}while(1.0/p>1e-6);printf("%lf",s);}

scanf("%d,%d",&m,&n)if(m<n)

{t=mm=nn=t}a=m;b=n;t=m%nwhile(t)

{m=nn=tt=m%n;}printf("%d",n);}

scanf("%d,%d",&x,&y)for(y>0y--)s*=x

printf("%d,%d,%d\n",s%10,s/10%10,s/100%10);}

for(x=1x<20x++)for(y=1y<33y++){z=100-x-y

if((z%3)==0&&(5*x+3*y+z/3)==100)printf("x=%d,y=%d,z=%d\n",x,y,z)}}

{for(k=1;k<=4-j;k++)printf("");printf("****")printf("\n")}}

{for(k=1;k<=4-j;k++)printf("");for(k=1k<=2*j-1k++)printf("*")printf("\n")}}

程序分析:利用for循环控制在100~999之间,对每个数分解出个位、十位、百位。

#include<stdio.h>main(){inti,j,k,n;printf("waterflower'numberis:");for(n=100;n<1000;n++){i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/if(n==i*i*i+j*j*j+k*k*k){printf("%-5d",n);}}printf("\n");}

#include<stdio.h>main(){intx;for(x=1000;x>=3;x--)if(x%3==1&&x%5==2&&x%7==3){

printf("该校的学生人数是:%d人\n",x);break;}}

#include<stdio.h>main(){intx=12,i=1;while(1)

{if((x+20+i)==2*(x+i))break;i++;}printf("小明母亲在%d年后比小明的年龄大一倍\n",i);printf("那时小明年龄是:%d岁,小明母亲年龄是:%d岁\n",x+i,x+20+i);}

#include"stdio.h"#include"math.h"

#defineF(a)a*a+sqrt(3*a*a+2*a+1)main()

f=4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x)printf("%f\n",f);}

1.(1)2345(2)10010(3)QuickC

(4)1000001000001000001000001(5)Language

(6)LanguageProgramming2.(1)j+=2(2)a[i]>a[j]3.(1)i=1(2)x[i-1]

{inta[N]={1,2,3,4,5,6,7,8,9,10,osum=0,qsum=0,j;for(j=0;j<10;j++)

printf("osum=%d,qsum=%d\n",osum,qsum);}

{inta[N]={10,20,30,40,50,60,70,80,90},j,k,x;scanf("%d",&x);for(j=0;j<N;j++)

if(x<a[j])break;if(j==N)a[N-1]=x;else

{for(k=N-1;k>j;k--)a[k]=a[k-1];a[j]=x;}

{inta[M][M]={{1,2,3},{2,4,5},{3,5,6}},j,k,flag=1;;for(j=0;j<M;j++)

for(k=0;k<M;k++)if(a[j][k]!=a[k][j]){flag=0;break;}if(flag)printf("ok");elseprintf("NO");}

#include"stdio.h"#include"string.h"main()

{charc1[10],c2[10],j;gets(c1);gets(c2);

for(j=0;(c1[j]==c2[j])&&c1[j]&&c2[j];j++);if(c1[j]>c2[j])printf("%d\n",1);if(c1[j]<c2[j])printf("%d\n",-1);if(c1[j]==c2[j])printf("%d\n",0);}

#include"stdio.h"#include"string.h"#defineM3#defineN80main()

{chara[M][N],j,k,n[5]={0};for(j=0;j<M;j++)gets(a[j]);

if(a[j][k]>='A'&&a[j][k]<='Z')n[0]++;

elseif(a[j][k]>='a'&&a[j][k]<='z')n[1]++;elseif(a[j][k]>='0'&&a[j][k]<='9')n[2]++;elseif(a[j][k]=='')n[3]++;elsen[4]++;

for(j=0;j<5;j++)printf("%4d",n[j]);}

1.(1)2,1(2)10#30#(3)FOUR,P(4)60

{intn1,n2,n3,t;int*p1,*p2,*p3;

printf("pleaseinput3number:n1,n2,n3:");scanf("%d,%d,%d",&n1,&n2,&n3);p1=&n1;

if(*p1>*p2){t=*p1;*p1=*p2;*p2=t;}

if(*p1>*p3){t=*p1;*p1=*p3;*p3=t;}if(*p2>*p3){t=*p2;*p2=*p3;*p3=t;}

printf("thesortednumbersare:%d,%d,%d\n",n1,n2,n3);}

#include"stdio.h"#defineN3main()

{inta[N],*p=a;for(;p-a<N;p++)scanf("%d",p);p=a+N-1;

for(;p-a>=0;p--)printf("%d",*p);}

intj,minl=0,maxl=0;for(j=0;j<10;j++)

scanf("%d",a+j);for(j=0;j<10;j++)

{if(a[maxl]<*(a+j))maxl=j;if(a[minl]>*(a+j))minl=j;}

j=a[0];a[0]=a[minl];a[minl]=j;j=a[9];a[9]=a[maxl];a[maxl]=j;for(j=0;j<10;j++)printf("%d",*(a+j));}

输入阵列如下:123456789101112输出阵列如下:

{inta[M][N]={1,2,3,4,5,6,7,8,9,10,11,12},k,j,*p=&a[0][0],t;for(k=0,j=M*N-1;k<j;k++,j--)

{t=*(p+k);*(p+k)=*(p+j);*(p+j)=t;}for(k=0k<Mk++){for(j=0j<Nj++)

printf("%4d",a[k][j]);printf("\n");

printf("pleaseinputastring:\n");scanf("%s",str);len=0;

printf("thestringhas%dcharacters.\n",len);}

#include"string.h"#include"stdio.h"main(){

char*str1[5],ch[5][20],k,t,j,*c;voidsort(char**);for(k=0;k<5;k++){str1[k]=ch[k];gets(str1[k]);}for(k=0;k<7;k++)

for(j=k+1;j<5;j++)if(strcmp(*(str1+t),*(str1+j))>0)t=j;c=*(str1+t);

*(str1+t)=*(str1+k)*(str1+k)=c}

for(k=0;k<5;k++)puts(str1[k]);}

1.1202.x3.3,2,2,34.fac/i5.8,176.97.1.0/(i*i)8.

fun-in:30,20,10fun-end:1015,35,105010,20,309.01234510.9363611.(1)r+b[k](2)*x

14.(1)*x(2)t15.(1)'\0'(2)n++16.024

while((ch=getchar())!='\n')

{if(ch>='a'&&ch<='z')ch=ch-32;putchar(ch);}}

doubleexpp(intn){intk,fac=1;doublesum=1;

voidfun(inta,intb,int*c,int*d);scanf("%d%d",&a,&b);fun(a,b,&c,&d);

voidfun(inta,intb,int*c,int*d){if(b)

main(intargc,char*argv[]){intk;

printf("argc=%d\n",argc);for(k=1;k<argc;k++)printf("%s\n",argv[k]);}

1.所有结构体成员所占存储空间的总和2.与占用存储空间最大的那个成员相等

3.(1)structsatype(2)3(3)sa.a(4)9(5)psa=&sa4.805.structnode6.0

charname[20];charsex;floatscore;};main()

{structstudents[20],temp;intj,k,man=0,woman=0;

floatsumman=0,sumwoman=0,aveman,avewoman;for(k=0;k<20;k++)

{scanf("%ld%s%c%f",&s[k].num,s[k].name,&s[k].sex,&s[k].score);if(s[k].sex=='m')

{summan+=s[k].score;man++;}else

{sumwoman+=s[k].score;woman++}}

printf("%d\t%f\t%d\t%f\n",man,aveman,woman,avewoman);for(k=0;k<19;k++)

if(s[j].score<s[j+1].score)

{temp=s[j];s[j]=s[j+1];s[j+1]=temp;}printf("thesortednumbers:\n");for(k=0;k<20;k++)

printf("%ld\t%s\t%c\t%5.1f\n",s[k].num,s[k].name,s[k].sex,s[k].score);}

1.rewind(文件指针)2."d1.dat","rb"3.stdin

4.文本文件;二进制文件5.(1)"w"

C语言程序设计实验与习题指导课后程序设计答案

#include<stdio.h>intmain(void){intcelsius,fahr;fahr=150;celsius=5*fahr/9-5*32/9;printf("fahr=%d,celsius=%d\n",fahr,celsius);return0;}

#include<stdio.h>intmain(void){intcelsius,fahr;celsius=26;fahr=9*celsius/5+32;printf("celsius=%d,fahr=%d\n",celsius,fahr);return0;}

#include<stdio.h>intmain(void){intaverage,math,eng,comp;math=87;eng=72;comp=93;average=(math+eng+comp)/3;printf("math=%d,eng=%d,comp=%d,average=%d\n",math,eng,comp,average);return0;}

#include<stdio.h>intmain(void){intn,a,b,c;n=152

printf("整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n",n,c,b,a);return0;

#include<stdio.h>#include<math.h>intmain(void){intcelsius,fahr;printf("Entercelsius:");scanf("%d",&celsius);fahr=9*celsius/5+32;printf("fahr%d\n",fahr);return0;}

#include<stdio.h>#include<math.h>intmain(void){intmoney,year;doublerate,interest;printf("Entermoney,year,rate:");scanf("%d%d%lf",&money,&year,&rate);interest=money*pow(1+rate,year)-money;printf("interest=%.2f\n",interest);return0;}

#include<stdio.h>#include<math.h>intmain(void){doublex,y;printf("Enterx:");scanf("%lf",&x);

if(x<0){y=pow(x+1,2)+2*x+1/x;}else{y=sqrt(x);}

printf("y=f(%f)=%.2f\n",x,y);return0;

#include<stdio.h>intmain(void){intx,y;printf("Enternum1:");scanf("%d",&x);printf("Enternum2:");scanf("%d",&y);printf("%d+%d=%d\n",x,y,x+y);printf("%d-%d=%d\n",x,y,x-y);printf("%d*%d=%d\n",x,y,x*y);printf("%d/%d=%d\n",x,y,x/y);printf("%d%%%d=%d\n",x,y,x%y);return0;}

#include<stdio.h>intmain(void){inti,n,product;printf("Entern:");scanf("%d",&n);product=1;for(i=1;i<=n;i++){product=product*i;}printf("product=%d\n",product);return0;}

三、C语言程序设计教程答案~有追加悬赏100分!

1【C语言】《C语言程序设计教程(第二版)》习题答案

1.本文所指的《C语言程序设计教程(第二版)》是李凤霞主编、北京理

1.判断条件 2.面向过程编程 3.结构化 4.程序 5.面向对象的程序设计语言 7.有穷性 8.直到型循环 9.算法 10.可读性 11.模块化 12.对问题的分析和模块的划分

{int i,j,k;/* i:公鸡数,j:母鸡数,k:小鸡数的1/3*/

printf("cock hen chick\n");

if(i+j+k*3==100&&i*5+j*3+k==100)

printf("%d%d%d\n",i,j,k*3);}

3.现计算斐波那契数列的前20项。

for(i=1;i<=10;i++)/*要计算前30项,把10改为15。*/

{return(i<=1?1:fib(i-1)+fib(i-2));}

89 144 233 377 610 987 1597 2584 4181 6765

5.源程序略。(分子、分母均构成斐波那契数列)

printf("Please input a,b and c:");

printf("%d%d%d\n",a,b,c);}

Please input a,b and c:123 456 789

1.主 2.C编译系统 3.函数函数 4.输入输出 5.头 6..OBJ 7.库函数 8.文本

5.sizeof是关键字,stru、_aoto、file、m_i_n、hello、ABC、SIN90、x1234、until、cos2x、s_3是标识符。

1-5.DBACC 6-10.DBDBC 11-15.ADCCC 16-20.CBCCD 21-25.ADDBC 26-27.AB

1.补码 2.±(10^-308~10^308) 3.int(整数) 4.单目自右相左 5.函数调用 6.a或b 7.1 8.65,89

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的值,也不用定义中间变量。)

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

{double pi=3.14159265358979,r=5;

printf("r=%lg A=%.10lf S=%.10lf\n",r,2*pi*r,pi*pi*r);}

r=5 A=31.4159265359 S=49.3480220054

if(a+b>c&&a+c>b&&b+c>a)

printf("SS=%.10lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}

{int a=3,b=4,c=5;float d=1.2,e=2.23,f=-43.56;

printf("a=%3d,b=%-4d,c=**%d\nd=%g\ne=%6.2f\nf=%-10.4f**\n",a,b,c,d,e,f);}

printf("%d%d%d\n",a,b,c);}

printf("average of%d,%d and%d is%.2f\n",a,b,c,(a+b+c)/3.);

printf("a=%d,b=%d,c=%d\n",a,b,c);

printf("x=%d,y=%d\n",x,y);}

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

printf("min=%d\n",a>b?b>c?c:b:a>c?c:a);}

for(;a;printf("%d",a%10),a/=10);}

if(x<10) if(x>-5) if(x>=0) if(x>=5)y=x+1;

4.本题为了避免考虑每月的天数及闰年等问题,故采用面向对象的程序设计。

现给出Delphi源程序和C++ Builder源程序。

procedure TForm1.Button1Click(Sender: TObject);

edit3.Text:=format('%.0f天',[strtodate(edit2.text)-strtodate(edit1.text)]);

procedure TForm1.FormCreate(Sender: TObject);

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());

执行结果:(运行于Windows下) http://img378.photo.163.com/nxgt/41463572/1219713927.jpg

if(a&&b&&c&&a==b&&a==c)printf("构成等边三角形\n");

else if(a+b>c&&a+c>b&&b+c>a)

if(a==b||a==c||b==c)printf("构成等腰三角形\n");

else printf("构成一般三角形\n");

else printf("不能构成三角形\n");}

printf("x=%d,y=%d\n",x,y);}

printf("%d%.2f%.2f\n",m,m*(1-n),m*n);}

8. 2171天(起始日期和终止日期均算在内)

本题可利用第4小题编好的程序进行计算。把起始日期和终止日期分别打入“生日”和“今日”栏内,单击“实足年龄”按钮,将所得到的天数再加上1天即可。

printf("%ld%d\n",i%10,(int)log10(i)+1);}

{unsigned long i;unsigned j[10],m=0;

for(;i;){j[m++]=(i+2)%10;i/=10;}

(注:要加密的数值不能是0或以0开头。如果要以0开头需用字符串而不能是整数。)

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

while(i<101){sum+=i=-i-2;sum+=i=-i+2;}

printf("%lf%lf%lf\n",p,n,p+n);}

for(;a;printf("%d,",a%10),a/=10);

for(i=1;i<b;i++)c=c*a%1000;

6.原题提供的计算e的公式有误(前面漏了一项1)。正确的公式是e= 1+ 1+ 1/2!+ 1/3!+…+ 1/n!+…

for(n=1;n<=20;n++){f/=n;e+=f;}

for(n=1;f>1e-4;n++){f/=n;e+=f;}

{unsigned long a=0,b=1,c=0;int i,d;

printf("%10ld%10ld%10ld",a,b,(a+=b+c,b+=c+a,c+=a+b));}

本题还可以用递归算法(效率很低),源程序如下:

{return i<=3?i:fun(i-1)+fun(i-2)+fun(i-3);}

125 230 423 778 1431 2632 4841

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

printf("apple watermelon pear\n");

if((k=100-i-j)*2==400-i*4-j*40)

printf("%4d%7d%9d\n",i,j,k);}

#define N 4/* N为阶数,可以改为其他正整数*/

for(i=1;i<m;printf("\n"),i++)

putchar(N-abs(i-N)<=abs(j++-N)?'':'*'));}

如果把N值改为5,则执行结果如下:

作者:宁西贯通 2006-5-7 23:41回复此发言

--------------------------------------------------------------------------------

注意:上面最后一题的输出结果应该是由星号组成的一个菱形,

4.①a[i]>b[j]②i<3③j<5

5.①b[j]=a[j][0]②b[j]<a[j][k] 6.a[k++]=a[j]

printf("%d\n",s);}/*注:5×5矩阵不能照此计算!*/

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

for(i=1;i<=29;i++)a[i]=a[i-1]+2;

for(;i<=35;i++)a[i]=a[(i-30)*5+2];

for(i=0;i<=35;i++)printf("%d\t",a[i]);}

for(i=0;i<=29;i++)if(a[i]==m)a[i]=-1;

printf("\n-----------------\n");

if(~a[i])printf("%d\t",a[i]);

20679 29377 18589 9034 27083 4959 3438 5241 32278 23344

32499 29305 22340 5927 13031 2161 2583 31855 22977 14283

4851 22038 6992 11394 20887 27381 6293 18347 16414 10210

20679 29377 18589 9034 27083 4959 3438 5241 32278 23344

29305 22340 5927 13031 2161 2583 31855 22977 14283 4851

22038 6992 11394 20887 27381 6293 18347 16414 10210

for(;i;i>>=1)b[n++]=i&1;

本题也可以不用数组。源程序如下:

for(i=0;i<M;printf("\n"),t[i++]=0)

printf("%4d",a[i][j]=random(50));

/*找出每行的最小数,t[M]是第M行的最小数所在的列数*/

if(a[i][t[i]]>a[i][j])t[i]=j;

/*比较每个最小数在其所在的列上是否也是最小*/

printf("-------------------\n");

/*输出在行和列上均为最小的数*/

printf("a[%d,%d]=%d\n",i,t[i],a[i][t[i]]);

{printf("%4d",a[i][j]=random(91)+10);

printf("%4d\n",a[i][N-1]);}

if(a[i][N-1]>a[t][N-1])t=i;

{i=a[0][j];a[0][j]=a[t][j];a[t][j]=i;}

printf("-----------------\n");

for(i=0;i<M;printf("\n"),i++)

struct data{int value,x,y;}max,min;

for(i=0;i<M;printf("\n"),i++)

{printf("%4d",a[i][j]=random(100)+1);

{max.value=a[i][j];max.x=i;max.y=j;}

{min.value=a[i][j];min.x=i;min.y=j;}

printf("-----------------\n");

i=a[0][N-1];a[0][N-1]=max.value;a[max.x][max.y]=i;

i=a[M-1][0];a[M-1][0]=min.value;a[min.x][min.y]=i;

for(i=0;i<M;printf("\n"),i++)

printf(b?"Yes\n":"No\n");}

{char s[255],t,max=0,min=0,l,i;

printf("Input a string(length>4):");

{if(s[max]<s[i])max=i;if(s[min]>s[i])min=i;}

t=s[1];s[1]=s[max];s[max]=t;if(min==1)min=max;

t=s[l-2];s[l-2]=s[min];s[min]=t;

Input a string(length>4):C++Builder

{char m[13][10]={"****","January","February","March",

"April","May","June","July","August","September",

"October","November","December"};

printf("Please input an integer(100..999):");

printf("%d:%d+%d+%d=%d,%d%%13=%d,%s\n", n,i,j,k,s,s,a,m[a=((s=(i=n/100)+(j=n/10%10)+(k=n%10))%13)]);}

Please input an integer(100..999):539

1-5.BCCAA 6-10.CCDDD 11-15.ACACB

1.看不出原题的意图。因为要计算1~n的累加和,n应是一个≥1的正整数。可是题目中却出现了n=0的情况。除非另加规定当n=0时1~n的累加和为0,或者把原题中的计算式改为计算0~n的累加和。据此猜测,原题应填为:①return(0)②return(n+sum(n-1))

{if(n<=0)return(-1);/*-1是出错标志*/

2.①return(1)②return(n*facto(n-1))

if((a=i/100)*a*a+(b=i/10%10)*b*b+(c=i%10)*c*c==i)

#define P 13/* P可以改为其他正整数*/

for(c=r-1;c>=1;a[c--]+=a[c-1]);

printf("%*d",(P-r)*3+1,a[0]);

for(c=1;c<=r;printf("%6d",a[c++]));

(应该排列成一个三角形,是贴吧造成现在这个样子的,不是程序有问题)

1 10 45 120 210 252 210 120 45 10 1

1 11 55 165 330 462 462 330 165 55 11 1

1 12 66 220 495 792 924 792 495 220 66 12 1

1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1

void printOCT(unsigned long n)

本题也可以不用递归算法,源程序请参考第7章第三题4。

12回复:【C语言】《C语言程序设计教程(第二版)》习题答案

但是不同时间印刷的版本课后题不太一样呢,象我们的是1999年12月第2版,2005年12月第69次印刷的。没有选择填空,应用题和楼主不知道有多少相同的,因为看不到原题。这个比较麻烦呢。

作者:210.77.204.* 2006-5-9 18:38回复此发言

--------------------------------------------------------------------------------

13回复:【C语言】《C语言程序设计教程(第二版)》习题答案

你对照一下主编和出版社,看看对吗?(见说明的第一条。)

我不是说叫你有问题另发帖子吗?

1-5.DCDAC 6-10.CCABC 11-16.AABBB 16-20.DCDBD

4.①q=p+1②q<p+10③*q>max④*q<min

{char s[255],c[255]={0};int i;

if(c[i])printf("%c=%d\t",i,c[i]);}

关于c语言程序设计教程第4版答案到此分享完毕,希望能帮助到您。