首页 C语言课后习题答案

C语言课后习题答案

举报
开通vip

C语言课后习题答案C语言课后习题答案-第四版-第一章5、请参照本章例题,编写一个C语言程序,输出以下信息:****************************VeryGood!****************************#includeintmain(){printf("**************************\n\n");printf("VeryGood!\n\n");printf("**************************\n");return0;}6、编写一个C语言程序,输入a,b,c三...

C语言课后习题答案
C语言课后习题答案-第四版-第一章5、请参照本章例题,编写一个C语言程序,输出以下信息:****************************VeryGood!****************************#includeintmain(){printf("**************************\n\n");printf("VeryGood!\n\n");printf("**************************\n");return0;}6、编写一个C语言程序,输入a,b,c三个值,输出其中最大值。#includeintmain(){inta,b,c,max;printf("pleaseinputa,b,c:\n");scanf("%d%d%d",&a,&b,&c);max=a;if(maxintmain(){inta,b,c,max;printf("pleaseinputa,b,c:\n");scanf("%d%d%d",&a,&b,&c);max=a>b?a:b;max=max>c?max:c;printf("Thelargestnumberis%d\n",max);return0;}第3章1、假如我国国民生产总值的年增长率为9%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为P=(1+r)^nr为年增长率,n为年数,p为与现在相比的倍数。#include#includeintmain(){floatp,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return0;}2、存款利息计算。有1000元,想存5年,可按以下5种办法存:(1)一次存5年期。(2)先存2年期,到期后将本息在存3年期。(3)先存3年期,到期后将本息在存2年期。(4)先存1年期,到期后将本息在存1年期,连续存5次。(5)存活期存款。活期利息每一季度结算一次。2007年12月的银行存款利息如下:1年定期存款利息为4.14%;2年定期存款利息为4.68%;3年定期存款利息为5.4%;5年定期存款利息为5.85%;活期存款利息为0.27%(活期利息每一季度结算一次。)如果r为年利率,n为存款年数,则计算本息和的公式为1年期本息和:P=1000*(1+r);n年期本息和:P=1000*(1+n*r);存n次1年期的本息和:P=1000*(1+r)^n;存活期本息和:P=1000*(1+r/4)^4n。说明:P=1000*(1+r/4)^4n。是一个季度的本息和。#include#includeintmain(){floatr5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p=1000;p1=p*((1+r5)*5);//一次存5年期p2=p*(1+2*r2)*(1+3*r3);//先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2);//先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5);//存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5);//存活期存款。活期利息每一季度结算一次printf("p1=%f\n",p1);//输出按第1 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 得到的本息和printf("p2=%f\n",p2);//输出按第2方案得到的本息和printf("p3=%f\n",p3);//输出按第3方案得到的本息和printf("p4=%f\n",p4);//输出按第4方案得到的本息和printf("p5=%f\n",p5);//输出按第5方案得到的本息和return0;}3、购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五入处理。提示:计算还请月数m的公式如下:m=[logp–log(p-d*r)]/log(1+r)可以讲公式该写为m={log[p/(p–d*r)]}/log(1+r)C的库函数中有求对数的函数log10,是求以10为底的对数,log(p) 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示logp。#include#includeintmain(){floatd=300000,p=6000,r=0.01,m;m=log10(p/(p-d*r))/log10(1+r);printf("m=%6.2f\n",m);return0;}6、请编将“China”,编译成密码,密码规律是:用原有的字母后面第4个字母代替原来的字母。#includeintmain(){charc1='C',c2='h',c3='i',c4='n',c5='a';c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("passworis%c%c%c%c%c\n",c1,c2,c3,c4,c5);return0;}7、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编程序。#includeintmain(){floath,r,l,s,sq,vq,vz;floatpi=3.141526;printf("请输入圆半径r,圆柱高h∶");scanf("%f,%f",&r,&h);//要求输入圆半径r和圆柱高hl=2*pi*r;//计算圆周长ls=r*r*pi;//计算圆面积ssq=4*pi*r*r;//计算圆球表面积sqvq=3.0/4.0*pi*r*r*r;//计算圆球体积vqvz=pi*r*r*h;//计算圆柱体积vzprintf("圆周长为:l=%6.2f\n",l);printf("圆面积为:s=%6.2f\n",s);printf("圆球表面积为:sq=%6.2f\n",sq);printf("圆球体积为:v=%6.2f\n",vq);printf("圆柱体积为:vz=%6.2f\n",vz);return0;}第四章4、有3个正整数a,b,c,有键盘输入,输出其中最大的数。#includeintmain(){inta,b,c;printf("请输入三个整数:");scanf("%d,%d,%d",&a,&b,&c);if(aintmain(){inta,b,c,temp,max;printf("请输入三个整数:");scanf("%d,%d,%d",&a,&b,&c);temp=(a>b)?a:b;/*将a和b中的大者存入temp中*/max=(temp>c)?temp:c;/*将a和b中的大者与c比较,取最大者*/printf("三个整数的最大数是%d\n",max);return0;}5、从键盘输入一个小于1000的正整数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据后先对其检查是否为小于1000的正数。若不是,则要求从新输入。#include#include#defineM1000intmain(){inti,k;printf("请输入一个小于%d的整数i:",M);scanf("%d",&i);while(i>M){printf("输入的数不符合要求,请重新输入一个小于%d的整数i:",M);scanf("%d",&i);}k=sqrt(i);printf("%d的平方根的整数部分是:%d\n",i,k);return0;}6、有一个函数:{x(x<1)y=2*x-1(1<=x<10)3*x–11(x>=10)写程序,输入x的值,输出y相应的值。#includeintmain(){·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==10*/{y=3*x-11;printf("x=%d,y=3*x-11=%d\n",x,y);}return0;}7、有一个函数:{-1(x<0)Y=0(x=0)1(x>0)写程序,输入x的值,输出y相应的值。#includeintmain(){intx,y;printf("pleaseenterx:");scanf("%d",&x);y=0;if(x>=0)if(x>0)y=1;elsey=-1;printf("x=%d,y=%d\n",x,y);return0;}8、给出一百分制成绩,要求输出成绩等级‘A’,’B’,’C’,’D’,’E’。90分以上为‘A’,80~89分为’B’,70~79分为’C’,60~69分为’D’,60分以下为’E’。#includeintmain(){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);return0;}9、给出一个不多于5位数的正整数;(1)求出它是几位数;(2)分别输出每一位数字;(3)按逆顺序输出各位数,例如原有数为123,应输出321.#include#includeintmain(){intnum,indiv,ten,hundred,thousand,ten_thousand,place;//分别代表个位,十位,百位,千位,万位和位数printf("请输入一个整数(0-99999):");scanf("%d",&num);if(num>9999)place=5;elseif(num>999)place=4;elseif(num>99)place=3;elseif(num>9)place=2;elseplace=1;printf("位数:%d\n",place);printf("每位数字为:");ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1000;hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);printf("\n反序数字为:");switch(place){case5:printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);break;case4:printf("%d%d%d%d\n",indiv,ten,hundred,thousand);break;case3:printf("%d%d%d\n",indiv,ten,hundred);break;case2:printf("%d%d\n",indiv,ten);break;case1:printf("%d\n",indiv);break;}return0;}11、输入4个整数,要求按由小到大的顺序输出。#includeintmain(){intt,a,b,c,d;printf("请输入四个数:");scanf("%d%d%d%d",&a,&b,&c,&d);printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("排序结果如下:\n");printf("%d%d%d%d\n",a,b,c,d);return0;}12、有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1,这4个圆塔高位10cm,塔以外无建筑物。求该点的建筑物高度(塔外的高度为零)。#includeintmain(){inth=10;floatx1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4;printf("请输入一个点(x,y):");scanf("%f,%f",&x,&y);d1=(x-x4)*(x-x4)+(y-y4)*(y-y4);/*求该点到各中心点距离*/d2=(x-x1)*(x-x1)+(y-y1)*(y-y1);d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);if(d1>1&&d2>1&&d3>1&&d4>1)h=0;/*判断该点是否在塔外*/printf("该点高度为%d\n",h);return0;}第五章例5.7用pi/4=1-1/3+1/5-1/7+……公式求pi近似值,直到发现某一项的绝对值小于10^6为止。#include#include//程序中用到数学函数fabs,应包含头文件math.nintmain(){intsign=1,count=0;//sign用来表示数值的符号,count用来统计循环次数doublepi=0.0,n=1.0,term=1.0;//pi开始代表多项式的值,最后代表π的值,n代表分母,term代表当前项的值while(fabs(term)>=1e-8)//检查当前项term的绝对值是否大于或等于10的(-6)次方{pi=pi+term;//把当前项term累加到pi中n=n+2;//n+2是下一项的分母sign=-sign;//sign代表符号,下一项的符号与上一项符号相反term=sign/n;//求出下一项的值termcount++;//count累加1}pi=pi*4;//多项式的和pi乘以4,才是π的近似值printf("pi=%10.8f\n",pi);//输出π的近似值printf("count=%d\n",count);//输出循环次数return0;}3、输入两个正整数m和n,求其最大公约数和最小公倍数。#includeintmain(){intp,r,n,m,temp;printf("请输入两个正整数n,m:");scanf("%d,%d,",&n,&m);if(nintmain(){charc;intletters=0,space=0,digit=0,other=0;printf("请输入一行字符:\n");while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z')letters++;elseif(c=='')space++;elseif(c>='0'&&c<='9')digit++;elseother++;}printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n",letters,space,digit,other);return0;}5、求Sn=a+aa+aaa+……+aa……a之值,其中a是一个数字,n表示a的位数。n由键盘输入。#includeintmain(){inta,n,i=1,sn=0,tn=0;printf("a,n=:");scanf("%d,%d",&a,&n);while(i<=n){tn=tn+a;/*赋值后的tn为i个a组成数的值*/sn=sn+tn;/*赋值后的sn为多项式前i项之和*/a=a*10;++i;}printf("a+aa+aaa+...=%d\n",sn);return0;}6、求和:1!+2!+3!+……+20!。#includeintmain(){doubles=0,t=1;intn;for(n=1;n<=20;n++){t=t*n;s=s+t;}printf("1!+2!+...+20!=%22.15e\n",s);return0;}7、求1+2+3+……+100+1+2^2+3^2+4^2+……+50^2+1+1/2+1/3+1/4+……+1/10。#includeintmain(){intn1=100,n2=50,n3=10;doublek,s1=0,s2=0,s3=0;for(k=1;k<=n1;k++)/*计算1到100的和*/{s1=s1+k;}for(k=1;k<=n2;k++)/*计算1到50各数的平方和*/{s2=s2+k*k;}for(k=1;k<=n3;k++)/*计算1到10的各倒数和*/{s3=s3+1/k;}printf("sum=%15.6f\n",s1+s2+s3);return0;}8、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如153是一位水仙花数,因为153=13+53+33。#includeintmain(){inti,j,k,n;printf("parcissusnumbersare");for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if(n==i*i*i+j*j*j+k*k*k)printf("%d",n);}printf("\n");return0;}9、编程求1000之内的完数,并按下面格式输出其因子:6itsfactorsare1,2,3#includeintmain(){intm,s,i;for(m=2;m<1000;m++){s=0;for(i=1;iintmain(){inti,n=20;doublea=2,b=1,s=0,t;for(i=1;i<=n;i++){s=s+a/b;t=a,a=a+b,b=t;}printf("sum=%16.10f\n",s);return0;}11、一个球从100米敢赌下落,每次反弹高度为原来的一半,在下落,在反弹。求第10次落地时共经过多少米?第10次反弹多高?#includeintmain(){doublesn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2;/*第n次反跳高度*/}printf("第10次落地时共经过%f米\n",sn);printf("第10次反弹%f米\n",hn);return0;}12、猴子吃桃问题。猴子第1天摘了若干个桃子,当即吃了一半零一个;第2剩下的吃了一半零一个,一次循环。到第十天时想吃就剩下一个桃子。求第一天摘了几个桃子?#includeintmain(){intday,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;/*第1天的桃子数是第2天桃子数加1后的2倍.*/x2=x1;day--;}printf("total=%d\n",x1);return0;}16、输出以下图案:*************************#includeintmain(){inti,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf("");for(k=0;k<=2*i;k++)printf("*");printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf("");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}return0;}17、甲队A,B,C3人,乙队X,Y,Z3人。A不和X比;C不和X,Z比,请编程找出3对赛手的名单。#includeintmain(){chari,j,k;/*是a的对手;j是b的对手;k是c的对手*/for(i='x';i<='z';i++)for(j='x';j<='z';j++)if(i!=j)for(k='x';k<='z';k++)if(i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')printf("A--%c\nB--%c\nC--%c\n",i,j,k);return0;}第六章1、用筛选法求100之内的素数。#include#includeintmain(){inti,j,n,a[101];for(i=1;i<=100;i++)a[i]=i;a[1]=0;for(i=2;iintmain(){inti,j,min,temp,a[11];printf("enterdata:\n");for(i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);}printf("\n");printf("Theorginalnumbers:\n");for(i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");for(i=1;i<=9;i++){min=i;for(j=i+1;j<=10;j++)if(a[min]>a[j])min=j;temp=a[i];a[i]=a[min];a[min]=temp;}printf("\nThesortednumbers:\n");for(i=1;i<=10;i++)printf("%5d",a[i]);printf("\n");return0;}3、求一个3x3的整型矩阵对角线元素之和。#includeintmain(){inta[3][3],sum=0;inti,j;printf("enterdata:\n");for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%3d",&a[i][j]);for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%6d\n",sum);return0;}4、有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。#includeintmain(){inta[11]={1,4,6,9,13,16,19,28,40,100};inttemp1,temp2,number,end,i,j;printf("arraya:\n");for(i=0;i<10;i++)printf("%5d",a[i]);printf("\n");printf("insertdata:");scanf("%d",&number);end=a[9];if(number>end)a[10]=number;else{for(i=0;i<10;i++){if(a[i]>number){temp1=a[i];a[i]=number;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}printf("Nowarraya:\n");for(i=0;i<11;i++)printf("%5d",a[i]);printf("\n");return0;}5、将一个数组中的值按逆顺序重新存放。例如:8,6,5,4,1。要求改为:1,4,5,6,8.。#include#defineN5intmain(){inta[N],i,temp;printf("enterarraya:\n");for(i=0;i#defineN10intmain(){inti,j,a[N][N];for(i=0;iintmain(){inta[15][15],i,j,k,p,n;p=1;while(p==1){printf("entern(n=1--15):");scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0;}for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=0;j=n/2+1;a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;}else{if(i<1)i=n;if(j>n)j=1;}if(a[i][j]==0)a[i][j]=k;else{i=i+2;j=j-1;a[i][j]=k;}}for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%5d",a[i][j]);printf("\n");}return0;}9、有15个数按由大到小顺序存放在一个数组中,输入一个数,要求折半查找法找出该数是数组中第几个元素值。如果不在数组中则输出“无此数”。#include#defineN15intmain(){inti,number,top,bott,mid,loca,a[N],flag=1,sign;charc;printf("enterdata:\n");scanf("%d",&a[0]);i=1;while(i=a[i-1])i++;elseprintf("enterthisdataagain:\n");}printf("\n");for(i=0;ia[N-1]))//要查的数不在查找区间内loca=-1;//表示找不到while((!sign)&&(top<=bott)){mid=(bott+top)/2;if(number==a[mid]){loca=mid;printf("Hasfound%d,itspositionis%d\n",number,loca+1);sign=1;}elseif(numberintmain(){inti,j,upp,low,dig,spa,oth;chartext[3][80];upp=low=dig=spa=oth=0;for(i=0;i<3;i++){printf("pleaseinputline%d:\n",i+1);gets(text[i]);for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z')upp++;elseif(text[i][j]>='a'&&text[i][j]<='z')low++;elseif(text[i][j]>='0'&&text[i][j]<='9')dig++;elseif(text[i][j]=='')spa++;elseoth++;}}printf("\nuppercase:%d\n",upp);printf("lowercase:%d\n",low);printf("digit:%d\n",dig);printf("space:%d\n",spa);printf("other:%d\n",oth);return0;}11、输出以下图案:*************************#includeintmain(){chara[5]={'*','*','*','*','*'};inti,j,k;charspace='';for(i=0;i<5;i++){printf("\n");printf("");for(j=1;j<=i;j++)printf("%c",space);for(k=0;k<5;k++)printf("%c",a[k]);}printf("\n");return0;}12、有一行电文,已按下面规律译成密码:A>Z,B>Y,C>X……a>z,b>y,c>x……编程译回原文并输出密码和原文。#includeintmain(){intj,n;charch[80],tran[80];printf("inputciphercode:");gets(ch);printf("\nciphercode:%s",ch);j=0;while(ch[j]!='\0'){if((ch[j]>='A')&&(ch[j]<='Z'))tran[j]=155-ch[j];elseif((ch[j]>='a')&&(ch[j]<='z'))tran[j]=219-ch[j];elsetran[j]=ch[j];j++;}n=j;printf("\noriginaltext:");for(j=0;jZ,B>Y,C>X……a>z,b>y,c>x……编程译回原文并输出密码和原文。#includeintmain(){intj,n;charch[80];printf("inputciphercode:\n");gets(ch);printf("\nciphercode:%s\n",ch);j=0;while(ch[j]!='\0'){if((ch[j]>='A')&&(ch[j]<='Z'))ch[j]=155-ch[j];elseif((ch[j]>='a')&&(ch[j]<='z'))ch[j]=219-ch[j];elsech[j]=ch[j];j++;}n=j;printf("originaltext:");for(j=0;jintmain(){chars1[80],s2[40];inti=0,j=0;printf("inputstring1:");scanf("%s",s1);printf("inputstring2:");scanf("%s",s2);while(s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("\nThenewstringis:%s\n",s1);return0;}15、编写一个程序,将S2中的全部字符复制到字符数组S1中。不用strcpy函数。复制时‘\0’也要复制过去。‘\0’后面的字符不复制。#include#includeintmain(){chars1[80],s2[80];inti;printf("inputs2:");scanf("%s",s2);for(i=0;i<=strlen(s2);i++)s1[i]=s2[i];printf("s1:%s\n",s1);return0;}第七章1、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。程序有误#includeintmain(){inthcf(int,int);intlcd(int,int,int);intu,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%d\n",h);l=lcd(u,v,h);printf("L.C.D=%d\n",l);return0;}inthcf(intu,intv){intt,r;if(v>u){t=u;u=v;v=t;}while((r=u%v)!=0){u=v;v=r;}return(v);}intlcd(intu,intv,inth){return(u*v/h);}#includeintHcf,Lcd;intmain(){voidhcf(int,int);voidlcd(int,int);intu,v;scanf("%d,%d",&u,&v);hcf(u,v);lcd(u,v);printf("H.C.F=%d\n",Hcf);printf("L.C.D=%d\n",Lcd);return0;}voidhcf(intu,intv){intt,r;if(v>u){t=u;u=v;v=t;}while((r=u%v)!=0){u=v;v=r;}Hcf=v;}voidlcd(intu,intv){Lcd=u*v/Hcf;}2、求方程aX^2+bX+c=0的根,用三个函数分别求:b*b-4ac>0、=0、<0时的根并输出结果。两个整数由键盘输入。#include#includefloatx1,x2,disc,p,q;intmain(){voidgreater_than_zero(float,float);voidequal_to_zero(float,float);voidsmaller_than_zero(float,float);floata,b,c;printf("inputa,b,c:");scanf("%f%f%f",&a,&b,&c);printf("equation:%5.2f*x*x+%5.2f*x+%5.2f=0\n",a,b,c);disc=b*b-4*a*c;printf("root:\n");if(disc>0){greater_than_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}elseif(disc==0){equal_to_zero(a,b);printf("x1=%f\t\tx2=%f\n",x1,x2);}else{smaller_than_zero(a,b);printf("x1=%f+%fi\tx2=%f-%fi\n",p,q,p,q);}return0;}voidgreater_than_zero(floata,floatb){x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}voidequal_to_zero(floata,floatb){x1=x2=(-b)/(2*a);}voidsmaller_than_zero(floata,floatb){p=-b/(2*a);q=sqrt(-disc)/(2*a);}3、写一个判断素数的函数,在主函数中输入一个整数,输出是否为素数的信息。#includeintmain(){intprime(int);intn;printf("inputaninteger:");scanf("%d",&n);if(prime(n))printf("%disaprime.\n",n);elseprintf("%disnotaprime.\n",n);return0;}intprime(intn){intflag=1,i;for(i=2;i#defineN3intarray[N][N];intmain(){voidconvert(intarray[][3]);inti,j;printf("inputarray:\n");for(i=0;i#includeintmain(){voidinverse(charstr[]);charstr[100];printf("inputstring:");scanf("%s",str);inverse(str);printf("inversestring:%s\n",str);return0;}voidinverse(charstr[]){chart;inti,j;for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--){t=str[i];str[i]=str[j-1];str[j-1]=t;}}6、写一个函数,将两个字符串连接。#includeintmain(){voidconcatenate(charstring1[],charstring2[],charstring[]);chars1[100],s2[100],s[100];printf("inputstring1:");scanf("%s",s1);printf("inputstring2:");scanf("%s",s2);concatenate(s1,s2,s);printf("\nThenewstringis%s\n",s);return0;}voidconcatenate(charstring1[],charstring2[],charstring[]){inti,j;for(i=0;string1[i]!='\0';i++)string[i]=string1[i];for(j=0;string2[j]!='\0';j++)string[i+j]=string2[j];string[i+j]='\0';}7、写一个函数,将一个字符串中的原音字母复制到另一个字符串,然后输出。#includeintmain(){voidcpy(char[],char[]);charstr[80],c[80];printf("inputstring:");gets(str);cpy(str,c);printf("Thevowellettersare:%s\n",c);return0;}voidcpy(chars[],charc[]){inti,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U'){c[j]=s[i];j++;}c[j]='\0';}8、写一个函数,输入4位数字,要求输出这4个数字字符,但每两个数之间空一个空格,如:1990,输出1990。#include#includeintmain(){charstr[80];voidinsert(char[]);printf("inputfourdigits:");scanf("%s",str);insert(str);return0;}voidinsert(charstr[]){inti;for(i=strlen(str);i>0;i--){str[2*i]=str[i];str[2*i-1]='';}printf("output:\n%s\n",str);}9、写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述结果。#includeintletter,digit,space,others;intmain(){voidcount(char[]);chartext[80];printf("inputstring:\n");gets(text);printf("string:");puts(text);letter=0;digit=0;space=0;others=0;count(text);printf("\nletter:%d\ndigit:%d\nspace:%d\nothers:%d\n",letter,digit,space,others);return0;}voidcount(charstr[]){inti;for(i=0;str[i]!='\0';i++)if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))letter++;elseif(str[i]>='0'&&str[i]<='9')digit++;elseif(str[i]==32)space++;elseothers++;}10、写一个函数,输入一行字符,将此字符串最长的单词输出。#include#includeintmain(){intalphabetic(char);intlongest(char[]);inti;charline[100];printf("inputoneline:\n");gets(line);printf("Thelongestwordis:");for(i=longest(line);alphabetic(line[i]);i++)printf("%c",line[i]);printf("\n");return0;}intalphabetic(charc){if((c>='a'&&c<='z')||(c>='A'&&c<='z'))return(1);elsereturn
本文档为【C语言课后习题答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
saw5189
暂无简介~
格式:doc
大小:387KB
软件:Word
页数:120
分类:
上传时间:2023-02-19
浏览量:0