循环结构程序设计
P115 5.1 用while计算1至100的合.
#include<stdio.h>
int main()
{
int i=1,sum=0;
while(i<=100) //对于需要运算的值,要么在运算前可以赋值,要么一开始要指定.
{
sum=sum+i;
i++;
}
printf("The sum is %d .\n",sum);
return 0;
}
P117 5.2 用do-while来做1至100的合.
#include<stdio.h>
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<stdio.h>
{
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<stdio.h>
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;
}
P126 5.4 break的例子.
#include<stdio.h>
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<stdio.h>
int main()
c程序设计谭浩强pdf百度网盘{
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<stdio.h>
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<stdio.h>
#include<math.h>
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 <stdio.h> //这是关于int float double三者关复杂关系的,乱啊,如果看不懂,可以通过实验自己明白来.
//
//int main() //在C语言中,1.0认为是实数,即是double型,所以,如果你把它用float输出的话,会有警告:警告 1 warning C4305: “=”: 从“double”到“float”截断.
//{
// float m,a,b,c; //一旦定义了是这种类型的话,输出或是赋值的时候只能扩展不能截断,意思就是能变成double型,不能变成int型啦.而且后面的赋值会跟着它变成相应的类型.比如下面的m=1,其实得到的是m=1.0.
// int d,e,f;
// m=1;
// a=1.0/3;
// b=1/3;
// c=m/3;
// d=1.0;
/
/ e=1/4;
// f=1.0/4;
// printf("%lf(float用double的%lf来输出是可以的.)\n%f\n%f\n%f\n",m,a,b,c); //不管上面定义什么,这边写的输出类型是什么,就按相应的类型输出,有可能会出错,所以建议按定义的类型来输出.当然扩展的是不会错的,截断的是会错的,比如float可以用%lf来输出,而不能用%d来输出.
// printf("%d\n%d\n%d\n",d,e,f); //但是,不相应的int型不可以用%f来输出的.因为int float就不同种类,一个是整数,一个是小数,float double同样是有小数点的!!!!
// return 0;
//}
#include<stdio.h>
int main() //这个就是著名的Fibonacci(费波那契数列问题)
{
int f1=1,f2=1,f3,i;
printf("%12d\n%12d\n",f1,f2);
for(i=1;i<=38;i++) //注意,这是个基础问题,(i=1;i<=5;i++)这里其实进行了次运算,因为有f1,f2,要求有个,所以要有个.要么写<=38,要么写<39,边界问题一定要注意,不可以太随意!!!!
{
f3=f1+f2;
printf("%12d\n",f3); //这个问题同样适用于"一对兔子一个月生一对"的问题.,
f1=f2; //f1=f1+f2;此时它们各是,所以,现在的f1是.
f2=f3; //f2=f2+f1;此时的f1已经是最先二者之和了.可以不用到f3.
}
return 0;
}
#include<stdio.h>
#include<math.h>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论