break和continue语句
1.break语句
while(表达式1)
{
语句段1;
if(表达式2)break;
语句段2;
}
break功能:表达式2假,执行语句段2,继续循环
表达式2真,提前结束整个循环
#include <stdio.h>
int main()
{
float depth=0.0001;
int i=1;
while(1) //表达式为真,表示恒为真,循环体将无终止执行
{
depth=depth*2;
if(depth>8848) //当depth的值大于8848时(此时i=27),程序使用break语句,循环被强制退出
{
printf("经过%d次折叠后厚度超过珠峰高度\n",i);
break;
}
i++;
}
return 0;
}
2.continue语句
while(表达式1)
{
语句段1;
if(表达式2)continue;
语句段2;
}
continue功能:表达式2真,跳过语句段2,开始下一次循环
表达式2假,执行语句段2,继续循环
#include <stdio.h>
int main()
{
int i;
for(i=1;i<=50;i++)
{
if(i%7!=0) //i%7!=0为假,执行printf(“%d”,i);
continue;
printf("%d\n",i);
}
return 0;
}
循环嵌套
外层循环和内层循环不能交叉,内层循环应该完全包含在外层循环体之内
设计性实验
1. 编写程序,计算并输出e的值
写法1:
#include <stdio.h>
int main()
{
int i;
double e=1.0,Xi=1.0; //Xi是double型的,不是int,不然结果就不对,害我写半天
for(i=1;1/Xi>1e-6;i++)
{
Xi=Xi*i;
e=e+1/Xi;
}
printf("e=%lf",e);
return 0;
}
写法2:(书上的要求)
#include <stdio.h>
int main()
{
int i=1;
double e=1.00,Xi=1.00;
while(1)
{
e=e+1/Xi;
i=i+1;
if(1/Xi<=1e-6)break;
{
Xi=Xi*i;
}
}
printf("e=%lf",e);
return 0;
}
2.编写程序,计算并输出3~500的所有素数,要求每行输出12个数
#include <stdio.h>
int main()
{
int i,x,z=0;
for(i=3;i<=500;i=i+1)
{
for(x=2;x<=i-1;x=x+1)
{
if(i%x==0)
break;
}
if(x>=i)
{
z++;
printf("%d\t",x); //\t真的很好用,再夸一遍
if(z%12==0)
printf("\n");
}
}
return 0;
}
3.为验证哥德巴赫猜想(任何一个大于或等于6的偶数都可以表示为两个素数之和 例如:6=3+3,8=3+5,…100+3+97),编写程序,将6~100的所有偶数都表示成2个素数之和,要求每行输出5个等式
#include <stdio.h>
int main()
{
int i,n,a,x,b=0;
for(i=6;i<=100;i=i+2) //6~100的偶数
{
for(n=3;n<=i/2;n+=2)
{
for(a=2;a<=n-1;a=a+1)
if(n%a==0)break;//for
if(a==n)
{
for(x=2;x<=i-n-1;x=x+1)
if((i-n)%x==0)break;
}//if
if(x==i-n)
printf("%4d=%4d+%-5d",i,n,i-n);
}//for
b++;
if(b%5==0)
printf("\n");
}//for
return 0;
}
4.编写程序,找出100~999(含100和999)的所有水仙花数,其中水仙花数的定义为各数位上数字的立方和等于整数自身,如153=1^3+5 ^3+3 ^3
#include <stdio.h>
int main()
{
int i,a=0,b=0,c=0;
for(i=100;i<=999;i=i+1)
{
a=i/100; //求出百位数
b=i/10%10; //求出十位数
c=i%10; //求出个位数
if(i==a*a*a+b*b*b+c*c*c)
printf("%d\n",i);//if
} //for
return 0;
}
提高性实验
1.编写程序,求满足条件1 ^2+2 ^2+3 ^2+…+n ^2<=1000中最大的n
#include <stdio.h>
int main()
{
int i,a=0,s=0;
for(i=1;i>=1;i++)
{
a=i*i;
s=s+a;
if(s>1000)
{
printf("%d\n",i-1);
printf("%d",s-i*i);
break;
} //if
}//for
return 0;
}
下次不要忘记加break了o
人工智障修改答案~
2.编写程序,输出九九乘法表
1.正着
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
printf("%d*%d=%-3d",i,j,i*j);
printf("\n");
}
return 0;
}
2.反着
#include <stdio.h>
int main()
{
int i,j;
for(i=9;i>0;i--)
{
for(j=i;j>0;j--)
printf("%d*%d=%-3d",i,j,i*j);
printf("\n");
}
return 0;
}
心得
心如止水? 可能被速冻住了把~
但想配一个心不太止水的封面 ~