循环结构程序设计

news2024/12/25 12:45:42

一、循环结构语句

C语言提供了三种循环语句(for语句)、while语句和do-while语句。

for语句:

for(表达式1 ; 表达式2 ; 表达式3)
{
  循环体语句;
}

for语句的执行过程:

  1. 首先计算表达式1。
  2. 判断表达式2,若其值为真(非0),则执行循环语句,然后执行第3步;若值为假(0),结束循环,执行第5步。
  3. 计算表达式3。
  4. 返回第二步继续执行。
  5. 循环结束,继续执行for语句的下一个语句

 while语句:(先判断后循环)

while(表达式)

        循环体;

while语句执行流程:

  1. 计算表达式的值,若其值为真(非0),则执行第2步;若值为假(0),执行第4步。
  2. 执行循环体语句。
  3. 返回第一步。
  4. 结束循环,执行while语句的下一条语句。

do-while语句:(先循环后判断)

do

        循环体

while(表达式);

do-while语句执行流程:

  1. 执行循环体语句
  2. 计算表达式的值,若其值为真(非0),则执行第1步;若值为假(0),执行第3步。
  3. 结束循环,执行do-while语句的下一条语句。

break语句:

        break;

break语句用于循环语句中时,可使程序终止循环而去执行循环体语句的后续语句

continue语句

        continue;

continue语句跳出本次循环,进入下一轮循环

二、循环语句举例

【例5.1】假设今年我国的人口总数为13亿,若按每年2%增长,计算我国从现在开始十年内每年的人口的数量

#include<stdio.h>
#include<math.h>
int main()
{
	int year;
	double number=13;
	for(year=1;year<11;year++)
	{
		number=number*1.02;
		printf("%d年后,人口的数量为%.2f亿\n",year,number);
	}
	return 0;
 } 	

运行结果: 

【例5.3】输入一个正整数n,求    \sum_{i=1}^{n}i     的值

#include<stdio.h>
int main()
{
	int sum,n,i;
	sum=0;
	printf("请输入一个正整数:");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		sum=sum+i;
		printf("前n项的和为%d",sum); 
	return 0; 
}

运行结果:

 【例5.15】当键盘输入一串字符,分别统计字符中的数字字符、英文字符、字母字符以及其他字符的个数。

#include<stdio.h>
int main()
{
    char s;
    int h=0,i=0,j=0,k=0;
    printf("请输入一串字符:\n");
    //输出完毕后会按换行从而结束循环 
	//原因主要是因为getcher只能从键盘上读取一个字符 
    while((s=getchar())!='\n')
	{
        if(s>='a'&&s<='z'||s>='A'&&s<='Z') h++;
        else if(s==' ')i++;
        else if(s>='0'&&s<='9')j++;
        else k++;
    }
    printf("\n请输入英文字母的个数:%d\n",h);
    printf("\n请输入空格字母的个数:%d\n",i);
    printf("\n请输入数字字母的个数:%d\n",j);
    printf("\n请输入其他字符的个数:%d\n",k);

    return 0;
} 

运行结果:

 【例 5.26】输出乘法口诀表

#include <stdio.h>
 
int main() {
  int i, j;
  for (i = 1; i <= 9; i++) {
    for (j = 1; j <= i; j++) {
      printf("%d * %d = %d\t", j, i, i * j);
    }
    printf("\n");
  }
  return 0;
}

运行结果: 

【例5.27】求100以内的素数。要求每行输出10个

#include<stdio.h>
#include<math.h>
int main()
{
	int i,n,k,count=0;
	n=2;
	while(n<100)
	{
		//求一个素数只需看2-n的开平方根中有没有被整除 
		k=sqrt(n);
		for(i=2;i<=k;i++)
		{
			if(n%i==0)break;
		}
		if(i>k)
		{
			printf("%4d",n);
			if(++count%10==0)printf("\n");
		}
		n++;
	}
	return(0);
}

运行结果:

 【例5.28】将10-20之间的正整数分解质因数

