C程序设计(第四版)谭浩强-课后习题答案-共11章_第1页
C程序设计(第四版)谭浩强-课后习题答案-共11章_第2页
C程序设计(第四版)谭浩强-课后习题答案-共11章_第3页
C程序设计(第四版)谭浩强-课后习题答案-共11章_第4页
已阅读5页,还剩184页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计(第四版)谭浩强ー课后习题答案ー共11章第I章程序设计和C语言1什么是计算机程序1什么是计算机语言13C语言的发展及其特点3最简单的C语言程序5.1最简单的C语言程序举例64.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5#include<stdio.h>intmain(){printf(〃**************************\n\n〃);printf(*VeryGood!\n\n*);printf("**************************\n");return0;)l-6#include<stdio.h>intmain(){inta,b,c,max;printf("pleaseinputa,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf("Thelargestnumberis%d\n,z,max);return0;)第2章算法一程序的灵魂161什么是算法162.2简单的算法举例173算法的特性214怎样表示ー个算法224.1用自然语言表示算法224.2用流程图表示算法224.3三种基本结构和改进的流程图264.4用NS流程图表示算法284.5用伪代码表示算法314.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计373.!顺序程序设计举例372数据的表现形式及其运算392.1常量和变量392.2数据类型422.3整型数据442.4字符型数据472.5浮点型数据496怎样确定常量的类型512.7运算符和表达式523C语句573.1C语句的作用和分类573.2最基本的语句——赋值语句593.4数据的输入输出654.1输入输出举例654.2有关数据输入输出的概念674.3用printf函数输出数据684.4用scanf函数输入数据754.5字符数据的输入输出78习题823-1#include<stdio.h>ftinclude<math.h>intmain(){floatp,r,n;r=0.1;n=10;p=pow(l+r,n);printf("p=%f\n”,p);return0;3-2-1ttinclude<stdio.h>ftinclude<math.h>intmainO{floatr5,r3,r2,rl,rO,p,pl,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;rl=0.0414;r0=0.0072;pl=p*((l+r5)*5);//一次存5年期p2=p*(l+2*r2)*(l+3*r3);〃先存2年期,到期后将本息再存3年期p3=p*(l+3*r3)*(l+2*r2);〃先存3年期,到期后将本息再存2年期p4=p*pow(l+rl,5);〃存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(l+r0/4,4*5);//存活期存款。活期利息每一季度结算ー次printfCpl=%f\n\pl);/Z输出按第1方案得到的本息和printfCp2=%f\n",p2);/Z输出按第2方案得到的本息和printfrP3=%f\n",p3);/Z输出按第3方案得到的本息和printf("p4=%f\n〃,p4);〃输出按第4方案得到的本息和printf("p5=%f\n〃,p5);/Z输出按第5方案得到的本息和return0;#include<stdio.h>ttinclude<math.h>intmain(){doubler5,r3,r2,rl,rO,p,pl,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;rl=0.0414;r0=0.0072;pl=p*((l+r5)*5);//一次存5年期p2=p*(l+2*r2)*(l+3*r3);〃先存2年期,到期后将本息再存3年期p3=p*(l+3*r3)*(l+2*r2);〃先存3年期,到期后将本息再存2年期p4=p*pow(l+rl,5);〃存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(l+r0/4,4*5);//存活期存款。活期利息每一季度结算ー次printfCpl=%f\n\pl);/Z输出按第1方案得到的本息和printfCp2=%f\n",p2);/Z输出按第2方案得到的本息和printfrP3=%f\n",p3);/Z输出按第3方案得到的本息和printf("p4=%f\n〃,p4);〃输出按第4方案得到的本息和printf("p5=%f\n〃,p5);/Z输出按第5方案得到的本息和return0;}3-2-3#include<math.h>intmain(){floatr5,r3,r2,rl,rO,p,pl,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;rl二〇.0414;r0=0.0072;pl=p*((l+r5)*5);//一次存5年期p2=p*(l+2*r2)*(l+3*r3);//先存2年期,到期后将本息再存3年期P3=p*(l+3*r3)*(l+2*r2);//先存3年期,到期后将本息再存2年期p4-p*pow(l+rl,5);〃存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(l+r0/4,4*5);//存活期存款。活期利息每一季度结算・次printf("pl=%10.2f\n",pl);〃输出按第1方案得到的本息和printf(*P2=%10.2f\n\p2);/Z输出按第2方案得到的本息和printf(*p3=%10.2f\n*,p3);/Z输出按第3方案得到的本息和printf("p4=%10.2f\n",p4);〃输出按第4方案得到的本息和printf("p5=%10.2f\n”,p5);〃输出按第5方案得到的本息和return0;)3~3.#include<math.h>intmain(){floatd=300000,p=6000,r=0.01,m;m=loglO(p/(p-d*r))/loglO(l+r);printf("m=%6.2f\n",m);return0;}3-4^include<stdio.h>intmain(){intc1,c2;cl=197;c2=198;printf("cl=%c,c2=%c\n",cl,c2);printf("cl二%d,c2=%d\n",cl,c2);return0;}3-5#include<stdio.h>intmain(){inta,b;floatx,y;charcl,c2;scanf("a二%db二%d“,&a,&b);scanf("%f%e”,&x,&y);scanf("%c%c”,&cl,&c2);printf("a二%d,b=%d,x=%f,y=%f,cl=%c,c2=%c\n*,a,b,x,y,cl,c2);return0;}3-6ttinclude<stdio.h>intmain(){charcl二'C',c2='h',c3二'i',c4='n',c5二'a';cl=cl+4;c2二c2+4;c3=c3+4;c4二c4+4;c5二c5+4;printf("passworis%c%c%c%c%c\n*,cl,c2,c3,c4,c5);return0;}3-7#include<stdio.h>intmain(){floath,r,1,s,sq,vq,vz;floatpi=3.141526;printf("请输入圆半径r»圆柱髙h:〃);scanf(*%f,%f&r,&h)i〃要求输入圆半径r和圆柱高hl=2*pi*r;〃计算圆周长ls=r*r*pi;〃计算圆面积ssq=4*pi*r*ri〃计算惻球表面积sqvq=4.0/3.0*pi*r*r*ri〃计算圆球体积vqvz=pi*r*r*h;//计算圆柱体积vzprintf("圆周长为:1二%6.2f\n",1);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;}3-8-1#include<stdio.h>intmain(){intcl,c2;〃整型定义printf(〃请输入两个整数cl,c2<);scanf("%d,%d”,&cl,&c2);printf("按字符输出结果:'n");printf(*%c,%c\n”,cl,c2);printf("按ASCII码输出结果为:\n");printf("%d,%d\n”,cl,c2);return0;#include<stdio.h>intmain()[charcl,c2;//定义字符型变量inti1,i2;//定义整型变量printf("请输入两个字符cl,c2:");scanf(*%c,%c*,&cl,&c2);il=cl;〃赋值给整型变量i2=c2;printf("按字符输出结果:'n");printf(*%c,%c\n*,i1,i2);printf("按整数输出结果:'n");printf(*%d,%d\n*,cl,c2);return0;}3-8-3#include<stdio.h>intmain()(charcl,c2;〃定义为字符型intil,i2;〃定义为整型printf("请输入两个整数il,i2:");scanfr%d,%d*,&il,&i2);cl=il;〃将整数赋值给字符变量c2=i2;printf("按字符输出结果:'n");printf(*%c,%c\n*,cl,c2);printf("按整数输出结果:'n");printf(*%d,%d\n”,cl,c2);return0;}3-8#include<stdio.h>intmain()icharcl,c2;printf(〃请输入两个字符cl,c2<);cl=getchar();c2=getchar();printf(〃用putchar语句输出结果为;putchar(cl);putchar(c2);printf("\n");printf("用printf语句输出结果为:つ;printfぐ%c%c\n”,cl,c2);return0;}第4章选择结构程序设计851选择结构和条件判断854.2用if语句实现选择结构874.2.1H]if语句处理选择结构举例874.2.2if语句的一般形式893关系运算符和关系表达式913.1关系运算符及其优先次序913.2关系表达式924逻辑运算符和逻辑表达式924.4.1逻辑运算符及其优先次序934.4.2逻辑表达式944.4.3逻辑型变量964.5条件运算符和条件表达式974.6选择结构的嵌套994.7用switch语句实现多分支选择结构1024.8选择结构程序综合举例105习题!114-4-1ttinclude<stdio.h>intmain()[inta,b,c;printf("请输入三个整数:");scanf("%d,%d,%d",&a,&b,&c);if(a<b)if(b<c)printf("max=%d\n〃,c);elseprintf(〃max=%d\n〃,b);elseif(a<c)printf("max二%d\n”,c);elseprintf("max=%d\n",a);return0;}4-4-2#include<stdio.h>intmain(){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;)4-5-2#include<stdio.h>#include<math.h>#defineMlOOOintmain()inti,k;printf("请输入一个小于%d的整数i:*,M);scanf&i);while(i>M){printf(〃输入的数不符合要求,请重新输入ー个小于%d的整数i:M);scanf&i);}k=sqrt(i);printfC%d的平方根的整数部分是:%d\n〃,i,k);return0;}4-5ttinclude<stdio.h>ttinclude<math.h>#defineM1000intmain()(inti,k;printf(〃请输入ー个小于%d的整数i:〃,M);scanf("%d",&i);if(i>M){printf(〃输入的数不符合要求,请重新输入ー个小于%d的整数i:M);scanf("%d",&i);k=sqrt(i);printf("%d的平方根的整数部分是:%d\n”,i,k);return0;}4-6.ttinclude<stdio.h>intmain(){intx,y;printf("输入x:");scanf(*%dzz,&x);if(x<l)/*x<l*/{y=x;printf("x=%3d,y二x二%d\n”,x,y);}elseif(x<10)/*l=<x<10*/{y=2*x-l;printf(〃x二%d,y二2*x-l.二%d\n”,x,y);}else/*x>=10*/{y=3*x-ll;printfCx=%d,y=3*xTl二%d\n”,x,y);}return0;)4-7-1^include<stdio.h>intmain()intx,y;printf('enterx:");scanf("%d",&x);y=-l;if(x!=O)if(x>0)y=l;elsey=0;printfCx=%d,y=%d\n",x,y);return0;}4-7-2ftinclude<stdio.h>intmain()(intx,y;printfCpleaseenterx:");scanf("%d",&x);y=0;if(x>=0)if(x>0)y=l;elsey="l;printf("x=%d,y二%d\n〃,x,y);return0;}4-8#include<stdio.h>intmain(){floatscore;chargrade;printf(〃请输入学生成绩:〃);scanfC'%f”,&score);while(score>100|score<0){printf("\n输入有误,请重输”);scanfC'%f”,&score);)switch((int)(score/10)){case10:case9:grade='A';break;case8:grade='B';break;case7:grade二し!break;case6:grade二'D';break;case5:case4:case3:case2:case1:case0:grade='E';}printf("成绩是%5.If,相应的等级是%c\n score,grade);return0;}4-9ttinclude<stdio.h>^include<math.h>intmain()(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=l;printf("位数:%d\n”,place);printf("每位数字为:");ten_thousandz:num/10000;thousand=(int)(num-tenthousand*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);switch(place){case5:printf("%d,%d,%d,%d,%d〃,ten_thousand,thousand,hundred,ten,indiv);printf("\n反序数字为:");printf("刎%d%d%d%d\n,indiv,ten,hundred,thousand,ten_thousand);break;case4:printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);printf("\n反序数字为:");printf("%d%d%d%d\n",indiv,ten,hundred,thousand);break;case3:printf("%d,%d,%d",hundred,ten,indiv);printf("\n反序数字为:");printf("%d%d%d\n",indiv,ten,hundred);break;case2:printf("%d,%d",ten,indiv);printf("\n反序数字为:");printf("%d%d\n”,indiv,ten);break;case1:printf("%d",indiv);printf("\n反序数字为:");printf(*%d\n*,indiv);break;}return0;)4-10-1/include<stdio.h>intmain()(inti;doublebonus,bonl,bon2,bon4,bon6,bonlO;bonl=100000^0.1;bon2=bonl+100000*0.075;bon4=bon2+l00000*0.05;bon6=bon4+l00000*0.03;bon10=bon6+400000*0.015;printf("请输入利润i:");scanf&i);if(i<=100000)bonus二i*〇.1;elseif(i<=200000)bonus=bon1+(i-100000)*0.075;elseif(iく=40000〇)bonus=bon2+(i-200000)*0.05;elseif(i<=600000)bonus=bon4+(i-400000)*0.03;elseif(i<=1000000)bonus=bon6+(i-60000〇)*0,015;elsebonus=bonl0+(i-1000000)*0.01;printf("奖金是:%10.2f\n*,bonus);return0;}4-10-2#include<stdio.h>intmain()(inti;doublebonus,bonl,bon2,bon4,bon6,bonlO;intbranch;bonl=100000*0.1;bon2=bonl+100000・〇,075;bon4=bon2+20000〇*〇.05;bon6=bon4+20000〇*〇.03;bonlO=bon6+40000〇・〇.015;printf("请输入利润i:;scanf("%d",&i);branch二i/100000;if(branch>10)branch=10;switch(branch){case0:bonus=i*0.1;break;case1:bonus=bonl+(i-100000)*0.075;break;case2:case3:bonus=bon2+(i-200000)*0.05;break;case4:case5:bonus=bon4+(i-400000)*0.03;break;case6:bonus=bon6+(i-600000)*0.015;break;case10:bonus=bonl0+(i-1000000)*0.01;}printf("奖金是%10.2f\nz,,bonus);return0;)4-11#include<stdio.h>intmain(){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(〃排序结果如下:、ベ);printf(*%d%d%d%d\n,z,a,b,c,d);return0;}4-12ttinclude<stdio.h>intmain()(inth=10;floatxl=2,yl=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,dl,d2,d3,d4;printf(“请输入ー个点(x,y);scanf("%f,%f”,&x,&y);dl=(x-x4)*(x-x4)+(y-y4)*(y-y4);/・求该点到各中心点距离・/d2=(x-xl)*(x-xl)+(y-yl)*(y-yl);d3=(x-x2)*(x-x2)+(y-y2)*(y-y2);d4=(x-x3)*(x-x3)+(y-y3)*(y-y3);if(dl>l&&d2>l&&d3>l&&d4>l)h二〇;/・判断该点是否在塔外・/printf("该点髙度为%d\n”,h);return0;}第5章循环结构程序设计1145.1为什么需要循环控制1145.2用while语句实现循环!155.3用d〇…while语句实现循环!175.4用for语句实现循环!205循环的嵌套1245.6几种循环的比较1255.7改变循环执行的状态!255.7.1用break语句提前终止循环!265.7.2用continue语句提前结束本次循环!275.7.3break语句和continue语句的区别1285.8循环程序举例131习题!405-2Sinclude<stdio.h>8include<math.h>//程序中用到数学函数fabs,应包含头文件math,nintmain()(intsign=l,count=0;〃sign用来表示数值的符号,count用来统计循环次数doublepi=0.0,n=1.0,term=1.0;〃pi开始代表多项式的值,最后代表n的值,n代表分母,term代表当前项的值while(fabs(term)>=le-8)/Z检查当前项term的绝对值是否大于或等于!0的(-6)次方{pi=pi+tenn;//把当前项term累加到p!中n=n+2;//n+2是下ー项的分母sign二一sign;//sign代表符号,下ー项的符号与上一项符号相反term=sign/n;/Z求出下ー项的值termcount++;//count累加1}pi=pi*4;/Z多项式的和pi乘以4,オ是n的近似值printf("pi=%10.8f\n",pi);//输出n的近似值printf("count=%d\n",count);/Z输出循环次数return0;}5-3#include<stdio.h>intmain()(intp,r,n,m,temp;printf(〃请输入两个正整数n,m:");scanf(,z%d,%d,",&n,&m);if(n<m)(teii^n;n=m;m二temp;p=n*m;while(m!=0)(r=n%m;n=m;m=r;}printf("它们的最大公约数为:%d\n”,n);printf("它们的最小公约数为:%d\n”,p/n);return0;}5-4ttinclude<stdio.h>intmain(){charc;intletters=0,space=0,digit=0,other=O;printf("请输入一行字符:、n");while((c=getchar())!='\n')(if(c>='a'&&cくニ'z'IIc>='A'&&cく二'Z')letters++;elseif(c==,')space++;elseif(c>二'〇'&&c<='9')digit++;elseother++;}printf("字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n,letters,space,digit,other);return0;}5-5ttinclude<stdio.h>intmainO{inta,n,i=l,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;5-6ttinclude<stdio.h>intmain(){doubles=0,t=l;intn;for(n=l;n<=20;n++)it=t*n;s=s+t;}printf(〃1!+2!+.・•+20!=%22.15e\n",s);return0;}5-7ftinclude<stdio.h>intmain(){intnl=100,n2=50,n3=10;doublek,sl=0,s2=0,s3=0;for(k=l;k<=nl;k++)/・计算1到100的和・/{sl=sl+k;}for(k=l;k<=n2;k++)/・计算1到50各数的平方和・/{s2=s2+k*k;}for(k=l;k<=n3;k++)/・计算1到10的各倒数和・/{s3=s3+l/k;}printf("sum=%15.6f\n",sl+s2+s3);return0;}5-8ttinclude<stdio.h>intmain()(inti,j,k,n;printf("parcissusnumbersare");for(n=100;n<l000;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;}5-9-1^defineM1000/・定义寻找范围・/#include<stdio.h>intmain(){intkl,k2,k3,k4,k5,k6,k7,k8,k9,klO;inti,a,n,s;for(a=2;a<=M;a++)/*a是2-1000之间的整数,检查它是否完数・/{nニ〇;/*n用来累计a的因子的个数・/s=a;/*s用来存放尚未求出的因子之和,开始时等于a*/for(i=l;iくa;i++)/・检查i是否a的因子・/if(a%i==0)/・如果i是a的因子・/{n++;/*n加1,表示新找到ー个因子・/s=s-i;/*s减去已找到的因子,s的新值是尚未求出的因子之和・/switch(n)/・将找到的因子赋给kl...k9,或klO*/{case1:kl=i;break;/・找出的笫1个因子赋给kl*/k2=i;break;/・找出的笫2个因子赋给k2*/k3=i;break;/・找出的笫3个因子赋给k3*/k4=i;break;/・找出的笫4个因子赋给k4*/k5=i;break;/・找出的笫5个因子赋给k5*/k6=i;break;/・找出的笫6个因子赋给k6*/k7=i;break;/・找出的笫7个因子赋给k7*/k8=i;break;/・找出的笫8个因子赋给k8*/k9=i;break;/・找出的笫9个因子赋给k9*/klO=i;break;/・找出的笫10个因子赋给klO*/))if(s==0)(printf(z/%d,Itsfactorsare',a);if(n>l)printf("%d,%d",kl,k2);/*n>l表示a至少有2个因子・/if(n>2)printf(\%d",k3);/*n>2表示至少有3个因子,故应再输出ー个因子・/if(n>3)printf(",%d",k4);/*n>3表示至少有4个因子,故应再输出ー个因子・/if(n>4)printf(",%d",k5);/・以下类似・/if(n>5)printf(二%d",k6);if(n>6)printf(",%d",k7);if(n>7)printf(二%d",k8);if(n>8)printf(二%d二k9);if(n>9)printf(二%d二klO);printf('\n");return0;}5-9-2#include<stdio.h>intmain(){intm,s,i;for(m=2;m<1000;m++){s=0;for(i=l;i<m;i++)if((m%i)=0)s=s+i;if(s==m){printf(,z%d,itsfactorsare,z,m);for(i=l;i<m;i++)if(m%i==0)printf(*%d”,i);printf("\n");}}return0;}5-10#include<stdio.h>intmain()Iinti,n=20;doublea=2,b=l,s=0,t;for(i=l;i<=n;i++)s=s+a/b;t~a,a=a+b,b=t;}printf(*suin=%16.10f\n*,s);return0;}5-11^include<stdio.h>intmain()(doublesn=100,hn=sn/2;intn;for(n=2;n<=10;n++){sn=sn+2*hn;/*第n次落地时共经过的米数・/hn二hn/2;/・第n次反跳高度・/)printf("第!0次落地时共经过%f米、n”,sn);printf("第10次反弹%f米、n”,hn);return0;#include<stdio.h>intmain(){intday,xl,x2;day=9;x2=l;while(day>O){xl=(x2+l)*2;/*第1天的桃子数是第2天桃子数加1后的2倍.*/x2=xl;day—;}printf("total二%d\n”,xl);return0;}5-13ftinclude<stdio.h>ttinclude<math.h>intmain(){floata,xO,xl;printf("enterapositivenumber:");scanf("%f",&a);x0=a/2;xl=(x0+a/x0)/2;do{xO=xl;xl=(xO+a/xO)/2;}while(fabs(x0-xl)>=le-5);printf(*Thesquarerootof%5.2fis%8.5f\n*,a,xl);return0;}5-14ttinclude<stdio.h>^include<math.h>intmain(){doublexl,xO,f,fl;xl=l.5;do{x0=xl;f=((2*x0-4)*x0+3)*x0-6;fl=(6*x0-8)*x0+3;xl=x0-f/fl;}while(fabs(xl-xO)>=le-5);printt(Fherootofequationis%5.2f\n",xl);return0;)5-15^include<stdio.h>#include<math.h>intmainO{floatxO,xl,x2,fxO,fxl,fx2;do{printf(""enterxl&x2:");scanf(*%f,%f”,&xl,&x2);fxl=xl*((2*xl-4)*xl+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fxl*fx2>0);do{x0=(xl+x2)/2;fxO=xO*((2*x0-4)*x0+3)-6;if((fx0*fxl)<0){x2=x0;fx2=fx0;}else{xl=xO;fxl=fxO;}}while(fabs(fxO)>=le-5);printf("x=%6.2f\n”,xO);5-16ttinclude<stdio.h>intmain()(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二〇;iく二2;i++){for(j=O;j<=i;j++)printfCつ;for(k=0;k<=4-2*i;k++)printf('*");printf('\n〃);}return0;)5-17ttinclude<stdio.h>intmain()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;)第6章利用数组处理批量数据1426.1怎样定义和引用・维数组1426.1.1怎样定义ー维数组!436.1.2怎样引用ー维数组元素1446.1.3ー维数组的初始化1456.1.4ー维数组程序举例1466.2怎样定义和弓I用二维数组!486.2.1怎样定义二维数组!496.2.2怎样引用二维数组的元素1506.2.3二维数组的初始化1516.2.4二维数组程序举例1526.3字符数组1546.3.1怎样定义字符数组!546.3.2字符数组的初始化1556.3.3怎样引用字符数组中的元素1556.3.4字符串和字符串结束标志1566.3.5字符数组的输入输出1596.3.6使用字符串处理函数!616.3.7字符数组应用举例165习题1686-1#include<stdio.h>#include<math.h>intmain(){inti,j,n,a[101];for(i=l;i<=100;i++)a[i]=i;a[l]=0;for(i=2;i<sqrt(100);i++)for(j=i+l;j<=100;j++){if(a[i]!=0&&a[j]!=0)if(a[j]%a[i]==0)a[j]=0;)printf("\n");for(i=2,n=0;i<=100;i++){if(a[i]!=0){printf("%5d",a[i]);n++;{printf('\n");n二〇;}}printfC\n");return0;}6-2ttinclude<stdio.h>intmainO{inti,j,min,temp,a[l1];printf〈enterdata:\n*);for(i=l;i<=10;i++){printf(“a[%d]=",i);scanf("%d",&a[i]);}printf("\n");printf("Theorginalnumbers:\n");for(i=l;i<=10;i++)printf("%5d",a[i]);printf("\n");for(i=l;i<=9;i++){min=i;for(j=i+l;j<=10;j++)if(a[min]>a[j])min=j;temp=a[i];a[i]=a[min];a[min]二temp;printfCAnThesortednumbers:\n*);for(i=l;iく=10;i++)printf("%5d",a[i]);printf(〃\n");return0;)6-3^include<stdio.h>intmain()iinta[3][3],sum=0;inti,j;printf(*enterdata:\n");for(i二〇;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;}6-4ttinclude<stdio.h>intmain(){inta[ll]={l,4,6,9,13,16,19,28,40,100);inttempi,temp2,number,end,i,j;printf(,zarraya:\n");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){templ=a[i];a[i]=number;for(j=i+l;j<ll;j++){temp2=a[j];a[j]=templ;templ=temp2;}break;printf("Nowarraya:\n");for(i=0;i<ll;i++)printf("%5d”,a[i]);printf("\n");return0;}6-5ttinclude<stdio.h>ttdefineN5intmainO{inta[N],i,temp;printflenterarraya:\nzz);for(i=0;iくN;i++)scanf("%d”,&a[i]);printf(/zarraya:\n");for(i=0;iくN;i++)printf("%4d",a[i]);for(i=0;i<N/2;i++)//循环的作用是将对称的元素的值互换{temp=a[i];a[i]=a[N-i-l];a[N-i-l]=temp;}printf(zz\nNow,arraya:\nzz);for(i=0;i<N;i++)printf("%4d",a[i]);printf('\n");return0;6-6#include<stdio.h>#defineN10intmain(){inti,j,a[N][N];for(i=0;iくN;i++){a[i]a[i][0]=l;}for(i=2;iくN;i++)for(j=l;j<=i-l;j++)a[i][j]=a[i-l][j-l]+a[i-l][j];for(i=0;i<N;i++){for(j=0;j<=i;j++)printf("%6d",a[i][j]);printf(〃、n");}printf("\n");return0;intmain(){inta[15][15],i,j,k,p,n;p=l:while(p==l){printf(*entern(n=l-15):;scanf("刎",&.n);if((n!=O)&&(n<=15)&&(n%2!=0))p=O;)for(i=l;i<=n;i++)for(j=l;j<=n;j++)a[i][j]=0;j=n/2+l;a[l][j]=l;for(k=2;kく=n*n;k++){i=i-l;j=j+l;if((i<l)&&(j>n)){i=i+2;j=j-l:)else{if(i<l)i=n;if(j>n)j=l;if(a[i][j]==0)a[i][j]=k;else{i=i+2;j=j-l;a[i][j]=k;))for(i=l;i<=n;i++){for(j=l;j<=n;j++)printf(*%5d*,a[i][j]);printf("\n");)return0;}6-8ttinclude<stdio.h>#defineN4#defineM5/・数组为4行5列・/intmain()(inti,j,k,a[N][M],max,maxj,flag;printfCpleaseinputmatrix:\nz");for(i二〇;iくN;i++)/・输入数组・/for(j=0;j<M;j++)scanf("%d”,&a[i][j]);for(i=0;i<N;i++){max=a[i][0];/・开始时假设a[i][0]最大・/maxj=0;/・将列号〇赋给maxj保存・/for(j=0;j<M;j++)/・找出第i行中的最大数・/if(a[i][j]>max){max=a[i][j];/・将本行的最大数存放在max中・/maxj=j;/・将最大数所在的列号存放在maxj中・/}flag=l;/・先假设是鞍点,以flag为1代表・/for(k=O;k<N;k++)if(max>a[k][maxj])/・将最大数和其同列元素相比・/{flag=0;/*如果max不是同列最小,表示不是鞍点令flagl为0・/continue;}if(flag)/・如果flagl为1表示是鞍点・/{printf(/za[%d][%d]=%d\nz\i,maxj,max);/*输出鞍点的值和所在行列号・/break;})if(!flag)/・如果flag为〇表示鞍点不存在・/printf(zzItisnotexist!\n,z);return0;#defineN15intmain()(inti,number,top,bott,mid,loca,a[N],flag=l,sign;charc;printf("enterdata:\n");scanf("%d”,&a[0]);i=l;while(i<N){scanf("%d",&a[i]);if(a[i]>=a[i-l])i++;elseprintf("enterthisdataagain:\n");}printf("\n");for(i=0;iくN;i++)printf("%5d",a[i]);printf("\n");while(flag){printf("inputnumbertolookfor:");scanf("%d”,&number);sign=0;topニ〇;〃top是查找区间的起始位置bott=N-l:〃bott是查找区间的最末位置if((number<a[0])11(number>a[N-l]))〃要査的数不在查找区间内loca=-l;〃表示找不到while((!sign)&&(top<=bott)){mid=(bott+top)/2;if(number==a[mid]){loca=mid;printf(,zHasfound%d,itspositionis%d\nz/,number,loca+1);sign=l;}elseif(number<a[mid])bott=mid-l;elsetop=mid+1;}if(!signI|loca==-l)printfCcannotfind%d.\n,number);;printf("continuornot(Y/N)?");scanf("%cz,,&c);if(cニニ'N'I|c='n')flagニ〇;}return0;ttinclude<stdio.h>intmain(){inti,j,upp,low,dig,spa,oth;chartext[3][80];upp=1ow=dig=spa=oth=0;for(i二〇;iく3;i++){printf(,zpleaseinputline%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]>=’〇'&&text[i][j]<=,9')dig++;elseif(text[i][j]=='')spa++;elseoth++;}}printf(z,\nuppercase:%d\n”,upp);printf(z/lowercase:%d\nzz,low);print—digit:%d\n”,dig);printf(*space:%d\n”,spa);printf(zzother:%d\n,oth);return0;}6-11^include<stdio.h>intmain(){chara[5]={,inti,j,k;charspace二'';for(i二〇;iく5;i++){printf(〃\n");printf("");for(j=l;j<=i;j++)printf(A%c,space);for(k=0;k<5;k++)printf('%c",a[k]);}printf(〃\n");return0;}6T2a-c^include<stdio.h>intmain(){intj,n;charch[80],tran[80];printf(zzinputciphercode:");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('Unoriginaltext:");for(j=0;j<n;j++)putchar(tran[j]);printf('\n");return0;}6-12bftinclude<stdio.h>intmain(){intj,n;charch[80];printf("inputciphercode:\n");gets(ch);printf("\nciphercode:%s\n*,ch);j=0;while(ch[j]!=‘、。'){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;j<n:j++)putchar(ch[j]);printf("\n");return0;}6-13^include<stdio.h>intmain(){charsi[80],s2[40];inti=0,j=0;printf("inputstringl:");scanf("%s",si);printf("inputstring2:");scanf("%s”,s2);while(si[i]!=‘、〇')i++;while(s2[j]!='\0')sl[i++]=s2[j++];sl[i]='、0';printf("\nThenewstringis:%s\n",si);return0;ftinclude<stdio.h>intmainO{inti,resu;charsi[100],s2[100];printf(z,inputstringl:;gets(si);printf("\ninputstring2:");gets(s2);i=0;while((sl[i]=s2[i])&&(sl[i]!二‘、〇'))i++;if(sl[i]==>\0'&&s2[i]=='\0')resu=O;elseresu=sl[i]-s2[i];printf(zz\nresult:%d.\nzz,resu);return0;}6-15#include<stdio.h>^include<string.h>intmain(){charsi[80],s2[80];printf(*inputs2:");scanfs2);for(i-0;i<=strlen(s2);i++)sl[i]=s2[i];printf("si:%s\n”,si);return0;)第7章用函数实现模块化程序设计1707.!为什么要用函数1707.2怎样定义函数1727.2.1为什么要定义函数1727.2.2定义函数的方法I737.3调用函数1747.3.1函数调用的形式1747.3.2函数调用时的数据传递1757.3.3函数调用的过程1777.3.4函数的返回值!787.4对被调用函数的声明和函数原型1797.5函数的嵌套调用1827.6函数的递归调用1847.7数组作为函数参数1927.7.1数组元素作函数实参1937.7.2数组名作函数参数1947.7.3多维数组名作函数参数1977.8局部变量和全局变量1997.8.1局部变量!997.8.2全局变量2007.9变量的存储方式和生存期2047.9.1动态存储方式与静态存储方式2047.9.2局部变量的存储类别2057.9.3全局变量的存储类别2087.9.4存储类别小结2127.10关于变量的声明和定义2147.11内部函数和外部函数2157.11.1内部函数2157.11.2外部函数215习题2187-1-1^include<stdio.h>intmain(){inthcf(int,int);intlcd(int,int,int);intu,v,h,1;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*,1);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);}intled(intu,intv,inth)(return(u*v/h);}7-1-2#include<stdio.h>intHcf,Led;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*,Led);return0;)voidhcf(intu,intv){intt,r;if(v>u){t=u;u=v;v=t;}while((r=u%v)!=0){u=v;v=r;)Hcf7;}voidlcd(intu,intv){Lcd=u*v/Hcf;)7-2ttinclude<stdio.h>#include<math.h>floatxl,x2,disc,p,q;intmain(){voidgreaterthanzero(float,float);voidequal_to_zero(float,float);voidsmaller_than_zero(float,float);floata,b,c;printf(z,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("xl=%f\t\tx2=%f\n",xl,x2);}elseif(disc==0){equaltozero(a,b);printf("xl二%f\t\tx2=%f\n”,xl,x2);}else{sma11er_than_zero(a,b);printf("xl=%f+%fi\tx2=%f-%fi\n",p,q,p,q);}return0;}voidgreater_than_zero(floata,floatb){xl二(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);voidequal_to_zero(floata,floatb)xl=x2=(-b)/(2*a);}voidsmaller_than_zero(floata,floatb){p=-b/(2*a);q=sqrt(-disc)/(2*a);}7-3ttinclude<stdio.h>intmain()(intprime(int);intn;printflinputaninteger:*);scanf&n);if(prime(n))printf(〃%disaprime.\n",n);elseprintf(/z%disnotaprime.\n',n);return0;}intprime(intn){intflag=l,i;for(i=2;i<n/2&&flag==l;i++)if(n%i==0)flag=O;return(flag);}7-4ttinclude<stdio.h>ttdefineN3intarray[N][N];intmain(){voidconvert(intarray[][3]);inti,j;printflinputarray:\n");for(i=0;i<N;i++)for(j=0;jくN;j++)scanf(zz%dz,,&array[i][j]);printf("\noriginalarray:\n");for(i=0;iくN;i++){for(j=O;j<N;j++)printf1%5d〃,array[i][j]);printf;}convert(array);printf(z,convertarray:\nzz);for(i=0;iくN;i++)(for(j=0;j<N;j++)printf("%5d”,array[i][j]);printf("\n");)return0;voidconvert(intarray[][3]){inti,j,t;for(i二〇;iくN;i++)for(j=i+1;jくN;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}ttinclude<stdio.h>^include<string.h>intmain(){voidinverse(charstr[]);charstr[100];printfCinputstring:z,);scanfstr);inverse(str);printfCinversestring:%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-l];str[j-l]=t;7-6#include<stdio.h>intmainO{voidconcatenate(charstringl[],charstring2[],charstring口);charsl[100],s2[100],s[100];printfCinputstringl:");scanf("%s",si);printf("inputstring2:");scanf(*%s",s2);concatenate(si,s2,s);printf("\nThenewstringis%s\n",s);return0;}voidconcatenate(charstringl[],charstring2[],charstring[]){inti,j;for(i二〇;stringl[i]!二‘、〇';i++)string[i]=stringl[i];for(j=0;string2[j]!=\0';j++)string[i+j]=string2[j];string[i+j]=,、0';}7-7#include<stdio.h>intmainO{voidcpy(char[],char口);charstr[80],c[80];printf(inputstring:*);gets(str);cpy(str,c);printf(zzThevowellettersare:%s\n,c);return0;}voidcpy(chars[],charc[]){inti,j;for(i=。,j二〇;s[i]!二‘、0';i++)if(s[i]=='a'I|s[i]=='A'|s[i]=='e'|s[i]='E'||s[i]=='i'|s[i]==I'I|s[i]='o'I|s[i]==0'I|s[i]=-u'||s[i]=='U'){c[j]=s[i];j++;}c[ホ‘、。';)7-8^include<stdio.h>#include<string.h>intmainO{charstr[80];voidinsert(char口);printf(''inputfourdigits:/z);scanfi'%s”,str);insert(str);return0;}voidinsert(charstr[]){inti;for(i=strlen(str);i>0;i--){str[2*i]=str[i];str[2*i-l]=';}printf("output:\n%s\n”,str);}7-9ftinclude<stdio.h>intletter,digit,space,others;intmain()(voidcount(charロ);chartext[80];printf("inputstring:\n");gets(text);printf("string:");puts(text);letter=O;digit=O;space=O;othersニ〇;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]>二’〇’&&str9')digit++;elseif(str[i]==32)space++;elseothers++;)7-10#include<stdio.h>#include<string.h>intmainO(intalphabetic(char);intlong

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论