(Linux)嵌入式打卡第五天

逻辑语句

双分支结构: if / else 语句

格式:

if (条件)

{

code1;

}

else

{

code2;

}

语法含义:

判断condition条件是否成立。

如果条件为真:执行code1的代码;

如果条件为假:执行code2的代码。

#include <stdio.h>

int main()
{
    // 1.定义一个变量,用来记录身高
    int height = 0;

    printf("please input your height >> ");
    scanf("%d", &height);

    // 2.判断身高
    if (height >= 120)
    {
        puts("成年人,还想逃票?");
    }
    else 
    {
        printf("小朋友去动物园不需要买票!\n");
    }


    return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	char ch = 0;
	ch = getchar();

	if(ch >= 'A' && ch <= 'Z')
	{
		printf("ch = %c\n",ch + 32);
	}
	else
	{
		printf("ch = %c\n",ch - 32);
	}

	return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int ba = 0;
	int seat = 0;
	printf("请输入你的余额:");
	scanf("%d",&ba);

	if(ba>2)
	{
		printf("乘客请上车。\n");
		printf("是否有座位:");
		scanf("%d",&seat);
		if(seat == 1)
		{
			printf("好好坐好,享受旅程!\n");
		}
		else
		{
			printf("还是站好吧!\n");
		}
	}
	else
	{
		printf("您该充值了。\n");
	}

	return 0;
}

多分支:if else 

当判断条件不止一个,就用if ...else.... if....else....。

格式:

if(condition1)

{

code1;

}

else if(condition2)

{

code2;

}

''''''

else if(condition N)

{

codeN;

}

else

{

code;

}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int score = 0;
	printf("please input your score >>");
	scanf("%d",&score);


	if(85 <= score && score <= 100)
	{
		putchar(65);
	}
	else if(75 <= score && score < 85)
	{
		putchar(66);
	}
	else if(60 <= score && score < 75)
	{
		putchar(67);
	}
	else 
	{
		putchar(68);
	}
	putchar(10);

	return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int a = 0,b = 0,c = 0;
	scanf("%d",&a);
	scanf("%d",&b);
	scanf("%d",&c);
	if((a+b)>c && (a+c)>b && (b+c)>a)
	{
	    if(a == b && a == c)
		{
			printf("等边三角形\n");
		}
		else if(a==b || a==c || b==c)
		{
			printf("等腰三角形。\n");
		}
		else if(((a*a + b*b) == c*c)||((b*b + c*c) == a*a) || ((a*a + c*c) == b*b))
		{
			printf("直角三角形\n");
		}
		else
		{
			printf("普通三角形\n");
		}
	}
	else 
	{
		printf("不是三角形。\n");
	}

	return 0;
}

多分支语句:switch ....case....

itch...case....运行速度 > if .... else if .... else ,能使用switch...case.... 尽量使用switch....case....

switch..case格式: 
    switch (表达式)
    {
        case 常量/常量表达式1:
            代码块;
            break;
        case 常量/常量表达式2:
            代码块;
            break;
        .....
        default: 
            其他分支结构;
            break;                        
    }
注意: 
   <1>. switch 后面的表达式,可以是变量,也可以是一个完整的表达式.
           一般这个结果都是一个整数.不可以是 float/double浮点数据.
           
   <2>. case 后面的内容一定是一个常量.case后面的表达式内容就是switch表达式    
        可能出现的结果. 
            case 对于 语句来说,属于入口.
                                             
   <3>. break 相当于 switch..case语句中的出口, 如果没有break, case进入之后
       就会一直执行, 直到遇见break 或者 switch case这个语句结束. (case击穿)
           
   <4>. default语句: default分支相当于 if..else 语句中的else部分.   
       defalult无论在switch..case当中的那一个位置,都是最后进行判断的. 
       default如果不写 break 也会发生case击穿.
                                                  

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int score = 0;
	printf("please input your score >>");
	scanf("%d",&score);

	switch(score / 10)//根据十位数字分班
	{
		case 10:
		case 9:
		case 8:
			putchar('A');
			break;  //case击穿
		case 7:
			putchar('B');
			break;
		case 6:
			putchar('C');
			break;
		default:   //相当于if...else...的else
                   //无论在哪个位置,都是最后一个执行
                   //如果放在前面,不写break也会击穿。
			putchar('D');
			break;
	}
	putchar(10);

	return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int year = 0,mouth = 0;
	scanf("%d%d",&year,&mouth);

	switch(mouth)
	{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			printf("31天\n");
			break;
		case 4:
		case 6:
		case 9:
		case 11:
			printf("30天\n");
			break;
		case 2:
			if((((year%4) == 0)&&((year%100 )!= 0))||((year%400)==0))
			{
				printf("28天\n");
			}
			else
			{
				printf("29天\n");
			}
			break;
		default:
			printf("出错\n");
			break;

	}

	return 0;
}

