循环结构程序设计

一、循环结构语句

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

 运行结果:

 

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 循环结构程序设计中常用的一种结构,可以重复执行一段代码,以便处理重复的操作。以下是循环结构程序设计的一些基本知识点: 1. 循环结构类型:通常有三种循环结构类型:while 循环、do-while 循环和 for 循环。 2. 循环控制变量:循环控制变量是控制循环次数的变量。在循环中需要对循环控制变量进行初始化、更新和判断。 3. 循环嵌套:循环可以嵌套,即在一个循环中嵌入另一个循环。嵌套循环的执行顺序是从外到内,逐层执行。 4. 循环语句中的 break 和 continue:break 语句用于立即退出循环,而 continue 语句用于跳过当前循环中的某次迭代。 5. 循环的使用场景:循环结构程序设计中的使用场景非常广泛,例如需要对一组数据进行遍历、需要重复执行某个操作等。 以上是循环结构程序设计的一些基本知识点。在实际应用中,还需要结合具体的编程语言和应用场景进行细节处理。 ### 回答2: 循环结构程序设计中非常重要的知识点,主要用于重复执行某一段代码块,从而提高代码的复用性和效率。 循环结构有三种常见的形式:for循环、while循环和do-while循环。 首先,for循环是在已知循环次数的情况下使用,主要由三个部分组成:初始化表达式、条件表达式和更新表达式。在每次循环开始时,初始化表达式被执行一次,然后检查条件表达式,如果条件为真,则执行循环体中的代码,然后执行更新表达式,再次判断条件表达式,直到条件为假时退出循环。 其次,while循环是在不确定循环次数的情况下使用,只有条件表达式为真时,才会执行循环体中的代码。在每次循环开始时,会先判断条件表达式,如果为真,则执行循环体中的代码,然后再次判断条件表达式,直到条件为假时退出循环。 最后,do-while循环与while循环类似,唯一的区别是条件表达式的判断时机。在do-while循环中,条件表达式是在执行完循环体中的代码后判断的,即无论条件表达式为真还是假,至少会执行一次循环体中的代码。 在使用循环结构时,需要注意循环变量的初始化和更新,以确保循环的正确执行和终止条件的判断,避免陷入无限循环的情况。同时,也可以利用循环结构来处理数组、列表等数据结构,实现一次性对多个数据进行处理的目的。 总结来说,循环结构程序设计中重要的知识点,通过灵活运用for循环、while循环和do-while循环,可以实现代码的重复执行,提高程序的效率和可复用性。 ### 回答3: 循环结构是一种重要的程序设计知识点,用于在程序中重复执行一段代码。循环结构可以根据特定的条件确定是否继续执行,从而实现对重复操作进行控制。 循环结构有两种常见的形式:while循环和for循环。while循环先判断条件是否满足,满足则执行循环体中的代码,然后再次判断条件,如此重复直到条件不满足时退出循环。for循环则先执行循环初始化语句,然后判断条件是否满足,满足则执行循环体中的代码,再执行循环变量的增量操作,如此反复直到条件不满足时结束循环循环结构的关键是循环控制变量的正确使用。循环控制变量是一个在循环过程中不断变化的变量,它的变化决定了循环的次数和条件。编写循环结构时,需要注意对循环控制变量的初始化、判断条件的正确性和循环控制变量的更新等。 另外,循环结构还可以嵌套使用,即在一个循环内部包含另一个循环。通过嵌套循环可以实现更加复杂的重复操作。 循环结构在实际编程中有广泛的应用。例如,可以使用循环结构来计算数列的和、求解方程的根、查找数组中的最大值等。循环结构的灵活使用可以提高程序的效率和可维护性。 总之,循环结构程序设计中不可或缺的知识点,掌握了循环结构的基本原理和使用方法,可以更加高效地编写程序,并解决实际问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TAO1031

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值