#include<stdio.h>
int main()
{
	int i,n,m;
	for(m=10;m<=20;m++)
	{	
		n=m,i=2;          
		printf("%d=",n);
		do         	         
		{if(n%i==0)        
			{printf("%d*",i);
				n=n/i;             
			}
			else
				i++;
			}while(n!=i);       
			printf("%d\n",n);    
		}
		return 0;
 }

运行截图:

三、典型算法举例

1、递推法

【例 5.29】猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将第一天剩下的桃子吃掉一半,有多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,发现只剩下一个桃子了。编写程序求猴子第一天摘了多少个桃子

#include<stdio.h>
int main()
{
	int peach = 0;//桃子总数
	int rest = 1;//第10 天只剩一个桃子
	int day = 0;
	for(day = 9; day > 0; day--)
	{
		peach = (rest + 1) * 2;//每天的桃子总数是后一天剩余桃子加1乘2
		rest = peach;
	}
	printf("猴子第一天一共摘了%d个桃子\n",peach);
	return 0;
}

运行结果:

【例5.30】求 的近似值,要求精确到10^{-6}

#include<stdio.h>
#include<math.h>

int main()
{
	int n=1;
	float x;
	double fz,fm=1,sinx;
	printf("请输入x的值:");
	scanf("%f",&x);
	fz=x;
	sinx=x;
	//递推法求sin(x) 
	do
	{
		n=n+1;
		fz=-fz*x*x;
		fm=fm*(2*n-1)*(2*n-2);
		sinx=sinx+fz/fm;
	}while(fabs(fz/fm)>1e-6);
	printf("sin(%f)=%0.6f\n",x,sinx);
	return 0;
                
}

运行结果:

 2、迭代法

【例5.31】用牛顿迭代法求方程2x^{3}-4x^{2}+3x-6=0在1.0附近的一个实根

牛顿迭代公式:x=x0-f(x0)/f '(x0);,

#include<stdio.h>
#include<math.h>

int main()
{     
 	float x0,x1,f,f1;     
 	x1=1.0; 
	//x1=x0-f(x0)/f'(x0);    
 	do{        
 		x0=x1;         
 		f=2*pow(x0,3)-4*pow(x0,2)+3*x0-6;      
 		f1=6*pow(x0,2)-8*x0+3;
 		x1=x0-f/f1; 
 	    } while (fabs(x1-x0)>1e-6);        
 	 	printf("%6.2f",x1);
 		return 0;
  }

运行结果:

 3、穷举法

【例5.32】搬砖问题36块砖,男搬4,女搬3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人?

#include<stdio.h>
int main()
{
	int men,women,child;
	for(men=1;men<=9;men++){
	    for(women=1;women<=12;women++){
	        for(child=1;child<=36;child++){  
	        	if(4*men+3*women+0.5*child==36)
				printf("男的有%d个,女的有%d个,小孩有%d个。\n",men,women,child);
	   		}
		}
	}
	return 0;
}

运行结果:

 四、循环程序设计示例

【例5.34】编写输出下列图形

#include<stdio.h>
int main()
{
	int i,j;
	for(i=1;i<=5;i++)
	{
		for(j=1;j<=20-i;j++)
		    printf(" ");
		for(j=1;j<=2*i-1;j++)
		    printf("*");
		printf("\n");
	}
     return 0;
} 

运行结果:

 【例5.35】猜数字游戏:由计算机随机产生一个10-80之间的数据,然后由用户进行猜数,在五次之内猜中则成功,否则给出大小提示。猜五次之后结束程序。

#include<stdio.h>
#include<stdlib.h> 
int main()
{
	int m,n,count;    
	m=rand()%(80-10+1)+10;
	printf("请输入1个10 - 80 间的一个数字:");
	while(1)
	{
		scanf("%d", &n);
		count++;
		if (m==n)
		{
			printf("恭喜!你猜对了,你真棒!\n");
			break;
		}
		else if (m<n&&count<5)
		{
			printf("对不起!你猜大了!再来一次!\n");
		}
		else if(m>n&&count<5)
		{
			printf("对不起!你猜小了!再来一次!\n");
		}
		if(count==5)
		{
			printf("对不起!你没有机会了!\n这个数是:%d,游戏结束!\n",m);
			break;
		}
	}
	return 0;
}

 运行结果:

