C语言-循环结构

循环语句的三种类型

1.while语句

while(表达式)
 循环体;
表达式为真时执行循环体语句

2.do…while语句

do
  循环体;
while(表达式)
先执行一次do后面的循环体,判断while语句中圆括号的表达式,当表达式的值为真时,继续执行循环体,当表达式为假时,结束循环

3.for语句

for(表达式1;表达式2;表达式3)
 循环体
一般情况下,表达式1给出循环变量的初值,表达式2给出循环条件,表达式3修改循环变量的值

设计性实验

1.用do-while循环语句编程以计算Π的近似值

#include <stdio.h>
#include <math.h>
int main()
{
	double i=0;
	double s=0;
	double Pi; 
	do
	{
	    i=i+1;
		s=s+1/(i*i);
	}
	while(1/(i*i)>=1e-10);
	Pi=sqrt(s*6);
	printf("Pi=%lf",Pi);
	return 0;
}

在这里插入图片描述

我一开始打的int i=0输出的答案Pi=2.449490,就换成了double
先执行i=i+1,再执行s=s+1/(i+i)

2.计算并输出100-600满足以下条件的数:每个数位上数字的积为45且和为15,同时统计并输出满足以上条件的数的个数

#include <stdio.h>
int main()
{
	int i,a=0,sum=0,product=0;
	for(i=100;i<=600;i=i+1)
	    {
    		sum=i%10+i/10%10+i/10/10;
    		product=(i%10)*(i/10%10)*(i/10/10);
    		if(sum==15&&product==45)
    		printf("%d\n",i),a=a+1;
   		}
    printf("共有以上%d个数满足条件\n",a);
    return 0;
}

在这里插入图片描述

我一开始不会用计数器计数,(就是输出共有几个数满足条件)想了很久都不对
某人还嫌我写的慢,真令我生气~

3.函数y=(5sin(x)+x-3.6cos(x))^2的最小值,其中自变量的取值为闭区间【-50,50】中的所有整数,要求输出取最小值时x和y的值

实验提示

1.令xMin为-50,根据函数定义计算yMin值作为当前最小的函数值
2.使用for循环语句控制变量x的值从-49依次以1递增到50
3.使用if语句来判断当前的yMin值是否大于新计算的y值,若大于则令yMin=y,xMin=x记录当前的函数最小值及对应的值

#include <stdio.h>
#include <math.h> 
int main()
{
	
	double y,yMin,x,xMin;
	yMin=(5*sin(-50)-50-3.6*cos(-50))*(5*sin(-50)-50-3.6*cos(-50));
	for(x=-49;x<=50;x=x+1)
	{
		y=(5*sin(x)+x-3.6*cos(x))*(5*sin(x)+x-3.6*cos(x));
		if(yMin>y)
		{
			yMin=y;
			xMin=x;
		}
	}
	printf("在x=%lf处取最小值:%lf\n",xMin,yMin);
	return 0;
}

在这里插入图片描述
这个代码for前面写的感觉有点不太对,但结果是对的,之后再修改一下吧~

4.输入两个不同的正整数(设为a,b),计算并输出它们的最大公约数和最小公倍数

实验提示

整个过程可利用辗转相除法
1.通过ta=a,tb=b对两个原始的正整数进行备份
2.根据c=ta%tb计算c的值
3.若c=0,则转到步骤5,否则执行步骤4
4.执行ta=tb,tb=c,再转到步骤2
5.返回tb为a和b的最大公约数,a*b/tb为a和b的最小公倍数

#include <stdio.h>
int main()
{
    int ta,tb,a,b,c,d;
    printf("请输入两个正整数(以逗号隔开):\n");
    scanf("%d,%d",&a,&b);
    ta=a;
    tb=b;
    c=ta%tb;
    while(c!=0)
        {
          ta=tb;
          tb=c;
          c=ta%tb;
        }
    d=a*b/tb;
    printf("%d和%d的最大公约数为%d\n",a,b,tb); 
    printf("%d和%d的最大公约数为%d\n",a,b,d);
	return 0; 
}

在这里插入图片描述
ta=tb,不是等于,赋值运算符,把右边表达式的值赋给左边的变量

提高性实验

1.算桃子

#include <stdio.h>
int main()
{
	int a=1,i=1;
	while(i<6)
	{
	     a=(a+1)*2;
	     i=i+1;
     }
     printf("最初的筐里有%d个桃子\n",a);
     return 0;
}

在这里插入图片描述

2.整数逆序输出

#include <stdio.h>
int main()
{
	int a,result;
	printf("请输入一个正整数:\n");
	scanf("%d",&a);
	while(a>0)
    {
    	result=a%10;
    	a=a/10;
    	printf("%d",result);
    }
    return 0;
}

在这里插入图片描述
这个代码有点小缺陷,输入5000时会输出0005,而不是5

心得

是谁这么棒呀~写完了一篇笔记
当然是我啦

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值