C语言-分支与循环结构综合程序设计

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;
}

在这里插入图片描述

心得

心如止水? 可能被速冻住了把~
但想配一个心不太止水的封面 ~

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值