【例5.36】 编写程序输出100-1000内的回文素数。回文素数是指即是回文数同时也是素数的整数

#include <stdio.h>
#include <math.h>
main()
{
	int x,i,j=0,n,k=0;
	for (x=100;x<1000;x++)
	{
		k=sqrt(x);
		for(i=2;i<=k;i++)
		if(x%i==0)
		    break;
		if(i>k)
		{  k=x;
		   n=0;
		while(k>0)
		{
			n=n*10+k%10;
			k/=10;
		}
		
	    if(x==n)
	    {
		    printf("%d\t",x);
		    if(++j%5==0)
			printf("\n");	 
		}
		}   	        
	}
    return 0;
}

运行结果:

【例5.37】在所有三位整数中找出平方数中有连续的三位数字是该数本身的数。例如,250的平方数是62500,250便是所要找的一个满足条件的三位整数。

#include<stdio.h>
int main()
{
  int x,t;
  printf("i\tpower\n");
  for(x=100;x<1000;x++)
  {  t=x*x;
     while(t!=0)
     {  if(x==t%1000)
        {  printf("%d\t%d\n",x,x*x);
           break;
        }
        else
          t=t/10;
     }
  }
  return 0;
}

 运行结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/526951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【LED子系统】五、核心层详解(二)

个人主页&#xff1a;董哥聊技术 我是董哥&#xff0c;高级嵌入式软件开发工程师&#xff0c;从事嵌入式Linux驱动开发和系统开发&#xff0c;曾就职于世界500强公司&#xff01; 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; 文章目录…

基于B/S架构、可替代付费商业软件的一站式量化交易平台

产品简介 这是一个面向程序员的量化交易软件&#xff0c;用于期货、股票、外汇、炒币等多种交易场景&#xff0c;实现自动交易。已对接了CTP接口&#xff08;国内期货&#xff09;、老虎证券接口&#xff08;美股港股&#xff09;。 功能特性&#xff1a; 一站式平台&#x…

Protell99SE祭文

Protell99SE祭文 大概是在21年前的今天&#xff0c;我和你结合在一起&#xff0c;陪伴走过无数的设计。 我的感觉&#xff0c;大概是在2021年吧&#xff0c;你逐渐离我远去。啊&#xff0c;Protel99SE时代一去不复返了。 我用了你21年&#xff0c;虽着AD软件的到来&#xff…

【C++】19.C++11

1.C11 auto 范围for 新容器 线程库列表初始化右值引用和移动语义 lambda表达式容器支持花括号列表初始化 本质是增加一个initializer_list的构造函数initializer_list支持花括号 2.列表初始化 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <ve…

​数字化转型升级之工业元宇宙与AIGC

月説小飞象交流会 生活就是&#xff0c;面对复杂&#xff0c;保持欢喜。心烦时&#xff0c;记住三句话&#xff1a;1、算了吧。2、没关系。3、会过去的。 内部交流│24期 数字化转型升级 工业元宇宙与AIGC data analysis ●●●● 分享人&#xff1a;李铁军 ‍ 现如今数字化不再…

定风波、渡重山、至未来:2023中国数字能源生态大会开启的新旅程

全球碳中和的时代背景下&#xff0c;面向3060发展目标&#xff0c;新使命、新技术、新应用的到来&#xff0c;都给能源产业带来了持续变革的必要性与可能性。 2023年5月11日&#xff0c;在2023中国数字能源生态大会上&#xff0c;华为数字能源技术有限公司总裁侯金龙发表了“融…

【微电网】含风、光、储联合发电的微电网优化调度研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

2023 年 IntelliJ IDEA 下载安装教程,超详细图文教程,亲测可用

. IDEA 下载 1、打开浏览器输入https://www.jetbrains.com/&#xff0c;进入 Jetbrains官网&#xff0c;点击 Developer Tools&#xff0c;再点击 Intellij IDEA 2、点击中间的 Download&#xff0c;进入IDEA下载界面 3、选择左边的 Ultimate 版本进行下载安装。Ultimate 版…

