C语言中的选择语句和循环语句

在C语言中有两个选择语句:if语句、swtich语句。

if语句(不做详细讲解)

if(表达式)
{
语句1;
}else{
语句2;
}

switch语句

swtich(表达式)
{
case 常量1:语句1:break;
case 常量2:语句2:break;
case 常量3:语句3:break;
case 常量n:语句n:break;
defualt: 语句n+1;break;(此处break可有可无)
}

说明:
1、switch后面括号内的表达式必须为整数类型(包括字符)。
2、case后面的必须为常量或者常量表达式且常量或常量表达式不可以相等。
(敲黑板)3、case标号只起标记作用,在寻找的匹配的之后,不在进行此检查,既找到标号后,就从此标号开始执行,不在进行表达式和常量表达式的判断。(这也是为什么在case语句后面必须要加break 的原因,在下面的代码中会进行解释)
break的作用是跳出当前循环,或者switch语句。

我们可以用上述的两种选择语句做一个简单的四则运算计算器,代码如下

int ADD_INT(int a, int b)//加法
{
	return a + b;
}
int DIV_INT(int a, int b)//除法
{
	if (0 == b) return false;
	return a / b;
}int REC_INT(int a, int b)//减法
{
	return a -b;
}int MUL_INT(int a, int b)//乘法
{
	return a * b;
}
void main()
{
	int a, b, z;
	char c;
	printf("请输入你所要进行的操作\n");
	scanf("%d%c%d",&a,&c,&b);
	bool tag = 0;//计算成功与否判断标记
	if (c = '+')
	{
		z = ADD_INT(a, b);
	}
	else if (c = '-')
	{
		z = REC_INT(a, b);
	}
	else if (c = '*')
	{
		z = MUL_INT(a, b);
	}
	else if (c = '/')
	{
		z = DIV_INT(a, b);
		tag = 1;
	}
	if (tag = 0)
	{
		printf("输入错误");
	}
	printf("=%d\n", z);
}

tag的作用是:如果在程序输入运算符错误时,计算无法进行则z无值,在输出z时编译器会发生错误,无法输出z的值。
用switch语句实现

int calc()
{
	int a, b; char c;
	printf("请输入你所要进行的操作\n");
	scanf("%d%c%d", &a,&c,&b);
	switch (c)
	{
	case '+':printf("计算结果为%d", a + b); break;
	case '-':printf("计算结果为%d", a - b); break;
	case '*':printf("计算结果为%d", a * b); break;
	case '/':if (0 != b)
		return false;
			 else
				 return a / b;
		break;
	default:printf("计算失败");
	}
	return 0;
}

C语言中有三种循环语句:for语句,while语句,do,whlie语句

while语句

while(条件表达式)
{
循环体
}

当循环条件表达式为真(即给定的条件成立),就执行循环体语句。

do…while语句

do{
语句
}while(条件表达式)

循环条件和while循环条件一致。

for语句

for(语句1;条件表达式;语句2)
{
循环体
}

语句1:初始条件只执行一次,可以零个,也可以是多个。
条件表达式:循环的条件,判断是否跳出循环。在每次执行循环体前执行条件表达式,决定是否循环。
语句2:作为循环的调整。

举个例子

	for (int i = 0; i < 10; i++)
	{
		printf("%d\t", i);
	}

代码的执行顺序语句1->条件表达式->循环体->语句2->条件表达式->循环体->语句2…

我们可以用while优化上述代码

int calc()
{
	int x, y, z;
	bool tag = 1;
	char op;
	char ch;
	do
	{
		printf("input data operator data \n");
		scanf("%d %c %d", &x, &op, &y);
		switch (op)
		{
			tag = true;
			case '+': z = ADD_INT(x, y); break;
			case '-': z = REC_INT(x, y); break;
			case '*': z = MUL_INT(x, y); break;
			case '/': z = DIV_INT(x, y); break;
			default:
				printf("operator input error\n");
				tag = false;
				break;
		}
		if (tag)
		{
			printf("=> %d \n", z);
		}
		printf("是否继续 (y/n) \n");
		scanf("%c", &ch);
	} while (ch == 'y' || ch == 'Y');

}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值