循环for、while、do...while的用法

先了解基本语法知识,然后再把程序看懂(试数是个很好的选择),用的多了自然就会了

循环执行

某些代码被重复执行

for

1、格式:

for(1; 2; 3)
   语句A;    

2、执行的流程【重点】

执行顺序1-2(1和2成立后)-A-3(一次循环结束)-2-A-3
单个for循环的使用

多个for循环的使用
1、

 for(1; 2; 3)        //1行
     for(4; 5; 6)   //2行
          语句A;   //3行
          语句B;   //4行
整体是两个语句,1 2 3 是一个语句 ,4 是第二个语句

2、

for(1; 2; 3)        //1行
     for(4; 5; 6)   //2行
      {
         语句A;   //3行
         语句B;  //4行
      }   
 整体是一个语句

3、

for(7; 8; 9)
for(1; 2; 3) 
{
    语句A;   
    语句B;   
    for(4; 5; 6)  
        语句C;
}

整体是一个语句

3、范围问题

默认控制一句

4、举例

1+2+3+…+100

{
    int sum = 0;
    int i;

	for (i=1; i<=100; ++i)
	    sum = sum + i;
	printf("sum = %d\n",sum);
	return 0;
}

1+1/2+1/3+…+1/100

{
	int i;
	float sum=0;
	
	for (i=1; i<=100; ++i)
	{
		sum = sum + 1.0/i;  //   推荐使用   强制数据类型转换 
	       // sum = sum + (float)(1/i);  这样写是不对的   1/i=0,转换过后也是0; 
		   // sum = sum + 1/(float)(i);  也是 OK的   不推荐使用 
	}
	printf("sum = %f\n",sum); // float必须用 %f 输出 
	
	return 0;
}

while

1、执行顺序

格式:

while (表达式) 
       语句;

2、与for的相互比较

for和while可以互换,但for的逻辑性更强,更不容易出错,推荐使用for

for (1; 2; 3)
       A;
等价于
      1;
while (2)
{
      A;
      3;
} 

3、举例

1、从键盘输入一个数字,如果该数字是回文数,则返回yes,否则返回no
回文数:正着写和倒着写一样
比如: 121 12321 都是回文数

# include <stdio.h>

int main (void)
{
	int val;        //存放待判断的数字 
	int m;
	int sum = 0;
	printf("请输入您需要判断的数字: ");
	scanf("%d", &val);
	
	m = val;
	while (m)
	{
		sum = sum * 10 + m%10;
		m /= 10;
	}
	
	if (sum == val)
	    printf("Yes!\n");
	else
	    printf("No!\n");
	 
	
	return 0;
} 


/*
   试数: 
1> m=1234成立
   sum=0*10+1234%10=4
   m=m/10=123
2> m=123成立
   sum=4*10+123%10=43
   m=m/10=12
3> m=12成立
   sum=43*10+12%10=432
   m=m/10=1
4> m=1成立
   sum=432*10+1%10=4321
   m=m/10=0
5> m=0不成立

  最终 sum = 4321 

*/ 

2、如何看懂一个斐波拉契序列

# include <stdio.h>

int main (void)
{
	int n;
	int f1,f2,f3;
	int i;
	
	f1=1;
	f2=2;
	
	printf("请输入您需要求的序列: ");
	scanf("%d",&n);
	
	if (1 == n)
	{
		f3 = 1;
	}
	else if (2 == n)
	{
		f3 = 1; 
	}
	else
	{
		for(i=3; i<=n; ++i)
		{
			f3 = f1+f2;
			f1 = f2;
			f2 = f3;
		}
	 } 
	printf("%d\n",f3);
	
	return 0;
}
/*
试数:
1> i=3 3<=6
   f3=1+2=3 f1=f2=2 f2=f3=3 i=4
2> i=4 4<=6
   f3=2+3=5 f1=f2=3 f2=f3=5  i=5
3> i=5 5<=6
   f3=3+5=8 f1=f2=5 f2=f3=8 i=6
4> i=6 6<=6
   f3=5+8=13 f1=f2=8 f2=f3=13 i=7
5> i=7 不成立 输出13 

*/

4、什么时候使用while,什么时候使用for

没法说,用多了自然而然就知道了

do…while…

主要是用于人机交互,和while不能相互转换

格式:

do
{
 …
} while (表达式);
内部一定执行一次

举例:一元二次方程

# include <stdio.h>
# include <math.h>
int main (void)
{
	double a,b,c;
	double delta;
	double x1,x2;
	char ch;
	
	do
	{
		
	    printf("请输入一元二次方程的三个系数:\n");
	    printf("a = ");
	    scanf("%lf", &a);
	
	    printf("b = ");
	    scanf("%lf", &b);
	
	    printf("c = ");
	    scanf("%lf", &c);
	
	    delta = b*b - 4*a*c;
	    if(delta > 0)
  	    {
  	    	x1 = (-b + sqrt(delta) ) / (2*a);
		    x2 = (-b - sqrt(delta) ) / (2*a);
		    printf("有两个实数解! x1 = %lf, x2=%lf\n",x1,x2);
		}
	    else if(delta = 0)
    	{
		    x1 = -b / 2*a;
		    x2 = x1;
		    printf("有一个实数解! x1 = x2 = %lf\n",x1);
	    }
	    else
    	{
    		printf("无实数解!\n"); 
    	}
    	printf("您想继续吗(Y/N):");
    	scanf(" %c", &ch);          // %c 前面必须加一个空格,原因略 
    }while ('y'==ch || 'Y'==ch);
	return 0;
} 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Java中,while循环语句是一种常见的循环控制结构,用于重复执行一段代码,直到指定的条件不再满足为止。while循环语句的基本语法如下所示: ``` while (condition) { // 循环体代码 } ``` 其中,`condition`是一个布尔表达式,表示循环条件。只要`condition`的值为`true`,就会重复执行循环体代码。当`condition`的值为`false`时,循环就会终止。 下面是一个简单的示例,演示了如何使用while循环语句来计算1到10的整数之和: ``` int sum = 0; int i = 1; while (i <= 10) { sum += i; i++; } System.out.println("1到10的整数之和是:" + sum); ``` 上面的代码中,`sum`变量用于存储1到10的整数之和。`i`变量用于控制循环次数,初始值为1。在每次循环中,先将`i`加到`sum`中,然后将`i`的值加1,直到`i`的值大于10为止。 另外,Java中还有一种类似的循环语句叫做do...while循环语句。它的语法与while循环语句有所不同,具体如下: ``` do { // 循环体代码 } while (condition); ``` do...while循环语句先会执行一次循环体代码,然后再判断循环条件是否满足。只要循环条件满足,就会继续执行循环体代码,直到循环条件不再满足为止。 下面是一个简单的示例,演示了如何使用do...while循环语句来输入一个整数,直到输入的值为0为止: ``` Scanner scanner = new Scanner(System.in); int num; do { System.out.print("请输入一个整数(输入0结束):"); num = scanner.nextInt(); } while (num != 0); System.out.println("输入结束。"); ``` 上面的代码中,使用Scanner类从控制台读取整数,然后使用do...while循环语句判断输入的值是否为0。只要输入的值不为0,就会继续输入,直到输入的值为0为止。最后输出“输入结束”。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柯糖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值