C语言判断和循环

选择结构

if语句(用于判断的语句)

if语句用于判断,结果为真(1)执行语句,结果为假(0)则不执行

语法

	if(判断语句)
	{
		//结果为真执行语句
	}

实例

判断输入的数和20比较

#include <stdio.h>
int main()
{ 
	int a;
	printf("请输入一个数:");
	scanf("%d",&a);
	if(a > 20)
	{
		printf("a小于20");
	}
	printf("a>20");
	return 0;
}

上述实例中,如果输入的数大于20,则进入语句中执行所需要执行的内容,如果小于则推出判断,执行后面代码

esle if语句

在if语句中加了否定结果的执行
如果结果为真,执行if内语句
如果结果为假,执行else内语句

语法

if(判断语句) //为真执行的内容
{
	//执行语句
}
else //为假执行的内容
{
	//执行语句
}

实例

同样以上述例子来写

#include <stdio.h>
int main()
{
	int a;
	printf("请输入一个数:");
	scanf("%d",&a);
	if(a > 20)
	{
		printf("a大于20");
	}
	else
	{
		printf("a小于20");
	}
}

return 0;

在上述基础上加了else语句是程序便于判断,清晰思路

**注:**如果if或else语句下只有一条执行语句时,大括号可以省去;多条不能省略!!!

嵌套

if语句中套用if语句,在算法中也是常见的

语法

if(判断语句1)
{
   /* 表达式 1 为真时执行 */
   if(判断语句2)
   {
      /* 表达式 2 为真时执行 */
   }
}

实例

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 100;
   int b = 200;
 
   /* 检查布尔条件 */
   if( a == 100 )
   {
       /* 如果条件为真,则检查下面的条件 */
       if( b == 200 )
       {
          /* 如果条件为真,则输出下面的语句 */
          printf("a 的值是 100,且 b 的值是 200\n" );
       }
   }
   printf("a 的准确值是 %d\n", a );
   printf("b 的准确值是 %d\n", b );
 
   return 0;
}

上述代码在执行时,其结果是:

a 的值是 100,且 b 的值是 200
a 的准确值是 100
b 的准确值是 200

switch语句

witch 语句是一种有限制的控制流语句,它用于根据表达式的值执行不同的代码块。

一个 switch 语句允许测试一个变量等于多个值时的情况,每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查

语法

switch()
{
	case 常量1:语句1printf("");
		break;
	case 常量2:语句2printf("");
		break;
		   .
		   .
		   .
	case 常量n:语句n;
		printf("");
		break;
		
	default;
}

实例

#include <stdio.h>
int main()
{
	switch(day)  
	{
		case 1:
			printf("星期一\n");
			break;
		case 2:
			printf("星期二\n");
			break;
		case 3:
			printf("星期三\n");
			break;
		case 4:
			printf("星期四\n");
			break;
		case 5:
			printf("星期五\n");
			break;
		case 6:
			printf("星期六\n");
			break;  
		case 7:
			printf("星期日\n");
			break;
		default:
			printf("请输入1-7");
			break;
	}
	return 0;
}

break:执行完语句后跳出结构,若没有break 则会依次执行剩余语句、
defualt:在break语句执行失败后执行该语句;和if…else语句中的else用法类似

进阶实例

例一

函数计算)函数 y = {x(x<1) 2x-1(1<=x<10) 3x-11(x>=10),在控制台中输入相应程序,得出y的值

#include<stdio.h>
int main()
{
	int x,y;	//开辟内存空间(定义整形变量)
	
	scanf("%d",&x);	//输入函数
	
	if(x<1) 
    	y=x;
	else
	{
		if(x>=1&&x<10)	//嵌套使用
			y=2*x-1;
		else
			y=3*x-11;
	}
	printf("y=%d\n",y);
	
	return 0;
}

例三

分数判断)给出一个百分制成绩,要求输出’A’,‘B’,‘C’,‘D’,'E‘.90分以上为A,8089为B,7079为C,60~69为D,60分以下为E

#include<stdio.h>
int main()
{
	float score;  //定义变量类型
	char grade;  //学生成绩等级分为A,B,C,D,E 
	printf("请输入学生成绩:\n");
	scanf("%f",&score);
	
	if(score>90) 
		printf("该成绩等级为A");
	else if(score<89&&score>80)
		printf("该成绩为等级B");
	else if(score<79&&score>70) 
		printf("该成绩等级为C");
	else if(score<69&&score>60)
		printf("该成绩等级为D");
	else
		printf("该成绩等级为E");
		
	return 0;	
}

例三

排序问题)输入四个整数,依次从小到大排序

#include<stdio.h>
int main()
{
int a,b,c,d,t;

printf("请输入四个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);

if(a>b) 	//先比较再赋值
{
	t=a;
	a=b;
	b=t;
}
if(a>c)
{
	t=a;
	a=c;
	c=t;
}
if(a>d)
{
	t=a;
	a=d;
	d=t;
}
if(b>c)
{
	t=b;
	b=c;
	c=t;
}
if(b>d)
{
	t=b;
	b=d;
	d=t;
}
if(c>d)
{
	t=c;
	c=d;
	d=t;
}

printf("%d,%d,%d,%d",a,b,c,d);

return 0;
}

循环结构

for循环

语法

for(定义变量;条件判断;执行语句)
{
	执行语句
}

实例

#include <stdio.h>
 
int main ()
{
   /* for 循环执行 */
   for( int a = 10; a < 20; a = a + 1 )
   {
      printf("a 的值: %d\n", a);
   }
 
   return 0;
}

上述实例中,for循环定义a的初始值为10,如果a小于20,打印printf然后执行 a = a + 1;

执行结果:

a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 15
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

while循环

语法

while(控制表达式)
{
	执行语句;
}

实例

int n=4; 
while(n>0)
{
    printf("Hello World\n");
    n--;
}

当给定值满足while语句的执行表达式时进入while循环;打印语句执行n–,再次打印;当条件不满足时结束循环

do whlie循环

语法

do
{
  语句序列
}
while
{
(循环控制表达式);
}

实例

#include <stdio.h>
 
int main ()
{
   /* 局部变量定义 */
   int a = 10;

   /* do 循环执行,在条件被测试之前至少执行一次 */
   do
   {
       printf("a 的值: %d\n", a);
       a = a + 1;
   }
   while( a < 20 )
   {
   		;  //空语句
   }
   return 0;
}

嵌套

例一

先来个简单的嵌套练练!

#include <stdio.h>
 
int main()
{
    int i=0;
    int j=0;
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("haha\n");
        }
    }
 
    return 0;
}

例二

1634 = 1* 1* 1* 1 +6* 6* 6* 6 +3* 3* 3* 3 +4* 4* 4* 4

#include <stdio.h>
#include <math.h>
int main()
{
    int i,t;
	float sum;
	
	for(i=1000;i<10000;i++)
	{
		t = i;sum=0;
		while(t)
		{
		  sum+=pow(t%10,4);	
		  t/=10;
		}
		
		if(sum==i)
		{
			printf("%d\n",i);
		}
	}
	
	return 0;
	
}

补充

在上述中讲到了break语句,还有一个continue语句
这两个语句最根本的区别就是break直接跳出当前所在循环,(可以理解为直接到终点站)
而continue跳过本次循环,执行下一循环(可以理解为,中间有一站没有停)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值