自学C day09-三种分支结构

顺序

说白了就是从上到下执行

选择结构

if语句:满足或者不满足
if(判别表达式){
判别表达式为真,执行代码
}
else{
判别表达式为假,执行代码
}


int main(void) {
	int score;
	printf("请输入学生成绩:");
	scanf("%d", &score);

	if (score <= 100 && score >= 90)
	{
		printf("优秀\n");
	}
	else if(score < 90 && score >= 70)	{
		printf("良好\n");
	}
	else if (score < 70 && score >= 60) {
		printf("及格\n");
	}
	else {
		printf("不及格\n");
	}

	return 0;
}

scanf的4996错误:scanf是不安全的,只要把错误提示里面的宏添加到头上就行了。
这个宏最好放在。c文件的第一行
#define _CRT_SECURE_NO_WARNINGS

//三只小猪称体重
int main(void) {
	int pig1, pig2, pig3;
	printf("请输入三只小猪的体重,用空格分隔:\n");
	scanf("%d %d %d",&pig1, &pig2, &pig3);

	if (pig1 > pig2) {
		if (pig1 > pig3) {
			printf("一号小猪最重,体重为%d\n",pig1);
		}
		else
		{
			printf("三号小猪最重,体重为%d\n",pig3);
		}
	}
	else
	{
		if (pig2 > pig3) {
			printf("二号小猪最重,体重为%d\n", pig2);
		}
		else
		{
			printf("三号小猪最重,体重为%d\n", pig3);
		}
	}
}

switch 分支语句
switch (判别表达式){
case 1:
执行语句1;
break;
case 2:
执行语句2;
break;
。。。
case n:
执行语句n;
break;
default: //上面的东西都没匹配上
break;
}

#include <stdio.h>

int main(void) {
	int score;
	printf("请输入学生成绩:");
	scanf("%d", &score);

	switch (score/10)
	{
		case 10:
			printf("优秀\n");
			break;
		case 9: 
			printf("优秀\n");
			break;
		case 8:
			printf("良好\n");
			break;
		case 7:
			printf("良好\n");
			break;
		case 6:
			printf("及格\n");
			break;
	default:
			printf("不及格\n");
		break;
	}
}

case穿透:
每一个case后面的break就是为了防止case穿透,如果没有写break,那么他会向下继续执行一个case分支

	switch (score/10)
	{
		case 10:
		case 9: 
			printf("优秀\n");
			break;
		case 8:
		case 7:
			printf("良好\n");
			break;
		case 6:
			printf("及格\n");
			break;
	default:
			printf("不及格\n");
		break;
	}
}

if分支是匹配一个范围,属于模糊匹配,case后面一定是一个具体的数,不能是表达式,switch是属于精确匹配

循环

while(这个表达式为真才执行){
循环体
}

敲7游戏:

#include <stdio.h>

int main(void) {
	int num = 1;

	while (num <= 100)
	{
		if ((num % 7 == 0) || (num % 10 == 7) || (num / 10 == 7)) {							//个位含7,十位含7,7的倍数
			printf("敲桌子\n");
		}
		else
		{
			printf("正常数数:%d\n",num);
		}
		num++;
	}
	return 0;
}

dowhile循环:先执行一次循环体,然后在判断是否进行循环
do{
循环体
}while(条件判别表达式)
无论是while还是do-while,判别表达式为真的时候才执行

求水仙花数:
一个三位数,各个位上的数字的立方和=本数字
eg:3的立方+6的立方+7的立方=367,那367就是水仙花数(这个数是瞎编的)
分别用while和do-while循环做水仙花数


int main(void) {
	int num = 100; 
	int ge,shi,bai;
	int sum;

	while (num < 1000) {
		ge = num % 10;				//取出个位
		shi = (num % 100) / 10;
		bai = num / 100;			//取出百位

		if (ge*ge*ge + shi*shi*shi + bai*bai*bai == num)
		{
			printf("水仙花数:%d\n", num);
		}	
		num++;
	}
	/*
	do
	{
		ge = num % 10;				//取出个位
		shi = (num % 100) / 10;
		bai = num / 100;			//取出百位
		if (ge*ge*ge+shi*shi*shi+bai*bai*bai == num)
		{
			printf("水仙花数:%d\n", num);

		}
		num++;
	} while (num < 1000);

	return 0;*/
}

for循环
for(表达式1;表达式2;表达式3){
循环体
}
表达式1执行完执行表达式2,通常2是判别表达式,如果2是真,就执行循环体,2执行完了就执行3,3执行完了再执行2来判断,如果是真就继续做循环体,否则跳出
循环因子:定义在for之外,for循环结束也能使用(这就是全局变量和局部变量作用域的关系)

猜数字游戏:
规则:生成一个随机数:添加一个随机数种子,如果不播种的话后面生成的数是伪随机(无论执行多少次都是第一次生成的那个数):原理:利用系统的时间作为计算基数
#include <time.h>
#include <stdlib.h>
srand(time(NULL)); //这个是标准写法,记下来
int n = rand() %100; //这是生成随机数,和100取余之后就可以限制范围到100以内,不然的话会很大
2、循环输入数据来猜

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
	srand(time(NULL));
	int a = rand()%100;
	int input;

	printf("请输入100以内的数字:\n");
	while (1)
	{
		scanf("%d",&input);
		if (a == input) {
			printf("猜对了,这个数就是:%d\n",a);
			break;
		}
		else if (a < input)
		{
			printf("猜大了,请继续\n");
		}
		else
		{
			printf("猜小了,请继续\n");
		}
	}
	return 0 ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值