C语言中if,while, do-while和for循环用法

C语言中if,while, do-while和for循环用法

if 循环
if(条件成立){
…;
}
else
{
条件不成立;
}

一个基本的if语句由一个关键字if开头,跟上在括号里的一个表示条件的逻辑表达式,然后是一对大括号“{}”之间的若干条语句。如果表示条件的逻辑表达式的结果不是零,那么就执行后面跟着的这对大括号中的语句,否则就跳过这些语句不执行,而继续下面的语句。
if语句这一行结束的时候并没有表示语句结束的“;”,而后面的赋值语句写在if的下一行,并且缩进了,在这一行结束的时候有一个表示语句结束的“;”。这表明这条赋值语句是if语句的一部分,if语句拥有和控制这条赋值语句,决定它是否要被执行。

while循环:
while(条件满足){
…//循环
}

eg:判断一个数是几位?

#include<stdio.h>
int main()
{
	int count=1;
	int a;
	scanf("%d",&a);
	while(a/10){
		count++;
		a=a/10;// a/=10;
	}
	printf("%d\n",count);
	return 0;
} 

或者如下

#include<stdio.h>
int main()
{
	int count=0;
	int a;
	scanf("%d",&a);
	while(a){  //a>0
		count++;
		a=a/10;// a/=10;
	}
	printf("%d\n",count);
	return 0;
} 

do-while 循环:
在进入循环的时候不做检查,而是在执行完一轮循环体的代码之后,再来检查循环的条件是否满足,如果满足则继续下一轮循环,不满足则结束循环
do
{
<循环体语句>
}while(<循环条件>);

eg:判断一个数是几位?

#include<stdio.h>
 int main()
 {
 	int a;
 	int count=0;
 	scanf("%d",&a);
 	do {
 		count++;
 		a/=10;
	 }
	 while(a) ;
	 printf("%d\n",count);
 	return 0;
  } 

for 循环:
for(count=10;count>0;count–)
就读成:对于一开始的count=10,当count>0时,重复做循环体,每一轮循环在做完循环体内语句后,使得count–。

求n!

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

for(i=0;i<n;i++)
则循环的次数是n,而循环结束以后,i的值是n。循环的控制变量i,是选择从0开始还是从I开始,是判断i<n还是判断i<=n,对循环的次数,循环结束后变量的值都有影响。for中每一个表达式都是可以省略的
for(;判断;)=while(判断)
for==while
for(int i=0;i<=n;i++)
{
fact*=i;
}

等价于======
int i=1;
while(i<=n){
fact*=i;
i++;
}

如何选择 循环:
如果有固定的次数,用for
如果必须执行一次,用do-whlie
其他情况用while

break:跳出循环
continue:跳出循环
goto: 从嵌套的循环中跳出,goto out

eg:判断一个数是不是质数

#include<stdio.h>
int main()
{
	int n;
	int isprime=1;
	scanf("%d",&n);
	for(int i=2;i<n;i++)
	{
		if(n%i==0)
		isprime=0;
		break;
	} 
	if(isprime==0)
	printf("不是质数");
	else
	printf("是质数"); 
	return 0;
} 

eg:输出n以内的素数

#include<stdio.h>
int main()
{
	int n;

	scanf("%d",&n);
	for(int j=2;j<=n;j++)
	{
		int isprime=1;
		for(int i=2;i<j;i++)
		{
			if(j%i==0)
			isprime=0;
			break;
		} 
		if(isprime==1)
		{
			printf("%d ",j);
		}

    }
 
	return 0;
} 

//如何用1角,2角和5角的硬币凑出10元以下的金额呢

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<n*10;i++)
	{
		for(int j=1;j<n*10/2;j++)
		{
	 		for(int k=1;k<n*10/5;k++)
	 		{
	 			if(i+j*2+k*5==n*10)	
				 printf("可以用%d个一角和%d个2角和%d个5角得到%d元钱\n",i,j,k,n);	
			 }	
		}
	}
	return 0;
} 

goto从嵌套循环中跳出

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<n*10;i++)
	{
		for(int j=1;j<n*10/2;j++)
		{
	 		for(int k=1;k<n*10/5;k++)
	 		{
	 			if(i+j*2+k*5==n*10)	
				 printf("可以用%d个一角和%d个2角和%d个5角得到%d元钱\n",
                                 i,j,k,n);
                                 goto out;
    }
		}
	}
 out:
	return 0;
} 
  • 17
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值