



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计课后习
题答案谭浩强精编WORD版第1章程序设计和C语言1什么是计算机程序112什么是计算机语言1C语言的发展及其特点3最简单的C语言程序5最简单的C语言程序举例6C语言程序的结构10运行C程序的步骤与方法12程序设计的任务141-5#include<stdio.h>intmain(){printf(***************************\n\n');printf,VeryGood!\n\nH);pnntf(”**************************return0;l-6#include<stdio.h>intmain。{inta,b,c,max;printf(Mplcascinputa,b,c:\nH);scanf(M%d,%d,%dM,&a,&b,&c);max二a;if(max<b)max二b;if(max<c)max二c;printf(MThclargestnumberis%d\nH,max);return0;第2章算法——程序的灵魂16什么是算法16简单的算法举例17算法的特性21怎样表示ー个算法22用自然语言表示算法22用流程图表示算法22三种基本结构和改进的流程图26用 流程图表示算法28用伪代码表示算法31用计算机语言表示算法32结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计373.!顺序程序设计举例37数据的表现形式及其运算39常量和变量39数据类型42整型数据44字符型数据47浮点型数据49怎样确定常量的类型51运算符和表达式52C语句57C语句的作用和分类57最基本的语句——赋值语句59数据的输入输出65输入输出举例65有关数据输入输出的概念67用printf函数输出数据68用scanf函数输入数据75字符数据的输入输出78习题823-1#include<stdio.h>#include<math.h>intmainQ{floatp,r,n;『0.1;n=10;p=pow(l+r,n);printf,p二%f\n”,p);return0;}3-2-1#include<stdio.h>#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=0.0414;r0=0.0072;pl=p*((l+r5)*5); 〃ー次存5年期p2=p*(l+2*r2)*(l+3*r3); //先存2年期,到期后将本息再存3年期p3=p*(l+313)*(1+2サ2); //先存3年期,到期后将本息再存2年期p4=p*p°w(l+rl,5); //存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(l+r0/4,4*5); //存活期存款。活期利息每一季度结算ー次prmtfC'pl=%f\n",pl);/Z输出按第1方案得到的本息和printf「p2=%f\n",p2); 〃输出按第2方案得到的本息和printfCp3=%f\n",p3);/Z输出按第3方案得到的本息和printfC'p4=%f\n",p4);/Z输出按第4方案得到的本息和PrintfC'p5=%f\n",P5);〃输出按第5方案得到的本息和return0;)3-2-2#include<stdio.h>#include<math.h>intmainQ{doubler5,r3,r2,rl,r0,p,pl,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;rl=0.0414;rO=0.0072;
pl=p*((l+r5)*5);//pl=p*((l+r5)*5);//一次存5年期p2=p*(l+2*0*0+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+rO/4.4*5);〃存活期存款。活期利息每一季度结算ー次printfC'pl=%f\n",pl);//输出按第1方案得到的本息和printf「p2=%f\n",p2); //输出按第2方案得到的本息和prmtf("p3=%f\n"jP3);//输出按第3方案得到的本息和printf「p4=%f\n",p4);//输出按第4方案得到的本息和printf「p5=%f\n",p5);//输出按第5方案得到的本息和return0;}3-2-3#include<stdio.h>#include<math.h>{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*⑵;〃先存3年期,到期后将本息再存2年期p4=p*pow(l+rl,5);〃存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(l+r0/4,4*5); 〃存活期存款。活期利息每一季度结算ー次printfC'pl=%10.2f\n",pl);/Z输出按第1方案得到的本息和printfC'p2=%10.2f\n",p2);/Z输出按第2方案得到的本息和printfC'p3=%10.2f\n",p3);/Z输出按第3方案得到的本息和printfC'p4=%10.2f\n",p4);/Z输出按第4方案得到的本息和printfC'p5-%10.2f\n",p5);/Z输出按第5方案得到的本息和return0;}3-3.#include<stdio.h>#include<math.h>intmainQ{floatd=300000,p二6000产0.01,m;m二loglO(p/(p-d*r))/loglO(l+r);printf("m二%6.2f\n",m);return0;)3-4{intcl,c2;cl=197;c2=198;printf(ncl=%c,c2=%c\n,\cl,c2);printf(ncl=%d,c2=%d\nn?cl,c2);return0;}3-5#include<stdio.h>intmainQ{inta,b;floatx,y;charcl,c2;scanf(na=%db二%dゝ&a,&b);scanf(M%c%cn,&cl,&c2);printf(1,a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c\nu,a,b,x,y,cl,c2);return0;)3-6#include<stdio.h>intmainQ{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;printff'passworis%c%c%c%c%c\nM,cl,c2,c3,c4,c5);return0;#include<stdio.h>intmain〇{floath,r,l,s,sq,vq,vz;floatpi=3.141526;printズ请输入圆半径r,圆柱高h:り;scanf(n%f,%f,,&r,&h);〃要求输入圆半径r和圆柱高hl=2*pi*r;〃计算圆周长1s=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\nM,s);printf,圆球表面积为:sq=%6,2f\n",sq);printfc圆球体积为:v=%6.2f\nM,vq);printfC圆柱体积为:vz=%6.2f\n*\v2);return0;)3-8-1#include<stdio.h>intmainQ{intcl,c2; //整型定义printf「请输入两个整数cl,c2巧;scanf(M%d,%dn,&cl?&c2);printfT按字符输出结果:いり;printf(1t%c,%c\n,\cl,c2);printff按ASCII码输出结果为ヘn");printf(**%d,%d\nM,cl,c2);return0;)3-8-2#include<stdio.h>intmain。{charcl,c2; 〃定义字符型变量intil,i2; //定义整型变量printズ请输入两个字符cl,c2:");scanf(M%c,%cH,&c1,&c2);il=cl; 〃赋值给整型变量i2=c2;printf,按字符输出结果:\nツ;printff按整数输出结果:、n");printff%d^dXn^jd,c2);return0;)3-8-3#include<stdio.h>intmainQ(charcl,c2; 〃定义为字符型intil,i25 〃定义为整型printf,请输入两个整数il,i2:");scanf("%d,%d",&il,&i2);cl=il; 〃将整数赋值给字符变量c2=i2;printfぐ按字符输出结果:\nツ;printf(**%c,%c\nn,cl,c2);printfC按整数输出结果:、吟;printff^d^dXn^jd,c2);return0;)3-8#include<stdio.h>intmainQ{charcl,c2;printズ请输入两个字符cl,c2巧;cl=getchar();c2=getcharQ;printff用putchar语句输出结果为巧;putchar(cl);putchar(c2);printfC\nn);printfぐ用printf语句输出结果为巧;printff^c%c\nn,cl,c2);return0;)第4章选择结构程序设计85选择结构和条件判断85用if语句实现选择结构87用if语句处理选择结构举例87f语句的一般形式89关系运算符和关系表达式91关系运算符及其优先次序91关系表达式92逻辑运算符和逻辑表达式92逻辑运算符及其优先次序93逻辑表达式94逻辑型变量96条件运算符和条件表达式97选择结构的嵌套99用switch语句实现多分支选择结构102选择结构程序综合举例!05习题!114-4-1#include<stdio.h>intmain()(inta,b,c;printズ请输入三个整数:");scanf(H%d,%d,%dM,&a,&b,&c);if(a<b)if(b<c)printff,max=%d\nH,c);elseprintf(,,max=%d\n*,,b);elseif(a<c)printff,max=%d\nH,c);elseprintff,max=%d\nH,a);return0;)4-4-2#include<stdio.h>intmainQ{inta,b,c,temp,max;
printズ请输入三个整数:");scanf(H%d,%d,%dM,&a,&b,&c);temp=(a>b)?a:b;/*temp=(a>b)?a:b;/*将a和b中的大者存入temp中・/max=(temp>c)?temp:c;/・将a和b中的大者与c比较,取最大者・/printf("三个整数max=(temp>c)?temp:c;的最大数是%d\n",max);return0;)4-5-2#include<stdio.h>#include<math.h>#dcfincM1000intmain。(inti,k;printf("请输入一个小于%d的整数i:",M);scanf(n%dH,&i);while(i>M){printfC,输入的数不符合要求,请重新输入ー个小于%d的整数scanf("%d",&i);)k=sqrt(i);printfC-%d的平方根的整数部分是:%d\n",i,k);return0;)4-5#include<stdio.h>#include<math.h>#dcfincM1000inti,k;printズ请输入ー个小于%d的整数scanf("%d",&i);{printf,输入的数不符合要求,请重新输入一个小于%d的整数scanf("%d",&i);)k=sqrt(i);printfC'%d的平方根的整数部分是:%d\n",i,k);return0;)4-6.#include<stdio.h>intmain。{intx,y;printf("输入x:");scanf("%d",&x);if(x<l) /*x<l*/{y=x;printf(1,x=%3d,y=x=%d\nH,x,y);)elseif(x<10) /*l=<x<10*/{y=2*x-l;printffx二%d,y=2*x-l=%d\nH,x,y);)else/*x>=10*/{y=3*x-ll;printff,x=%d,y=3*x-ll=%d\nn,x,y);4-7-1#include<stdio.h>intmain。{intx,y;printff^ntcrx:n);scanf(n%dH,&x);y=-l;if(x!=O)if(x>0)y=i;elsey=0;printff,x=%d,y=%d\n",x,y);4-7-2#include<stdio.h>intmain。(intx,y;printff^leaseenterx:n);scanf(n%dH,&x);y=0;if(x>=0)if(x>0)y=l;elsey=-l;printf(,,x=%d,y=%d\nH,x,y);#include<stdio.h>intmainQ{floatscore;chargrade;printfC请输入学生成绩:り;scanf(n%f,,&score);while(score>1001|score<0){print£C'\n输入有误,请重输つ;scanf(n%f,,&score);}switch((int)(score/10)){case10:case9:grade='A';brcak;case8:grade二'B';break;case7:grade二'C'brcak;case6:grade='D';break;case5:case4:case3:case2:case0:gradeゴE';)printf("成绩是%5.1f,相应的等级是%c\n",score,grade);return0;)4-9#include<stdio.h>#include<math.h>intmainQintnum,indiv,ten,hundred,thousand,ten_thousand,place;位,万位和位数printf("请输入ー个整数(0-99999):");scanf(n%dH,&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);printズ每位数字为巧;ten^housand=num/10000;thousand=(int)(num-tcn_thousand*l0000)/1000;hundrcd=(int)(num-tcn_thousand*10000-thousand*1000)/100;tcn=(int)(num-ten_thousand*10000-thousand*1000-hundrcd*100)/10;indiv=(int)(num-ten_thousand*l0000-thousand*1000-hundred*100-ten*10);switch(place){case5:printf(n%d,%d,%d,%d,%dH,ten_thousand,thousand,hundred,ten,indiv);printfC\n反序数字为巧;printff,%d%d%d%d%d\nH,indiv,ten,hundred,thousand,tcn_thousand);break;case4:printf(M%d,%d,%d,%dn,thousand,hundred,ten,indiv);printff\n反序数字为巧;printf(1,%d%d%d%d\nH,indiv,ten,hundred,thousand);break;case3:printf(H%d,%d,%dH,hundred,ten,indiv);printff\n反序数字为巧;printf(,,%d%d%d\nM,indiv,ten,hundred);break;case2:printf("%d,%d”,ten,indiv);printfC\n反序数字为巧;printff*%d%d\nH,indiv,ten);break;casel:printf("%d",indiv);printff'\n反序数字为:り;printf(,,%d\nM,indiv);break;4-10-1#include<stdio.h>intmainQ{inti;doublebonus,bonl,bon2,bon4,bon6,bonl0;bonl=100000*0.1;bon2=bonl+100000*0.075;bon4=bon24-100000*0.05;bon6=bon4+100000*0.03;bonl0=bon6+400000*0.015;printズ请输入利润i:");scanf("%d",&i);bonus—elseif@<=200000)bonus-bonl+(i-l00000)*0.075;elseif(i<=400000)bonus=bon2+(i-200000)*0.05;elseif(i<=600000)bonus=bon4+(i-400000)*0.03;elseif(i<=l000000)bonus=bon6+(i-600000)*0.015;elsebonus^bonlO+(i-l000000)*0.01;printぞ奖金是:%10.2f\n",bonus);return0;#include<stdio.h>intmainQ(inti;doublebonus,bonl,bon2,bon4,bon6,bonl0;intbranch;bonl=100000*0.1;bon2=bonl4-100000*0.075;bon4=bon24-200000*0.05;bon6=bon44-200000*0.03;bonl0=bon64-400000*0.015;printズ请输入利润ビ);scanf("%d”,&i);branch=i/100000;if(branch〉10)branch=10;swdtch(branch){case0:bonus=i*0.1;break;case1:bonus=bonl4-(i-l00000)*0.075;break;bonus=bon2+(i-200000)*0.05;brcak;bonus=bon4+(i-400000)*0.03;break;bonus=bon6+(i-600000)*0.015;brcak;bonus=bon10+(i-1000000)*0.01;}printズ奖金是%10.2f\n",bonus);4-11#include<stdio.h>intmain。{intt,a,b,c,d;printf,请输入四个数:");scanf(M%d,%d,%d,%dn,&a,&b,&c,&d);printfC,a=%d,b=%d,c=%d,d=%d\nn,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");printfC%d%d%d%d\nn,a,b,c,d);return0;}4-12#include<stdio.h>intmainQ{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(n%f,%f,,&x,&y);dl=(x-x4)*(x-x4)+(y-y4)*fy-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=0;/・判断该点是否在塔外・/printf「该点高度为%d\n",h);return0;)第5章循环结构程序设计114为什么需要循环控制114用while语句实现循环!15用dO…while语句实现循环!17用for语句实现循环!20循环的嵌套124几种循环的比较125改变循环执行的状态!25用break语句提前终止循环!26用continue语句提前结束本次循环!27break语句和continue语句的区别128循环程序举例131习题!405-2#include<stdio.h>#include<math.h> //程序中用到数学函数fabs,应包含头文件math.nintmainQ(intsign=l,count=0;〃sign用来表示数值的符号,count用来统计循环次数doublepi=0.0,n=1.0,term=1.0;〃pi开始代表多项式的值,最后代表兀的值,n代表分母,term代表当前项的值while(fabs(term)>=1e-8) /Z检查当前项term的绝对值是否大于或等于!0的(-6)次方
n=n+2;//n+2是下ー项的分母sign二-sign;〃sign代表符号,下ー项的符号与上一项符号相反term=sign/n;pi=pi+term;//pi=pi+term;//把当前项term累加到pi中/Z求出下ー项的值termcount++;//count累力口1pi=pi*4;/Z多项式的和pi乘以4,才是兀的近似值printfCpi=%10.8f\n',,pi)://输出兀的近似值printff'count=%d\n",count);//输出循环次数return0;)5-3#include<stdio.h>intpj担,tn,temp;printズ请输入两个正整数scanf("%d,%d,",&n,&m);if(n<m)(tcmp=n;n二m;m二temp;)p=n*m;while(m!=0){尸n%m;n二m;m二r;printf,它们的最大公约数为:%d\n",n);printf,它们的最小公约数为:%d\n",p/n);return0;)5-4#include<stdio.h>intmainQ{charc;intIcttcrs=0,spacc=0,digit=0,other=0;printズ请输入一行字符:\nり;while((c=getchar())!=,\n,)if(c>ゴa'&&c<-z!IIc>='A'&&c<='Z')lcttcrs++;elseif(cニニ‘)space+4-;elseif(c>二’〇’&&eVニケ)digit++;elseother++;}printf,字母数:%d\n空格数:%d\n数字数:%d\n其它字符数:%d\n”,letters,space,digit:,Qther);return0;)5-5#include<stdio.h>intmain。printf(1,a,n=:n);scanf(n%d,%dn,&a,&n);while(i<=n){m=tn+a;/・赋值后的tn为i个a组成数的值・/sn=sn+tn;/・赋值后的sn为多项式前i项之和・/a=a*10;++i;)printf(na+aa+aaa+…二%d\n",sn);return0;)5-6#include<stdio.h>{doubles=0,t=l;intn;for(n=l;n〈=20;n++){t=t*n;s=s+t;}printff'l!+2!+...+20!=%22.15e\n",s);return0;}5-7#include<stdio.h>intmainQintnl=100,n2=5O,n3=10;doublek,s1=05s2=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;kv=n3;k++)/・计算1至1]10的各倒数和・/{s3=s3+l/k;}printf("sum=%l5.6f\n",sl+s2+s3);return0;}5-8#include<stdio.h>intmainQprintff^arcissusnumbersarc");for(n=100;n<1000;n4-+)(i=n/100;j=n/10-i*10;k=n%10;if(n==i*i*i+j*j*j+k*k*k)printfC'%d",n);)print心n");return0;)5-9-1#defineM1000 /*定义寻找范围・/#include<stdio.h>intmainQintklsk2,k3,k4,k5,k6,k7,k8,k9,kl0;inti,a,n,s;for(a=2;a<=M;a++) /*a是2-1000之间的整数,检查它是否完数・/{n=0; /*n用来累计a的因子的个数・/s=a; /*s用来存放尚未求出的因子之和,开始时等于a*/ for(i=l^<a^++)/*检查i是否a的因子・/if(a%i==0) /・如果i是a的因子・/{n++; /*n加1,表示新找到ー个因子・/s=s七 /*s减去已找到的因子,s的新值是尚未求出的因子之和・/switch(n)/・将找到的因子赋给kl...k9,或klO*/{case1:kl=i;break;/・找出的笫1个因子赋给klVk2=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*/
kio=i;break;/・找出的笫10个因子赋给kio*/if(s==0)printff%d,Itsfactorsare",a);if(n>l)printf("%d,%d",kl,k2); /*n>!表示a至少有2个因子・/if(n>2)printf(",%d",k3);if(n>3)printf(",%d",k4);/*n>2表示至少有3个因子,故应再输出ー个因子・/if(n>2)printf(",%d",k3);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)printff',%d",k8);if(n>8)printff',%d",k9);if(n>9)printff,%d",klO);printfC,\nM);return0;)5-9-2#include<stdio.h>intmainQ{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){printff,%d,itsfactorsaren,m);if(m%i==0)printf("%d"4);printfC'\n");))return0;}5-10#include<stdio.h>intmain。(inti,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(,,sum=%16.10f\nH,s);return0;}5-11#include<stdio.h>intmain。(doublesn=100,hn=sn/2;intn;for(n二2;nV二10;n++)sn=sn+2*hn;/・第n次落地时共经过的米数・/hn=hn/2;/・第n次反跳高度・/)printf("第!0次落地时共经过%f米'n",sn);printfぐ第10次反弹%f米、n",hn);return0;}5-12#include<stdio.h>intmain。(intday,xl,x2;day=9;x2=l;whilc(day>0){xl=(x2+l)*2;/*第1天的桃子数是第2天桃子数加1后的2倍.*/x2=xl;day-;)printff,total=%d\nn,xl);return0;}5-13#include<stdio.h>#include<math.h>intmainQ{floata,x0,xl;printff^nterapositivenumber:n);scanf(M%f\&a);x0=a/2;xl=(xO+a/xO)/2;do{xO=xl;x1=(x0+a/x0)/2;}while(fabs(xO-xl)>=1e-5);printf(,!Thesquarerootof%5.2fis%8.5f\n”,a,xl);return0;)5-14#include<stdio>h>#include<math.h>intmain。{doublexl,xO,f,fl;xl=1.5;do{xO=xl;f=((2*x0-4)*x0+3)*x0-6;fl=(6*x0-8)*x0+3;xl=xO-f/fl;}while(fabs(xl-x0)>=le-5);printff,Therootofequationis%5.2f\nn,xl);return0;)5-15#include<stdio.h>#include<math.h>intmain。{floatx0,xl,x2,fx0,fxl,fx2;do{printf^enterxl&x2:n);scanf("%f,%F,&xl,&x2);fxl=xl*((2*xl-4)*xl+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}whilc(fxl*fk2>0);do{xO=(xl+x2)/2;fe0=x0*((2*x0-4)*x0+3)-6;if((fkO*fkl)<O){x2=x0;fx2=fx0;)else{xl=xO;fxl=fxO;}while(fabs(fxO)>=le-5);printff,x=%6.2f\nM,xO);return0;}5-16#include<stdio.h>intmainQ{inti,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printfCn);for(k=0;k<=2*i;k+4-)printf。”);for(i二〇;iv二2;i++){for(j=O;j<=i;j++)printff");for(k=0;k<=4-2*i;k++)printff'*");printfC\n");}return0;)5-17#include<stdio.h>intmainQ/・是a的对手;j是b的对手;k是c的对手・/for(i=,x,;i<=,2,;i+4-)for(j=,x,;j<=,2,;j++)if(i!=j)for(k='x';kv=,z';k++)if(i!=k&&j!=k)if(i!ゴx'&&k!=,x*&&k!二’2)printff'A—%c\nB—%c\nC—%c\n",i,j,k);return0;)第6章利用数组处理批量数据142怎样定义和引用ー维数组142怎样定义ー维数组143怎样引用ー维数组元素144ー维数组的初始化145一维数组程序举例146怎样定义和引用二维数组!48怎样定义二维数组!49怎样引用二维数组的元素150二维数组的初始化151二维数组程序举例152字符数组154怎样定义字符数组154字符数组的初始化155怎样引用字符数组中的元素155字符串和字符串结束标志156字符数组的输入输出159使用字符串处理函数!61字符数组应用举例1656-1#inelude<stdio.h>#include<math.h>intmain(){inti,j,n,a[Wl];for(i=ly<=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&&aO]!=0)if(aO]%a[i]==0)a[j]=O;printff'\n");for(i=2,n=0;i<=100;i++){if(a目!=0){printぐ%5d",a同);n++;)if(n==10){printff\n");n二〇;}}printfC'\n");return0;)6-2#include<stdio.h>intmainQ{inti,j,min,temp,a[l1];printff^nterdata:\nn);for(i=l;i<=10^++){printfCa[%d]=,U);scanf(n%dH,&a[i]);}printff'\n");printff^heorginalnumbers:\nH);for(i=l;i<=10;i++)printfC%5dn,a[i]);printfOfor(i=l;iv=9;i++){min=i;for(j=i+l;j<=10;j++)temp=a[i];a[i]=a[min];a[min]=tcmp;)printfC^nThcsortednumbers:\n°);for(i=l;i<=10;i++)printfC%5d”再回);printff\nM);return0;)6-3#include<stdio.h>inta[3][3],sum=0;inti,j;printff^nterdata:\nn);for(i=0;i〈3;i++)for(j=O;j<3;j++)scanf("%3d",&a[i]0]);for(i=0;i<3;i++)sum=sum4-a[i][i];printff,sum=%6d\nn,sum);return0;)6-4#include<stdio.h>intmainQ{inta[ll]={l,4,6,9,13,16,19,28,40,100);inttemp1,tcmp2,number,end,i,j;printff^rraya:\nH);for(i=0;i<10;i++)printfC%5d”,aロ]);printff'n”);printff4nsertdata:");scanf("%d",&number);end=a[9];if(number>end)a[10]=number;else{for(i=0;i〈10;i++){if(a[i]>number){tempi=a[i];a[i]=number;{temp2=am;a[j]=templ;tempi=tcmp2;)break;printfC'Nowarraya:\nH);for(i=0;i<ll;i++)printf,%5d”,aHD;print心n”);return0;6-5#include<stdio.h>#defineN5intmain。{inta[N],i,tcmp;printff^ntcrarraya:\nn);for(i=0;i<N;i++)scanf(n%dn,&a[i]);printff^rraya:\n,r);for(i二〇;ivN;i++)printfC%4dn,a[i]);for(i=0;i<N/2;i++) 〃循环的作用是将对称的元素的值互换{temp=a[i];a[i]=a[N-i-l];a[N-i-l]=temp;printff'\nNow,arraya:\n");for(i=0;i<N;i++)printfC'%4d",a[i]);printfC'\n");return0;}6-6#include<stdio.h>#defineN10intmain(){inti,j,a[N][N];for(i二〇;ivNJ++){a皿i]=l;for(i=2;i<N;i++)for(j=l;j<=i-l;j++)a[i]D]=a[i-l][j-l]+a[i-l][j];for(i=0;i<N;i++){for(j=O;j<=i;j++)printfC'%6d",a[i][j]);printff'\n");)printff\n");return0;)6-7#include<stdio.h>p=l;while(p==l){printff'cntcrn(n=l-15):");scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))P=0;)for(i=l;i<=n;i++)forQ=l;j<=n;j++)a所]=0;j=n/2+l;a[l][j]=l;for(k=2;k<=n*n;k++){i=M;户j+1;if((i<l)&&(j>n)){i=i+2;j=i-i;)else{if(i<l)i=n;if(j>n)j=l;)if(aHD]==O)a[i]D]=k;elseg+2;for(i=ly<=n;i++){for(j=l;j<=n;j++)printfC'%5d",a[i][j]);printfC'\n");}return0;}6-8#include<stdio.h>#dcfincN4#defineM5 /・数组为4行5歹[j*/intmainQinti,j,k,a[N][M],max,maxj,flag;printff^leaseinputmatrix:\nn);for(i=0y<N;i++) /・输入数组・/for(j=O;j<M;j++)scanf("%d",&a[i][j]);for(i=0;i<N;i++){max=a[i][0]; /・开始时假设a[i][〇]最大・/maxj=0; /・将列号〇赋给maxj保存・/for(j=O;j<M;j++) /・找出第i行中的最大数・/if(a[i][j]>max){max=a[i][j]; /・将本行的最大数存放在max中・/maxj=j;/・将最大数所在的列号存放在maxj中・/)flag=l; /・先假设是鞍点,以flag为1代表・/for(k=0;k<N;k++)if(max>a[k][maxj]) /・将最大数和其同列元素相比・/{flag=O; /・如果max不是同列最小,表示不是鞍点令flagl为0・/continue;}if(flag) /・如果flagl为1表示是鞍点・/{printfC'a[%d][%d]=%d\n"j,maxj,max);/・输出鞍点的值和所在行列号・/break;))if(!flag) /・如果flag为〇表示鞍点不存在・/printffltisnotexist!\nn);return0;)6-9#include<stdio.h>#defineN15intmainQ{inti,number,top,bott,mid,loca,a[N],flag=1,sign;charc;printffenterdata:\n");scanf("%d",&a[O]);i=l;while(i<N){scanf("%d",&a[i]);if(a[i]>=a[i-l])i++;elseprintff'enterthisdataagain:\n");)printff'\n");for(i=0y<N;i++)printfC'%5d",a[i]);while(flag){printf^inputnumbertolookfbr:n);scanf(n%dH,&number);sign=0;top=0;〃top是查找区间的起始位置bott=N-l;〃bott是查找区间的最末位置if((numbcr<a[0])||(number>a[N-l]))〃要查的数不在查找区间内 loca=-l;〃表示找不到while((!sign)&&(top<=bott)){mid=(bott+top)/2;if(numbcr==a[mid]){loca二mid;printf,Hasfound%d,itspositionis%d\nn,number,loca+1); sign=l;)elseif(number<a[mid])bott=mid-l;elsetop=mid+1;)if(!sign||loca==-l)printf(Hcannotfind%d.\nH,number);;printff^ontinuornot(Y/N)?M);scanf(n%cM,&c);if(cニニ’N'||cニニ’n)flag=0;)return0;)6-10#include<stdio.h>{inti,j,upp,low,dig,spa,oth;chartext[3][80];upp二low=dig=spa=othニ〇;for(i=0;i<3;i++){printf(nplcaseinputline%d:\n"j+1);gcts(text[i]);for(j=0;j<80&&text目O]!ゴ、〇’;j++){if(tex电[j]>='A'&&text[i][jドニ'Z)upp++;1qw++;dig++;elseif(text[i][j]>='a,&&tex咽[j]<ニ'z)elseif(text[i][j]>='O'&&text[i][j]<=l9,)elseif(tcxt[i][j]==1)1qw++;dig++;spa++;elseQth++;printff\nuppercase:%d\nn,upp);printff4owcrcase:%d\nn,low);printf(ndigit:%d\nn,dig);printf^space :%d\nn,spa);printf^other :%d\nH,oth);return0;}6-11#include<stdio.h>intmainQ{chara[5]二{f'*',咒咒'*'};inti,j,k;charspace—'';for(i=0;i<5;i++){printf("\n");printff'");for(j=l;j<=i;j++)printff'%c",space);for(k=0;k<5;k++)printff'%c",a[k]);)printff\n");return0;)6-12a-c#include<stdio.h>intmainQ{intj,n;charch[80],tran[80];printff4nputciphercode:n);gets(ch);printff\nciphcrcode:%sn,ch);i=o;while(ch.!=‘、〇){if((chO]>='A)&&(ch|j]<='Z))tran[j]=155-ch0];elseif((ch[j]>='a)&&(ch[j]<='z))trang]=219-ch[j];elsetran[j]=ch[j];j++;呻;printff^noriginaltext:");for(j=O;j<n;j++)putchar(tran[j]);printfCXn");return0;}6-12b#include<stdio.h>intmainQ{intj,n;charch[80];printf("inputciphercode:\n");gets(ch);printff\nciphercode:%s\n",ch);尸。;while(ch即=へ01){if((chU]>ゴA)&&(ch[j]<メZ))ch[j]=155-ch[j];elseif((ch[j]>='a')&&(ch[j]v='z))ch[j]=219-ch[j];elsech[j]=ch[j];j++;)n=j;printf(Horiginaltext:");for(j=O;j<n;j++)putchar(ch[j]);printfC\nM);return0;6-13#include<stdio.h>intmain。{charsl[80],s2[40];inti=O,j=O;printff4nputstring!:H);scanf(n%sn,sl);printff^nputstring2:H);scanf(n%sn,s2);while(si[i]!二、〇)i++;whne(s2[j]!=,\0)sl[i++]=s20++];・二、0';printff^nThenewstringis:%s\nu,sl);return0;}6-14#include<stdio.h>intmainQ{inti,resu;charsl[100],s2[100];printff^nputstring!:n);gets(sl);printfC'ninputstring2:M);gcts(s2);i=0;while((sl[i]==s2[i])&&(si国!二、〇))i++;if(sl[i]==f\O»&&s2[i]ニニへ〇’)resu=O;elseresu=sl[i]-s2[i];printfC'\nrcsuk:%d.、n”,rcsu);return0;}6-15#include<stdio.h>#include<string.h>intmainQ{charsl[80],s2[80];inti;printff4nputs2:り;scanf("%s",s2);for(i=0;i<=strlen(s2);i4-+)sl[i]=s2[i];printf,sl:%s\n”,sl);return0;)第7章用函数实现模块化程序设计1707.!为什么要用函数170怎样定义函数172为什么要定义函数172定义函数的方法173调用函数174函数调用的形式174函数调用时的数据传递175函数调用的过程177函数的返回值178对被调用函数的声明和函数原型179函数的嵌套调用182函数的递归调用184数组作为函数参数192数组元素作函数实参193数组名作函数参数194多维数组名作函数参数197局部变量和全局变量199局部变量!99全局变量200变量的存储方式和生存期204动态存储方式与静态存储方式204局部变量的存储类别205全局变量的存储类别208存储类别小结212关于变量的声明和定义214内部函数和外部函数215内部函数215外部函数215习题2187-1-1#include<stdio.h>intmain。{inthcf(int,int);intlcd(int,int,int);intu,v,h,l;scanf(M%d,%dn,&u,&v);h=hcf(u,v);printff,H.C.F=%d\nH,h);l=lcd(u,v,h);printfC'L.C.D二%d\n"J);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);7-1-2#include<stdio.h>intHcf,Lcd;intmain。{voidhcf(int,in¢;voidlcd(int,int);intu,v;scanf(n%d,%dn,&u,&v);hcf(u,v);lcd(u,v);printfC'H.C.F=%d\n",Hcf);printfC'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)!=O){u=v;v=r;)Hcf=v;)voidled(intu,intv)(Lcd=u*v/Hcf;)7-2#include<stdio.h>#include<math.h>floatxl,x2,disc,p,q;intmainQ{voidgrcatcr_than_zcro(float,float);voidcqual_to_zcro(float,float);voidsmallcr_than_zcro(float,float);floata,b,c;printff4nputa,b,c:,r);scanf("%f,%f,%F,,&a,&b,&c);printff^quation:%5・2f*x*x+%5-2#x+%5・2f=0\n”,a,b,c);disc=b*b-4*a*c;printf(,,root:\nH);if(disc>0){greater_than_zero(a,b);printf^xl=%f\t\tx2=%f\nn,xl,x2);elseif(disc二二0){equal_to_zero(a,b);printf(Hxl=%f\t\tx2=%f\nn,xl,x2);)else{smaller_than_zero(a,b);printf(,txl=%f+%fi\tx2=%f-%fi\nn,p,q,p,q);)return0;)voidgrcatcr_than_zcro(floata,floatb){xl=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(dis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人出售房产合同范本
- 加装空调工程合同范本
- 购房合同有购房合同范本
- 单位合伙建房合同范例
- 关于独家合同范本
- 医药会议合同范本
- 单位给买车合同范本
- 化工项目整体承建合同范本
- 产品总经销合同范本
- 医院加盟合同范本
- 2025年天津三源电力集团有限公司招聘笔试参考题库含答案解析
- 2025年上半年浙江嘉兴桐乡市水务集团限公司招聘10人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年腹腔穿刺术课件 (1)2
- 重庆市2024-2025学年高一上学期期末联考生物试卷(含答案)
- (八省联考)2025年高考综合改革适应性演练 物理试卷合集(含答案逐题解析)
- 2025年度智能仓储管理系统软件开发合同6篇
- 紧急疏散逃生方法
- 羊水栓塞护理应急预案
- 2024年医师定期考核临床类考试题库及答案(共500题)
- 2024版数据中心建设与运维服务合同协议书3篇
- 工程进度款支付台账-1-
评论
0/150
提交评论