Day 8 初识C语言 3.18

if语句

结构:

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

//多分支

if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3;
#include <stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age);

	if (age < 18)    //只有加上大括号才能写上两条语句,不写括号只能带上一条printf语句。
	{
		printf("青少年\n");
		printf("好好学习\n");
	}
	else if (age >= 18 && age < 30) //不能写成18<=age<30,会从左到右计算后输出真或者假
	{
		printf("青年\n");
	}
	else if (age >= 30 && age < 50)
	{
		printf("中年\n");
	}
	else if (age >= 50 && age < 80)
	{
		printf("中老年\n");
	}
	else if (age >= 80 && age < 100)
	{
		printf("老年\n");
	}
	else
	{
		printf("老寿星\n");
	}
	return 0;
}

用if实现多分枝案例如上。

c语言中0表示假,非零表示真,所以-1也为真。

悬空else

​
#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	

	return 0;
}


#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");
	}

	return 0;
}
//这样就可以明了的看出else匹配的对象。


#include <stdio.h>
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
		{
			printf("hehe\n");
		}
	}
	else
	{
		printf("haha\n");
	}

	return 0;
}
//这样就是和第一个if匹配。

所以说代码风格很重要。比如空格的运用来让数据表达更清楚,良好的语句格式等。

if和条件

if(condition)  //条件满足就返回,否则返回y,但是代码风格较差。
{
    return x; 
}
return y;



if(condition)
{
    return x; 
}
else
{
    return y;
}
int test()
{
	int a = 5;

	if (a)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

int main()
{
	int ret = test();
	printf("ret = %d\n", ret);

	return 0;
}

int main()
{
	int num = 1;

	if (num == 5) //这里如果写成num = 5,那么不会报错,因为整个表达式为真。
                  //写代码时吧常量放在等号左边可以更好的发现错误。  
		printf("hehe\n");

	return 0;
}

switch语句

int main()
{
	int day = 0;
	scanf("%d", &day);//3
	switch (day)
	{
	case 1:
		printf("星期1\n");
		break;   //break的作用是当满足需求后直接跳出循环。所以并不是所有case语句都需要加上break。
	case 2:
		printf("星期2\n");
		break;
	case 3:
		printf("星期3\n");
		break;
	case 4:
		printf("星期4\n");
		break;
	case 5:
		printf("星期5\n");
		break;
	case 6:
		printf("星期6\n");
		break;
	case 7:
		printf("星期天\n");
		break;
    default:
		printf("输入错误\n"); //当不匹配以上常量就会进入default。且default没有位置顺序要求。放哪里都可以。
		break;
	}
	//if (1 == day)
	//	printf("星期1\n");
	//else if (2 == day)
	//	printf("星期2\n");
	//else if (3 == day)
	//	printf("星期3\n");
	//...

	return 0;
}
//看出两者差异。
switch(整形表达式)
{
    语句项;
}

//而case则是

case 整形常量表达式;//必须是整形。
    语句;

switch嵌套

#include <stdio.h>

int main()
{
    int n = 1;
    int m = 2;
    switch (n)
    {
    case 1:    //因为没有break,所以case1,2,3都执行了。
        m++;
    case 2:
        n++;
    case 3:
        switch (n)
        {        //switch允许嵌套使用
        case 1:
            n++;
        case 2:
            m++; n++;
            break;    //这个break只能跳出本身的语句。
        }
    case 4:
        m++;
        break;
    default:
        break;
    }
    printf("m = %d, n = %d\n", m, n);
    return 0;
}

while循环

while(表达式)
    循环语句;
int main()
{
	int  i = 1;
	while (i<=10)
	{
		if (5 == i)
			continue;    //这个cotinue是跳过本次循环,后面代码不会执行。再次进入while循环。

		printf("%d ", i);
		i++;
	}

	return 0;
}

getchar

int main()
{
	int ch = getchar();    //getchar是获取一个字符的。遇到文件结束标志或者读取错误会返回EOF。不要用char类型来接受getchar,因为char类型存不下-1。
	putchar(ch);           //putchar是打印一个字符的。

	return 0;
}

//ctrl + z可以让程序返回一个文件结束标志。




 int main()
{
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s", password);//123456

	
	//方法2

	int tmp = 0;
	while ((tmp = getchar()) != '\n')
	{
		;    //这个分号可以省略。
	}

	printf("请确认密码(Y/N):>");
	int ch = getchar();
	if ('Y' == ch)
		printf("确认成功\n");
	else
		printf("确认失败\n");

    //方法1
	getchar();//不能处理空格,需要方法二。

	while ((ch = getchar()) != EOF)
	{
		putchar(ch);
	}

	while (scanf("%d", &ch) != EOF)
	{
	    printf("%d ", ch);
	}

	return 0;
}

 for循环

int main()
{
	//for循环的判断部分省略了,就意味着判断恒为真
	//for (; ;)
	//{
	//	printf("呵呵\n");
	//}

	int i = 0;
	int j = 0;
	for (; i < 10; i++)    //循环变量不一定是一个也可以是多个。
	{
		//i=0
		//j=0~9,10
		for (; j < 10; j++)
		{
			printf("hehe\n");
		}
	}

	return 0;
}

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

        循环语句;

表达式1

表达式1为初始化部分,用于初始化循环变量的。

表达式2

表达式2为条件判断部分,用于判断循环时候终止。

表达式3

表达式3为调整部分,用于循环条件的调整。

注意

1 for循环不要再体内修改循环变量,防止for循环失去控制。

2 最好用前闭后开的区间写法(<而不是<=)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值