2025 0707作业

Part 1 思维导图整理

一.c中的三大结构

        1.顺序结构

        2.分支结构

        3.循环结构

二.if分支结构

        1.if单分支结构

                a.格式

if(表达式)
{
    //表达式为真执行的语句块
}

                b.逻辑:当表达式成立的时候,执行{}内的语句块

                c.例子:判断是否为偶数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	int num = 4;
	if(num%2==0)//用于判断偶数
	{
		printf("%d是一个偶数\n",num);
	}
	return 0;
}

        2.if双分支语句

                a.格式

if(条件1)
{
    //满足条件1执行的语句块;
}
else
{
    //不满足条件1执行的语句块;
}

                b.逻辑:当if条件成立时执行{}内的语句块,否则执行else{}里面的语句块

                c.例子:判断奇数偶数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, const char *argv[])
{
	int num = 3;
	if(num%2==0)//用于判断偶数
	{
		printf("%d是一个偶数\n",num);
	}
    else
    {
        printf("%d是一个奇数\n",num);
    }
	return 0;
}

        3.if的注意事项

                a.if的格式要写对,不能在if的后面加;不然后面的内容与if语句无关

                b.if后面加多条语句,语句块必须要用{}

                c.else前面必须得有一个if

        4.if多分支结构

                a.格式:

if(条件1)
{
    //满足条件1执行的语句块;
}
else if(条件2)
{
    //不满足条件1,但是满足条件2,执行的语句块
}
else 
{
    //不满足条件1也不满足条件2,执行的语句块
}

        b.逻辑:if条件满足时,运行{}内的语句块,否则查看条件二,若满足则运行else if{}内的语句块,若条件二也不满足,则执行else{}内的语句块(可以添加多个else if)。

        c.例子:通过输入g(绿灯)r(红灯)y(黄灯),并产生对于输出

#include <stdio.h>
int main(int argc, const char *argv[])
{
	char light;
	scanf(" %c",&light);
	if(light=='r')
	{
		printf("红灯,不能走\n");
	}
	else if(light=='g')
	{
		printf("绿灯,可以走\n");
	}
	else
	{
		printf("黄灯,等一等\n");
	}
	return 0;
}

        5.嵌套if

                a.格式

if(条件1)
{
    if(条件2)
    {
        //既满足条件1也满足条件2执行的语句块    
    }
    else
    {
        //满足条件1但是不满足条件2执行的语句块    
    }
}
else
{
    //不满足条件1执行的语句块
}

                b.逻辑:先判断条件一,符合则判断条件二,符合则输出条件二{}内的语句块,否则输出条件二下的else{}内的语句块,若不符合条件一,则输出else{}内的语句块。

三.switch ... case分支

        1.格式

        

switch(变量名)
{
    case 常量表达式1:
        //当常量表达式1的值和变量值相同时执行的语句块
        break;
    case 常量表达式2:
        //当常量表达式2的值和变量值相同时执行的语句块
        break;
·······
    case 常量表达式n:
        //当常量表达式n的值和变量值相同时执行的语句块
        break;
    default:
        //当上述常量表达式的值和变量值都不想同时,执行default后面的语句
        //switch···case中的最后一条分支,break可以加也可以不加
}

        2.逻辑:当变量名的值等于常量表达式的值时,则执行该case下的语句块。

        3.例子:

include <stdio.h>
int main(int argc, const char *argv[])
{
    int a = 90;
    switch(a)
    {
    case 12:
        printf("a==12\n");
        break;
    case 1:
        printf("a==1\n");
        break;
    case 90:
        printf("a==90\n");
        break;
    default:
        printf("没有情况满足\n");
        break;
    }
    return 0;
}

          4.注意事项

                a.是对()中的值进行判断,与哪个case后面的值相等,就运行该case的语句块

                b.default是执行所有case值和变量值都没对上的时候,所执行的语句块。

                c.switch()中不能填变量

                d.case后面的值不能重复

                e.break作用是退出switch...case语句

                f.只能判断,整形和字符型的量

        5.case击穿

                指case语句块写完没有加上break;,会直接进入下一个case的语句块进行执行。

 

Part 2.终端输入一个三位数,判断是否为水仙花数。水仙花数:个位三次方+十位三次方+百位三次方 == 本身

#include<myhead.h>

int main(int argc, const char *argv[])
{
	int a,g,s,b;
	printf("请输入一个三位数\n");
	scanf(" %d",&a);
	g = a % 10;//得到个位
	s = a / 10 % 10;//得到十位
	b = a / 100;//得到百位
	if (b*b*b + s*s*s + g*g*g == a)
	{
		printf("是水仙花数\n");
	}
	else
	{
		printf("不是水仙花数\n");
	}
	return 0;
}

 

Part 3.输入年月日,判断是这年的哪一天,考虑闰平年(可以switch内嵌套if,参考part4)

#include<myhead.h>

int main(int argc, const char *argv[])
{
	printf("请输入年月日\n");
	int y,m,d,day=0;
	scanf("%d年%d月%d日",&y,&m,&d);
	if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)//闰年
	{
		switch(m-1)
		{
			case 12:
				day += 31;
			case 11:
				day += 30;
			case 10:
				day += 31;
			case 9:
				day += 30;
			case 8:
				day += 31;
			case 7:
				day += 31;
			case 6:
				day += 30;
			case 5:
				day += 31;
			case 4:
				day += 30;
			case 3:
				day += 31;
			case 2:
				day += 29;
			case 1:
				day += 31;
		}
	}
	else
	{
		
		switch(m-1)
		{
			case 12:
				day += 31;
			case 11:
				day += 30;
			case 10:
				day += 31;
			case 9:
				day += 30;
			case 8:
				day += 31;
			case 7:
				day += 31;
			case 6:
				day += 30;
			case 5:
				day += 31;
			case 4:
				day += 30;
			case 3:
				day += 31;
			case 2:
				day += 28;
			case 1:
				day += 31;
		}
	}
	printf("%d年%d月%d日是该年第%d天\n",y,m,d,day+d);
	return 0;
}

 

Part 4.输入年月,判断这个月有几天,考虑闰平年

#include<myhead.h>

int main(int argc, const char *argv[])
{
	printf("请输入年月\n");
	int y,m,day;
	scanf("%d年%d月",&y,&m);
	switch(m)
	{
	case 12:
		day = 31;
		break;
	case 11:
		day = 30;
		break;
	case 10:
		day = 31;
		break;
	case 9:
		day = 30;
		break;
	case 8:
		day = 31;
		break;
	case 7:
		day = 31;
		break;
	case 6:
		day = 30;
		break;
	case 5:
		day = 31;
		break;
	case 4:
		day = 30;
		break;
	case 3:
		day = 31;
		break;
	case 2:
		if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)//闰年
		{
			day = 29;
		}
		else
		{
			day = 28;
		}
		break;
	case 1:
		day = 31;
		break;
	}			
	printf("%d年%d月该月有%d天\n",y,m,day);
	return 0;
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值