6process contro-循环(1-while循环)

while循环

(1)while循环格式:

  while(表达式)

    语句;

(2)执行的顺序:表达式->语句

(3)与for的相互比较

for循环和while循环可以相互转化,for循环逻辑性更强,更不容易出错

#include <stdio.h>
int main(void)
{
	//用for循环实现累加和
	/*int i;
	int sum = 0;
	for (i = 1; i <= 100; ++i)
		sum = sum + i;
	printf("sum = %d\n", sum);*/
	//用while循环实现累加和
	int j;
	int wsum = 0;
	j = 1;
	while (j <= 100)
	{
		wsum = wsum + j;
		++j;
	}
	printf("wsum = %d\n", wsum);
	return 0;
}
/*
在vc++6.0中的输出结果:wsum = 5050
*/

(4)举例

从键盘输入一个数字,如果该数是回文数,则返回是,否则返回不是

回文数】正着写和倒着写都一样 如:121, 12321

#include <stdio.h>
int main(void)
{
	int val;//存放被判断的数
	int m;
	int sum = 0;
	printf("请输入你要判断的数字:");
	scanf_s("%d", &val);
	m = val;
	while (m)
	{
		sum = sum * 10 + m % 10;
		m /= 10;
	}
	if (val == sum)
		printf("是回文数!\n");
	else
		printf("不是回文数!\n");
	return 0;
}

执行过程:1234

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=1/10=0
5> m=0 不成立
最终sum=4321

注意:int类型4个字节,2^31-1=2147483648-1=2147483647 

类型           字节
char            1
short int       2
int             2(TC)/4(VC)
long            4
float           4
double          8
long double     10

 【斐波那契数列】从第3项开始,每项是前两项和。

#include <stdio.h>
int main(void)
{
	int i;
	int n;
	int f1, f2, fn;
	f1 = 1;
	f2 = 2;
	printf("请输入你需要求的数列: ");
	scanf_s("%d", &n);
	if (1 == n)
	{
		fn = 1;
	}
	else if (2 == n)
	{
		fn = 2;
	}
	else
	{
		for (i = 3; i <= n; ++i)
		{
			fn = f1 + f2;
			f1 = f2;
			f2 = fn;
		}
	}
	printf("f%d=%d\n", n, fn);
	return 0;
}
/*
在vc++6.0中的输出结果:
1> i=3 3<=6 成立
	fn=1+2=3 f1=f2=2 f2=fn=3 ++i i=4
2> i=4 4<=6 成立
	fn=2+3=5 f1=3 f2=5 ++i i=5
3> i=5 5<=6 成立
	fn=3+5=8 f1=5 f2=8 ++i i=6
4> i=6 6<=6 成立
	fn=5+8=13 f1=8 f2=13 ++i i=7
5> i=7 7<=6 不成立
*/

(5)什么时候用while循环,什么时候用for循环

do...while

1)使用情况:主要使用人机交互

2)格式:do{

         语句;

          }while(表达式)

    while(表达式)

    {

           语句;

      }

    for(1,2, 3)

    {

           语句;

      }

3)do{  }while() 并不等价于 while(){  }和for(){  }语句 

#include <stdio.h>
#include<math.h>
int main(void)
{
	double a, b, c;
	double delta;
	double x1, x2;
	char ch;
	//输入方程系数a,b,c
	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 = x2 = (-b) / (2 * a);
			printf("有一个解,x1=%lf, x2=%lf\n", x1, x2);
		}
		else
		{
			printf("没有解!");
		}
		printf("你想继续(Y/N):");
		scanf(" %c", &ch);
	} while ('y'== ch || 'Y'== ch);
	return 0;
}

  

posted @ 2024-08-04 11:59  java帝国  阅读(9)  评论(0)    收藏  举报