分支语句与循环语句(1)

语句

定义:
c语言中有一个分号,隔开的就是一条语句。
分类:
顺序语句
选择语句

  • if语句
#include<stdio.h>
#include<stdbool.h>
void main()
{
	bool flag = true;
	if (!flag)
		printf("OK\n");
	else
		printf("Error\n");
}

得到

Error

判断一个数是否为奇数
输出1-100之间的奇数

  • switch语句:常用于多分支的情况
    枚举法
 #include<stdio.h>

void main()
{
	int day = 0;
	switch (day)
	{
		case 1:
			printf("星期一\n");
			break;//day=1时,当break不存在时,就会将星期二同时输出,直到有一个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("day错误,请重新输入...\n");
			break;


	}
	return 0;
}

结果:

day错误,请重新输入...

输入年份与月份,输出具体天数

```bash
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
	int year,month,days;
	while (1) 
	{
		printf("input year and month:>");
		scanf("%d %d",&year,&month);
		switch (month)
		{
		case 1:
			days = 31;
			break;
		case 2:
			if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
				days = 29;
			else
				days = 28;
			break;
		case 3:
			days = 31;
			break;
		case 4:
			days = 30;
			break;
		case 5:
			days = 31;
			break;
		case 6:
			days = 30;
			break;
		case 7:
			days = 31;
			break;
		case 8:
			days = 31;
			break;
		case 9:
			days = 30;
			break;
		case 10:
			days = 31;
			break;
		case 11:
			days = 30;
			break;
		case 12:
			days = 31;
			break;
		}

		printf("%d年的%d月有:%d天\n", year, month, days);
	}

}

简化后

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void main()
{
	int year,month,days;
	while (1) 
	{
		printf("input year and month:>");
		scanf("%d %d",&year,&month);
		switch (month)
		{
		case 1:
		case 3:	
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			days = 31;
			break;
		case 2:
			if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
				days = 29;
			else
				days = 28;
			break;
		
		case 4:
		case 6:
		case 9:
		case 11:
			days = 30;
			break;
		default:
			printf("输入错误,请重新输入....\n ");
				break;
		}
		printf("%d年的%d月有:%d天\n", year, month, days);
	}

}

循环语句——for语句,while语句,do_whlie语句
(for循环用于循环次数确定,while循环用于循环条件一定时,do_while循环用于不论循环条件是否满足,都要执行至少一次)
for循环

#include<stdio.h>

void main()
{
	int ar[] = { 1,2,3,4,5,3,6,7,8,9,3,3,3,3,2,1 };
	int n = sizeof(ar) /sizeof(ar[0]);
	for (int i = 0; i < n; i++)
	{
		printf("%d", ar[i]);
	}
	printf("\n");
}

while循环

#include<stdio.h>

void main()
{
	int ar[] = { 1,2,3,4,5,3,6,7,8,9,3,3,3,3,2,1 };
	int n = sizeof(ar) /sizeof(ar[0]);
	int i = 0;
	while (i < n)
	{
		printf("%d", ar[i]);
		i++;
	}
	printf("\n");
}

do_while循环

#include<stdio.h>

void main()
{
	int ar[] = { 1,2,3,4,5,3,6,7,8,9,3,3,3,3,2,1 };
	int n = sizeof(ar) /sizeof(ar[0]);
	int i = 0;
	do
	{
		printf("%d", ar[i]);
		i++;
} 
	while (i < n);
	printf("\n");
}

break在while循环中的作用:在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。所以,while中的break是用于永久终止循环的。
continue是用来终止本次循环,也就是本次循环中continue后面的代码不会执行,而是直接跳转到while语句的判断部分,进行下一次循环的入口判断。
例题
输入数字进行加减计算

  #define _CRT_SECURE_NO_WARNINGS
#include<stdbool.h>
#include<stdio.h>
int Add(int a, int b)
{
	return a + b;
}
int Sub(int a, int b)
{
	return a - b;
}
int Mul(int a, int b)
{
	return a * b;
}int Div(int a, int b)
{
	return a / b;
}int Mod(int a, int b)
{
	return a  % b;
}


void main()
{
	int select = 1; 
	int op1, op2 ,result;
	while (select)
	{
		printf("*****************************\n");
		printf("*[1]Add        [2]Sub       *\n");
		printf("*[3]Mul        [4]Div       *\n");
		printf("*[5]Mod        [0]Quit      *\n");
		printf("*****************************\n");
		printf("请选择:>");
		scanf("%d", &select);
		if (select == 0)
			break;
		printf("请输入op1和op2:>");
		scanf("%d %d", &op1, &op2);
		switch (select)
		{
		case 1:
			result = Add(op1, op2);
			break;
		case 2:
			result = Sub(op1, op2);

			break;
		case 3:			
			result =Mul (op1, op2);

			break;
		case 4:
			result = Div(op1, op2);

			break;
		case 5:
			result = Mod(op1, op2);

			break;
		default:
			printf("输入的cmd有误,请重新输入....\n");
			break;
		}
		printf("result=%d\n", result);
	}
	printf("系统退出\n");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值