循环语句小结

一、while循环

我们已经掌握了if语句

if(条件)

  语句;

当条件满足的情况下,if语句后的语句执行,否则不执行。但这个语句只会执行一次,当我们需要让同一件事执行多次时,我们就可可以使用while语句实现循环。

1.语法结构

while(表达式)
    循环语句;

2. 应用

1) 在屏幕上打印1-10

int main()
{
  int i = 1;
  while(i <= 10)
  {
    printf("%d\n",i);
    i++;
  }
  return 0;
}

 2)while循环中break的使用

只要在循环中执行break,则立即跳出整个循环。

int main()
{
  int i = 1;
  while(i <= 10)
  {
     if(5 == i)
        break;        //当i=5时,循环结束
     printf("%d\n",i);
     i++;
  }
  return 0;           //输出1,2,3,4
}

3)  while中continue的作用

跳过本次循环后面的代码,回到while的判断部分

int main()
{
  int i = 1;
  while(i <= 10)
  {
     if(5 == i)
        continue;    //当i=5时,不执行printf和i++语句,回到while,判断5是不是小于10
     printf("%d\n",i);
     i++;
  }
  return 0;           //输出1,2,3,4,因为5始终小于10,后面是死循环
}

4) 例一:

getchar--输入一个字符

putchar--输出一个字符

它们只针对字符的输入、输出,并且一次只能输入、输出一个字符

int main()
{
  int ch = 0;
  while ((ch = getchar()) != EOF) //实现输入多个字符
  {
     putchar();
  }
  return 0;  //例:输入abc,输出abc
}

利用while语句清理缓冲区 

int main()
{
	char input[20] = {0};

	printf("请输入密码:>");
	scanf("%s", input);    //abcdef
	int tmp = 0;
	while ((tmp = getchar()) != '\n')  //清理缓冲区
	{
		;//空语句
	}

	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if (ch == 'Y')
	{
		printf("确认成功\n");
	}
	else
	{
		printf("确认失败\n");
	}

	return 0;
}

例二:

利用while语句,当且仅当输入数字时打印

int main()
{
  int ch = 0;
  while ((ch = putchar()) != EOF)
  {
     if(ch < '0' || ch > 9)
     continue;
     putchar();
  }
  return 0; //输入a,程序没有反应;输入3,屏幕上打印3
}

二、for循环

1.语法

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

表达式1为初始化部分,用于初始化循环变量

表达式2为条件判断部分,用于判断循环时候终止

表达式3为调整部分,用于循环条件的调整

2.应用

1)打印1-10数字

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
		printf("%d ", i);
	return 0;
	
}

 2)for循环中break的使用

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (5 == i)
		{
			break;
		}
		printf("%d ", i);
	}
		
	return 0;     //屏幕上打印1 2 3 4
	
}

3)for循环中continue的使用

int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		if (5 == i)
		{
			continue ;
		}
		printf("%d\n", i);
	}
		
	return 0;   //不会和while循环语句一样陷入死循环,因为在判断部分有i++,所以结果为1234678910不会打印5
	
}

 for的初始化,判断,调整三个部分都可以省略。中间的判断部分如果省略,意味着判断恒为真,就构成了死循环。

4)for循环的嵌套

int main()
{
	int i = 0;
	int j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 3; j++)
		{
			printf("hehe\n");
		}
	}
		
	return 0;  //打印9个hehe
	
}

三、do.....while循环

1.语法

do
     循环语句;
while(表达式);

2.应用

1)用do...while打印1-10

int main()
{
	int i = 1;
	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 10);
		
	return 0;
	
}

 2)do..while循环中的break

int main()
{
	int i = 1;
	do
	{
		if (5 == i)
			break;
		printf("%d ", i);
		i++;
	} while (i <= 10);
		
	return 0;   //打印 1 2 3 4
	
}

3)do...while中的continue

int main()
{
	int i = 1;
	do
	{
		if (5 == i)
			continue;
		printf("%d ", i);
		i++;
	} while (i <= 10);
		
	return 0;   //打印1 2 3 4,并且陷入死循环
	
}

四、练习

1.计算n的阶乘

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

2.计算1!+2!+...+10!

int main()
{
	int n = 0;
	int i = 0;
	int sum = 0;
	int ret = 1;
	for (n = 1; n <= 10; n++)
	{
		ret = 1;
		for (i = 1; i <= n; i++)
		{
			ret = ret * i;
		}
		sum = sum + ret;
	}
	printf("%d\n", sum);
	return 0;
	
}

这个代码可以进行优化如下:

int main()
{
	int n = 0;
	int sum = 0;
	int ret = 1;
	for (n = 1; n <= 10; n++)
	{
		ret = ret * n;
		sum = sum + ret;
	}
	
	printf("%d\n", sum);
	return 0;
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值