循环语句

c语言的循环:一直循环做某事,直到条件不允许为止。

循环语句格式:

    1. while 循环
    2. do ... while ... 循环
    3. for 循环

while循环

while(condition)

{

code;

}

判断condition条件是否成立,成立就执行code直到不满足条件。

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int number = 0,i = 0;
	while(i < 100)
	{
		i++;
		number = number + i;
	}
	printf("sum = %d\n",number);

	return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int i = 0;
	while(i < 99)
	{
		i++;
		if((i % 7) == 0)
		{
			printf("过!  \n");
		}
		else if((i % 10) == 7)
		{
			printf("过!  \n");
		}
		else if((1 / 10) == 7)
		{
			printf("过!  \n");
		}
		else
		{
			printf("%d \n",i);
		}
	}
	putchar(10);

	return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	unsigned int number = 0;
	int i = 0;
	int count_0 = 0;
	int count_1 = 0;

	scanf("%d",&number);

	while(i < 32)
	{
		if((number & 0b1) == 0)
		{
			count_0++;
		}
		else
		{
			count_1++;
		}
		number = number>>1;
		i++;
	}
	printf("count_0 = %d,count_1 = %d\n",count_0,count_1);

	return 0;
}


int main(int argc, const char *argv[])
{
	int i = 100;

	while(i <= 999)
	{
		int a = i%10;
		int b = i/10%10;
		int c = i/100;

		if(((a*a*a)+(b*b*b)+(c*c*c))==i)
		{
			printf("水仙花数字%d\n",i);
		}
		i++;
	}


	return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int a = 1;
	int b = 1;
	int i = 2;
	int c = 0;
	printf("%d %d ",a,b);
	while(i < 20)
	{
		c = a + b;
		printf("%d ",c);
		a = b;
		b = c;
		i++;
	}
	putchar(10);
	return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int line = 1;
	int j = 1;

	while(line <= 5)
	{
		while(j <= line)
		{
			printf("*");
			j++;
		}
		printf("\n");
		line++;
		j = 1;
	}

	return 0;
}

for循环

for 循环也是C语言中循环语句的一种. for 循环的使用场景与while使用的场景是一样的. 但是他们之间的格式有些不一样的.

// while 循环:   int i = 0 初始条件    condition     i++ 条件改变语句.

for 循环将循环相关的内容存放同一行中:
格式: 
    for(表达式1; 表达式2; 表达式3)
    {
        code; // 循环体.    
    }
    
for循环执行逻辑: 
    <1>. 先执行表达式1; (表达式1里面的内容就是 while循环中的初始条件. eg int i = 0)
    <2>. 执行表达式2(判断条件); 
            a. 判断条件为真: 执行循环体,执行表达式3(条件改变语句 i++), 重复步骤2直到不满足条件为止.
            b. 判断条件为假: 跳出循环. 
#include <stdio.h>


int main()
{
    // 1.target: 使用for循环向女朋友道歉;
    /*
     int i = 0;
    
     while (i < 100)
     {
        printf("i am so sorry\n");
        i++;
     }
     */

    for(int i = 0; i < 100;  i++)
    {
        printf("对不起, 我错了, 我再也不敢了\n");
    }


    return 0;
}

#include <stdio.h>

int main(int argc, const char *argv[])
{
	int num = 0;
	int a = 1,b = 1,c = 0;
	
	scanf("%d",&num);
	for(int i = 1;c < num ; i++)
	{
		c = a + b;
		a = b;
		b = c;
		printf("c = %d\n",c);
	}
		if(c == num)
		{
			printf("%d 是斐波那契数字。\n",num);
		}
		else
		{
			printf("%d 不是斐波那契数字。\n",num);
		}


	return 0;
}
#include <stdio.h>

int main(int argc, const char *argv[])
{
	for(int i = 0;i < 5; i++)
	{
		for(int j = 0;j < 5-i-1; j++)
		{
			printf(" ");
		}
		for(int k = 0 ; k <= i; k++)
		{
			printf("*");
		}
		putchar(10);
	}


	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值