心法利器[84] | 最近面试小结

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会&#xff0c;与大家一起成长。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2022年新一版的文章合集已经发布&#xff0c;累计已经60w字了&#xff0c;获取方式看这里&…

让Chat-GPT成为你的微信小助理

前言 最近公司裁员风波&#xff0c;很不幸成为了裁员名单中的一员&#xff1b;此时又恰逢一波AIGC浪潮&#xff0c;首当其冲的就是GPT这样的大语言模型的诞生&#xff0c;是整个AI领域的一个质的飞跃。正好在这样一个空挡期&#xff0c;我就基于Chat-GPT 做了一些深入的实践&a…

ChatGPT是什么?

ChatGPT是什么&#xff1f; ChatGPT是一个基于人工智能技术的聊天机器人平台&#xff0c;旨在为用户提供智能化、高效率的交互体验。ChatGPT能够理解用户输入的自然语言&#xff0c;根据语义分析和机器学习算法生成相应的回答。它可以回答用户的问题、提供建议、进行闲聊等&am…

前端技术搭建井字游戏(内含源码)

The sand accumulates to form a pagoda ✨ 写在前面✨ 功能介绍✨ 页面搭建✨ 样式设置✨ 逻辑部分 ✨ 写在前面 上周我们实通过前端基础实现了飞机大战游戏&#xff0c;今天还是继续按照我们原定的节奏来带领大家完成一个井字游戏游戏&#xff0c;功能也比较简单简单&#x…

路径规划 | 图解快速随机扩展树RRT算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是RRT算法&#xff1f;2 图解RRT算法原理3 算法仿真与实现3.1 ROS C实现3.2 Python实现3.3 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、…

〖Python网络爬虫实战㉕〗- Ajax数据爬取之Ajax 案例实战

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付…

Gradle下载、安装、配置

1. Gradle下载 1.1 Gradle下载地址&#xff1a;https://docs.gradle.org/current/userguide/installation.html#installing_manually 1.2 点击Download 1.3 选择想要下载的版本&#xff0c;点击binary-only即可下载 2. Gradle安装&#xff08;注意&#xff1a;安装gradle之前…

【C语言】三子棋小游戏的思路及实现(内附代码)

简单不先于复杂&#xff0c;而是在复杂之后。 目录 1. 分文件实现 2.分步骤实现 2.1 游戏菜单 2.2 创建棋盘 2.3 初始化棋盘 2.4 打印棋盘 2.5 玩家下棋 2.6 电脑下棋 2.7 判断输赢 3. 附完整代码 3.1 test.c 3.2 game.h 3.2 game.c 1. 分文件实现 当我…

对称加密、非对称加密、数字签名、消息摘要的简单学习

对称加密、非对称加密、数字签名、消息摘要的简单学习 前言对称加密算法DES特点&#xff1a;为什么不使用&#xff1a; 3DES&#xff08;Triple DES 或者 DESede&#xff09;特点&#xff1a;使用场景&#xff1a;为什么不用&#xff1a; AES&#xff08;Advanced Encryption S…

聊一聊模板方法模式

统一抽取&#xff0c;制定规范&#xff1b; 一、概述 模板方法模式&#xff0c;又叫模板模式&#xff0c;属于23种设计模式中的行为型模式。在抽象类中公开定义了执行的方法&#xff0c;子类可以按需重写其方法&#xff0c;但是要以抽象类中定义的方式调用方法。总结起来就是&…

c语言实现栈(顺序栈,链栈)

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:讲解用c语言实现:“数据结构之"栈”,分别从"顺序栈…

区间预测 | MATLAB实现QRCNN-BiGRU卷积双向门控循环单元分位数回归时间序列区间预测

区间预测 | MATLAB实现QRCNN-BiGRU卷积双向门控循环单元分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN-BiGRU卷积双向门控循环单元分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRCNN-BiGRU分位数回…