1 / 15
文档名称:

C程序设计(第四版)(谭浩强)第五章课后习题答案.pdf

格式:pdf   大小:1,098KB   页数:15页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C程序设计(第四版)(谭浩强)第五章课后习题答案.pdf

上传人:青山代下 2024/4/18 文件大小:1.07 MB

下载得到文件列表

C程序设计(第四版)(谭浩强)第五章课后习题答案.pdf

相关文档

文档介绍

文档介绍:该【C程序设计(第四版)(谭浩强)第五章课后习题答案 】是由【青山代下】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【C程序设计(第四版)(谭浩强)第五章课后习题答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..(第四版)(谭浩强).<>intmain(){inti=1,sum=0;while(i<=100)//对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.{sum=sum+i;i++;}printf(,sum);return0;}-while来做1至100的合.#include<>intmain(){inti=1,sum=0;do//do-while可以做的事,用while都可以做到.{//do-while先做一次执行,再判断条件,而while却是先做一个条件,=sum+i;i++;}while(i<=100);printf(,sum);return0;}:..-while与while的差别.<>intmain(){inti,sum=0;printf();scanf(,&i);//输入10以内,正常,11的话,(i<=10){sum=sum+i;i++;}printf(,sum);return0;}#include<>intmain(){inti,sum=0;printf();scanf(,&i);//输入10以内,,先做操作,所以sum={sum=sum+i;i++;}while(i<=10);//(,sum);return0;}.#include<>intmain(){inti,b=0,a,c;for(i=0;i<=1000;i++):..{printf();//(,&a);b=b+a;if(b>=100){break;//break是用于跳出循环,对if无效,对whileforswitch这一类.}}c=b/i;printf(,i+1,c);//注意%号后的形式,;}.#include<>intmain(){inti;for(i=1;i<20;i++){if(i%3!=0){continue;//跳过本次I,执行下一个i.}printf(,i);}printf();return0;}*5的矩阵.#include<>intmain(){inti,j,a=0;//没有给初值,会出现警告:使用了未初始化的局部变量a”.for(i=1;i<=4;i++):..{for(j=1;j<=5;j++,a++)//a用来控制换行.{if(a%5==0){printf();}printf(,i*j);}}printf();return0;}.#include<>#include<>intmain()//四分之哌等于(1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11).{floats=1,n=1,m,sum=0,t;for(m=1;;m=m+2)//不确定哪项才会小于等于十的负六次方,所以不指定,无限下去.{//不指定第二项,执行语句中应该有控制跳出的句子,=(s)*(n/m);//这是第一项,s是符号,if(fabs(t)<=1e-6)//应该写在这里,题目要求这一项不累加进去.{break;}sum=sum+t;//因为累加项在这里,所以,=s*(-1);//变号一次.}printf(四分之一哌的值是,sum);printf(一个完整哌的值是,sum*4);return0;}//,可运行.//如果出现类似值为全1或是全零的话,一般可以考虑数据类型赋值或是定义错了的问题.//#include<>//这是关于intfloatdouble三者关复杂关系的,乱啊,如果看不懂,可以通过实验自己明白来.////intmain()//在C语言中,,即是double型,所以,如果你把它用float输出的:..,会有警告:警告1warningC4305:=”:从“double”到“float”截断.//{//floatm,a,b,c;//一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,=1,其实得到的是m=.//intd,e,f;//m=1;//a=;//b=1/3;//c=m/3;//d=;//e=1/4;//f=;//用double的%lf来输出是可以的不管上面定义什么,这边写的输出类型是什么,就按相应的类型输出,有可能会出错,,截断的是会错的,比如float可以用%lf来输出,而不能用%d来输出.//但是,不相应的int型不可以用%,一个是整数,一个是小数,floatdouble同样是有小数点的//return0;//}(费波那契数列问题)#include<>intmain()//i(费波那契数列问题){intf1=1,f2=1,f3,i;printf(,f1,f2);for(i=1;i<=38;i++)//注意,这是个基础问题,(i=1;i<=5;i++)这里其实进行了次运算,因为有f1,f2,要求有个,<=38,要么写<39,边界问题一定要注意,不可以太随意{f3=f1+f2;printf(,f3);//这个问题同样适用于一对兔子一个月生一对的问题.,f1=f2;//f1=f1+f2;此时它们各是,所以,=f3;//f2=f2+f1;.}return0;}:..,方法不一样.<>#include<>intmain(){doublenum;inti;printf();scanf(,&num);//因为sqrt要求是浮点型,那就给它浮点型,(i=2;i<=sqrt(num);i++)//这边是<=号没错.{if((int)num%i==0)//如果在这期间有任何一个可以为零的话,则不是素数.{break;//当然跳出.}}//执行到这里的时候,i=5,已经变成了!!if(i<=sqrt(num)){printf(,(int)num);}else//如上所述,i=5,超出了求根的值,所以是素数.{printf(,(int)num);}return0;}.#include<>//不解释,HOHO>>>>...#include<>intmain(){doublej;inti,k=0;for(j=100;j<=200;j++){for(i=2;i<=sqrt(j);i++){:..if((int)j%i==0){break;}}k=k+1;//,(i<=sqrt(j)){printf(,(int)j);if(k%5==0)//5个换一次行.{printf();}}else{printf(,(int)j);if(k%5==0){printf();}}}return0;}.#include<>intmain(){charc;c=getchar();while(c!='')//这也可以用数组来实现.{if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){if((c>='w'&&c<='z')||(c>='W'&&c<='Z')){c=c-22;}else:..{c=c+4;}printf(,c);c=getchar();//套在循环里,依次得到字母,而while中判断回车为结束.}}printf();//;}.#include<>//最大公约数用累除法,(){intm,n,c,d;intgcd();//这是最大公约数的缩写,此处调用函数,();//这是最小公倍数的缩写,此处调用函数,();scanf(,&m,&n);c=gcd(m,n);//c获取最大公约数d=lcm(m,n);//d获取最小公倍数printf(,m,n,c);printf(,m,n,d);return0;}intgcd(intx,inty)//monDivisor{inttemp;while(x%y!=0){temp=y;//y在下一轮中作为除数,即是下一轮中的X,=x%y;//x,y的余数作为下一轮中的Y,由x%=temp;//刚才temp中存储了y的值,现在拿出来作为下一轮中的X使用.}returny;//这是每一轮中的被除数,按原理来,这就是最大公约数,即累除法的原理.}intlcm(intx,inty)//monMultiple{inti,temp;if(x<y)//此段代码结果是保证二者大的数在X上,.{//以下为经典三行码,实现两个数的互换.:..temp=x;x=y;y=temp;}for(i=1;i<=y;i++)//设定一个区间,从1至大的数之间的循环.{if(!((x*i)%y))//此式子如有余数,加上号,会是假,则不返回,进行下一轮.{//如此往复,直到取模无余数,那么小的数X乘以区间当前的I值,*i;}}}.#include<>intmain(){charch;inta=0,b=0,c=0,d=0,e=0;printf();while((ch=getchar())!='')//直到回车.{if(ch<='z'&&ch>='a'){a++;}elseif(ch==''){c++;}elseif(ch<58&&ch>47){d++;}elseif(ch<='Z'&&ch>='A'){b++;}else{e++;:..}}printf(大写%d小写%d空格%d数字%d其它,a,b,c,d,e);+22+222+2222系列的和.#include<>//()//想办法既快速做完,又要消化理解{inttemp,i,a,n,sum=0;//主逻辑,(,&a,&n);//a是数字,=a;//(i=0;i<n;i++){sum=sum+a;printf(,a);//=a*10+temp;//重点是每次乘,然后加上上一个数.}printf(,sum);return0;}!+2!+3!+4!.....的值.#include<>intmain()//1!+2!+3!+4!.....{inti,j,k,sum=0,m=1;scanf(,&k);//比如设定为,(i=1;i<=k;i++)//第一层循环,指定到.{for(j=1;j<=i;j++)//第二层循环,指定至当前数.{m=m*j;}//=sum+m;m=1;}:..printf(,sum);//完全不理解时,;//尝试自己做,第一次做出来就是自己的东西了.},1至50平方,1至10倒数的总和.#include<>intmain(){inta,b;doublec,asum=0,bsum=0,csum=0;for(a=1;a<=100;a++)//三个块分别注释验证结果.{asum=asum+a;}for(b=1;b<=50;b++)//在VS运行中,注意*.cpp为C++语言.{bsum=bsum+b*b;//为了避免语言差别,请注意文件名为*.c.}for(c=1;c<=10;c++)//c作浮点运算,所以定义在double类型中.{csum=csum+1/c;}printf(,asum+bsum+csum);return0;}PP#include<>#include<>intmain(){intj,k,s[6],x=100,y,sum=0;for(j=153;j<=154;j++){for(k=2;k>=0;k--){s[k]=j%(int)pow(10,k+1)/(int)pow(10,k);y=pow(s[k],3);sum+=y;printf(,k,s[k],j);:..}printf(,sum);}return0;}.//#include<>//一步步的发现问题.////intmain()//在%和/号之间,.//{//inti,j,k,a,b,c,sum=0;//这里逻辑对,算出来却错了.//for(i=2;i<=4;i++)//计算机在想什么,看来它的大脑难以模拟.//{//for(j=pow(10,i);j<=pow(10,i+1)-1;j++)//我不完全明白它遵守的逻辑.//{//for(k=0;k<=i;k++)//{//sum+=pow((j%pow(10,i+1)/pow(10,i)),3);//}//if(sum==j)//{//是水仙花数//}//sum=0;//}//}//return0;//}//为什么还是无法实现?!#include<>#include<>intmain(){inta,b,c,i,sum=0;//(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;sum+=a*a*a+b*b*b+c*c*c;if(sum==i):..{printf(是水仙花数,i);}sum=0;}return0;}.#include<>intmain(){inti,j,r;for(i=1;i<=1000;i++)//零是个临界值,不能包括它.{r=0;//(j=1;j<i;j++){if(i%j==0)//除得尽即是因子.{r=r+j;//然后累加进去.}}if(r==i)//若相等.{printf(是完数,i);}}return0;}+3/2+5/3+8/5+13/8#include<>intmain()//{doublei,a=2,b=1,c,s=0;//a是分子,(i=0;i<6;i++)//二十可以用户指定.:..{s+=a/b;//=a+b;b=a;a=c;}printf(,s);return0;}.#include<>intmain()//从一百开始,减一半再自加两次,下降一次,反弹一次.{doublesum=100,high=100,up,donw,i;for(i=1;i<10;i++)//不管指定到哪个数,都不会超过三百.{up=high/2;donw=up;high=donw;//+=donw*2;}printf(,donw,sum);return0;}.#include<>intmain()//从一百开始,减一半再自加两次,下降一次,反弹一次.{inti,sum=1;for(i=1;i<=10;i++)//临界要清楚,结果要与手算的前几个实例相匹配.{printf(倒数第%d天还剩有%d个桃子,i,sum);sum=(sum+1)*2;}:..return0;}.#include<>#include<>main()//.{inti,j,k,m=6;//m可指定,(i=1;i<=m;i++)//.{for(j=1;j<=m-i;j++)//();for(k=1;k<2*i;k++)//,三,五...printf();printf();}for(i=m-1;i>0;i--)//.{//(j=m-1;j>=i;j--)printf();for(k=1;k<2*i;k++)printf();printf();}getch();//,没必要.}