C程序设计(第四版)_谭浩强_第五章_课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
循环结构程序设计
P115 5.1 用while计算1至100的合.
#include
int main()
{
int i=1,sum=0;
while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.
{
sum=sum+i;
i++;
}
printf("The sum is %d .\n",sum);
return 0;
}
#include
int main()
{
int i=1,sum=0;
do// do-while可以做的事,用while都可以做到.
{ //do-while先做一次执行,再判断条件,而while却是先做一个条件,再执行.
sum=sum+i;
i++;
}while(i<=100);
printf("The sum is %d .\n",sum);
return 0;
}
P118 5.3 比较do-while与while的差别.
#include
{
int i,sum=0;
printf("Please input a number :");
scanf("%d",&i); //输入10以内,正常,11的话,则sum仍然是0.
while(i<=10)
{
sum=sum+i;
i++;
}
printf("The sum of 1-10 is %d .\n",sum);
return 0;
}
#include
int main()
{
int i,sum=0;
printf("Please input a number :");
scanf("%d",&i); //输入10以内,结果一样.输入11的话,先做操作,所以sum=11.
do
{
sum=sum+i;
i++;
}while(i<=10); //此重点在于理解二者的差别.
printf("The sum of 1-10 is %d .\n",sum);
return 0;
}
#include
int main()
{
int i,b=0,a,c;
for(i=0;i<=1000;i++)
{
printf("Please input amount :"); //循环体内套有输出语句以及跳出语句.
scanf("%d",&a);
b=b+a;
if(b>=100)
break; //break是用于跳出循环,对if无效,对while for switch 这一类.
}
}
c=b/i;
printf("conut is %d , aver is %d ",i+1,c); //注意%号后的形式,否则可能输出错误.
return 0;
}
P127 5.5 continue的例子.
#include
int main()
{
int i;
for(i=1;i<20;i++)
{
if(i%3!=0)
{
continue; //跳过本次I,执行下一个i.
}
printf("%d ",i);
}
printf("\n");
return 0;
}
P128 5.6 形成一个4*5的矩阵.
#include
int main()
{
int i,j,a=0; //没有给初值,会出现警告: 使用了未初始化的局部变量“a”.
for(i=1;i<=4;i++)
{
for(j=1;j<=5;j++,a++) // a用来控制换行.
{
if(a%5==0)
{
printf("\n");
}
printf("%d\t",i*j);
}
}
printf("\n");
return 0;
}
P131 5.7 用一个交错的式子求哌的近似值.
#include
#include
int main() //四分之哌等于(1)-(1/3)+(1/5)-(1/7)+(1/9)-(1/11).
{
float s=1,n=1,m,sum=0,t;
for(m=1;;m=m+2) //不确定哪项才会小于等于十的负六次方,所以不指定,无限下去.
{ //不指定第二项,执行语句中应该有控制跳出的句子,否则死循环.
t=(s)*(n/m); //这是第一项,s是符号,
if(fabs(t)<=1e-6) //应该写在这里,题目要求这一项不累加进去.
{
break;
}
sum=sum+t; //因为累加项在这里,所以,一旦跳出就不会累加进来了.
s=s*(-1); //变号一次.
}
printf("四分之一哌的值是%f.\n",sum);
printf("一个完整哌的值是%f.\n",sum*4);
return 0;
}
//下面这段小代码用来验证关于数值型数据类型的关系.去掉注释,可运行.
//如果出现类似值为全1或是全零的话,一般可以考虑数据类型赋值或是定义错了的问题.
//#include
//
//int main() //在C语言中,1.0认为是实数,即是double型,所以,如果你把它用float输出的话,会有警告:警告 1 warning C4305: “=”: 从“double”到“float”截断.
//{
// float m,a,b,c; //一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,不能变成int型啦.而且后面的赋值会跟着它变成相应的类型.比如下面的m=1,其实得到的是m=1.0.