C语言——while语句、dowhile语句、for循环和循环结构、break语句和continue语句

目录

一、while语句

getchar函数

二、dowhile语句 

while与dowhile语句的区别:

 三、for语句和循环结构

1.形式

2.打印10次LoveC

3.写一个程序:判断一个数是否为素数

4.for语句的灵活运用

 补充:C99新标准

5.循环嵌套

6.打印九九乘法表

 四、break语句和continue语句

1.break语句

2.continue语句

 注意


一、while语句

while(表达式)
    循环体

1.代码实战一:用C语言计算1+2+3+……+100的结果

代码如下:

#include <stdio.h>

int main()
{
	int i = 1,sum = 0;
	
	while(i <= 100)
	{
		sum = sum + i;
		i = i + 1;
	}
	
	printf("结果是:%d\n",sum);
	
	return 0;
	
}

运行结果:

getchar函数

(1)函数摘要:getchar函数从标准输入流(stdin)中获取下一个字符。相当于调用getc(stdin)函数。

(2)函数原型:

#include <stdio.h>
…
int getchar()(void);

(3)返回值:

如果函数调用成功,返回获取的字符(用整型表示其ASCII码)

返回值如果是EOF,表示该函数调用失败;

  • 如果标准输入流位于处于结束的位置,该函数返回EOF,并设置标准输入流的结束标志符。
  • 如果出现其他错误,该函数同样返回EOF,并设置错误标志符代替。

2.代码实战二:统计从键盘输入的一行英文句子的字符个数

代码如下:

#include <stdio.h>

int main()
{
	int count = 0;
	
	printf("请输入一行英文字符:\n");
	
	while(getchar() != '\n')
	{
		count = count + 1;
	}
	
	printf("您总共输入了%d个字符\n",count);
	
	return 0;
	
}

运行结果:

二、dowhile语句 

do
    循环体
while(表达式);

 实际运用,如:验证用户密码是否正确

  • 若用while语句,流程图如下:

 若用dowhile语句,流程图如下:

while与dowhile语句的区别:

 三、for语句和循环结构

1.形式

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

三个表达式用分号隔开,其中:

  • 表达式1是循环初始化表达式
  • 表达式2是循环条件表达式
  • 表达式3是循环调整表达式

2.打印10次LoveC

代码如下:

#include <stdio.h>

int main()
{
	int count;
	
	for(count = 0;count < 10;count++)
	{
		printf("LoveC!\n");
	}
	
	return 0;
	
}

运行结果:

3.写一个程序:判断一个数是否为素数

提示:

素数:在大于1的自然数中,除了1和此数自身外,无法被其他自然数整除的数。

素数的求法之一:迭代测试从2到num/2所有整数是否能被整除(num为待测试的整数),如果没有出现能被整除的整数,那么它就是素数。

代码如下:

#include <stdio.h>

int main()
{
	int i,num;
	_Bool flag = 1;
	
	printf("请输入一个整数:\n");
	scanf("%d",&num);
	
	for(i = 2;i < num / 2;i++)
	{
		if(num % i == 0)
		{
			flag = 0;
		}
	}
	
	if(flag)
	{
		printf("%d是一个素数!\n",num);
	}
	else
	{
		printf("%d不是一个素数!\n",num);
	}
	
	return 0;
	
}

运行结果:

 

4.for语句的灵活运用

(1)表达式1,表达式2和表达式3可以按照需要进行省略(但分号不能省):

  • for(   ;表达式2 ;表达式3)
  • for( 表达式1 ;表达式2 ; )
  • for( 表达式1 ; ; )
  • for(    ; ; )
  • ……

(2)表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式(即用逗号分隔多个表达式)

代码举例:

#include <stdio.h>

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

运行结果:

 补充:C99新标准

C99允许在for语句的表达式1中定义变量,如:

for (int i = 0; i < 100; i++)

即上面例子的代码可写为:

#include <stdio.h>

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

5.循环嵌套

代码举例:

#include <stdio.h>

int main()
{
	int i,j;
	for(i = 0;i < 3;i++)
	{
		for(j = 0;j < 3;j++)
		{
			printf("i = %d,j = %d\n",i,j);
		}
	}
	
	return 0;
	
}

运行结果:

6.打印九九乘法表

代码如下:

#include <stdio.h>

int main()
{
	int i,j;
	
	for(i = 1;i <= 9;i++)
	{
		for(j = 1;j <= i;j++)
		{
			printf("%d*%d=%-2d  ",i,j,i*j);
		}
		putchar('\n');
	}
	
	return 0;
	
}

运行结果:

 四、break语句和continue语句

1.break语句

负责跳出它所在那层语句的循环,若想跳出外层循环还需再布置一个break语句。

同样是上述素数的那个例子,若输入的数字是100000000,在添加了break语句后,执行效率大大增加,代码如下:

#include <stdio.h>

int main()
{
	long long int i,num;
	_Bool flag = 1;
	
	printf("请输入一个整数:\n");
	scanf("%lld",&num);
	
	for(i = 2;i < num / 2;i++)
	{
		if(num % i == 0)
		{
			flag = 0;
			break; 
		}
	}
	
	if(flag)
	{
		printf("%d是一个素数!\n",num);
	}
	else
	{
		printf("%d不是一个素数!\n",num);
	}
	
	printf("i = %lld\n",i);
	return 0;
	
}

运行结果:

可见,只需执行2次即可得出结果,但若将break语句注释掉,则执行效率大大降低,运行结果如下:

 

2.continue语句

当执行continue语句时,循环体的剩余部分将被忽略,直接进入下一次的循环。

代码举例:

#include <stdio.h>

int main()
{
	int ch;
	
	while((ch = getchar()) != '\n')
	{
		if(ch == 'C')
		{
			continue; 
		}
		
		putchar(ch);
	}
	
	putchar('\n');
	
	return 0;
	
}

运行结果:

 注意

  • 对于嵌套语句,break语句和continue语句都只能作用于一层循环!
  • for语句和while语句并不是完全等价的,它们在执行起来是有区别的:出现continue语句时,while是跳过循环体后边的语句,直接进入下一次的循环。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值