DAY5

一、switch····case分支

C语言的结构

  1. 顺序结构
  2. 循环结构
  3. 分支结构

【1】格式

switch(变量)

{

case 常量表达式:

语句块1;

break;

case 常量表达式:

语句块2;

break;

····

case 常量表达式:

语句块n;

break;

default:

语句块n+1;

break;

}

switch和后面括号内的内容是,选择的变量,case后面的常量表达式,就是switch后面的变量可能出现的情况。 哪个case后面的常量是变量的结果,就执行哪个case后面的代码块。

switch···case的执行逻辑

进入switch···case判断变量的结果,和case后的常量表达式判断,走满足的case后面的分支,

如果一个case后面没有break,执行完该case后会顺序向后执行下面的case/switch···case语句,

default的作用,如果不关心其他分支,就写一个default,其他分支就走default

使用switch···case的注意事项

1、switch后面的变量只能是char/int

2、如果不加break会顺序向后执行,叫做case击穿

3、case的顺序,不会影响程序的执行

4、default的位置也不会影响程序的执行,只有所有case都不满足时,才会走default分支

5、case击穿可以根据使用场景的不用利用起来。

练习:

1、终端输入学生成绩,输出成绩等级,[100,90]A,(90,80]B,(80,70]C,(70,60]D,(60,0]不及格,使用switch····case完成。

 

 

 2、使用switch···case完成简易计算器功能(+、-、*、/、%),如3+5输出8,只完成个位数的计算

 

 

3、终端输入年月日,输出是这一年的第几天,如2023.3.1输出60,需要考虑闰平年,2月闰年29,平年28。

1 3 5 7 8 10 12 都是31天

#include <stdio.h>

int main(int argc, const char *argv[])

{

int year,month,day;

scanf("%d%d%d",&year,&month,&day);

switch(month)

{

case 12: day = day+30;

case 11: day = day+31;

case 10: day = day+30;

case 9: day = day+31;

case 8: day = day+31;

case 7: day = day+30;

case 6: day = day+31;

case 5: day = day+30;

case 4: day = day+31;

case 3: //day = day+28;

//二月统一+28天,在switchcase外判断闰平年再加1

//在switch```case的里面嵌套if判断

if(year%4==0&&year%100!=0||year%400==0)

{

day = day + 29;

}

else

{

day = day+28;

}

case 2:

day = day+31;

case 1:

break;

}

/*if(year%4==0&&year%100!=0||year%400==0)

{

day+=1;

}*/

printf("%d\n",day);

return 0;

}

二、while循环

【1】格式

 

【2】练习

1、使用while循环输出5行helloworld。

#include <stdio.h>int main()
{
int i = 2 ;

while(i<=10)

{
printf ("hello world\n" );

i+=2;
//让循环变量每次自增2
}
}

2、1-100中的偶数

include <stdio.h>
int main(int argc, const char *argv[])

{
int i = 1;//循环变量的初始值

while(i<=100)
{
if(i%2==0)

{
printf("%d是偶数\n",i);
}
i++;//改变循环变量的语句/步长:循环变量的改变方式
}
return 0;
}

#include <stdio.h>
int main( int argc, const char *argv[])

{
int i = 2;

while( i<=100)

{
printf( "%d \n" ,i);

i+=2;//i的步长是2
}
return 0;
}

3、求1-100的和,5050。

include <stdio.h>
int main(int argc, const char *argv[])

{
int i = 1, sum =0;//分别给循环变量和su
while(i<=100)
{
sum+=i;
i++;//改变循环变量
}
printf("%d \n" , sum);

return 0;

}

4、输出100-999内的所有水仙花数,(各位的三次方相加等于该数)

使用pow函数,需要加编译选项-lm。

#include <stdio.h>

#include <math.h>
int main( int argc, const char *argv[])

{
int num = 100 , a,b,c;
while( num<=999)//while(i<1000)

{
a = num/ 100;

b = num/10%10;

c = num%10;
if( pow( a , 3 )+pow(b,3 )+pow( c, 3 )==num)// pow的使用方式pow(数,幂次),gcc -lm

{
printf("%d是一个水仙花数\n" , num) ;
}
num++;
}

return 0;}

5、猴子吃桃问题,猴子第一天摘了若干个桃,

当即就吃了一半的桃,没过瘾,又多吃一个

第二天,在剩下的桃里吃了一半的桃,没过瘾,又多吃一个

依次类推,知道第10天,猴子发现只剩一个桃了。

问:猴子第一天摘了几个桃子。

#include <stdio.h>
int main( int argc,const char *argv[]){
int peach = 1, i=9;//i进入循环时是第9天,第9天的桃子数才需要去计算

while(i>=1)//循环进行9次
{
peach=(peach+1)*2;

i--;//改变循环变量
}
printf("%d\n" , peach) ;
return 0;
}

三、for循环

【1】格式

【2】练习

1、求1-100内奇数的和。

#include <stdio.h>
int main( int argc, const char *argv[])

int i, sum=0;
for(i=1;i<=100 ;i++)//i=1,只会执行一次,i++执行的次数和循环次数一致

{
if( i%2!=O)

{
sum+=i;
}
}
//循环结束,说明奇数和求完了

printf("%d\n" , sum) ;
return 0;
}

2、终端输入一个数,求该数的所有因子,如12,输出1 2 3 4 6 12

 3、输出下三角的九九乘法表

#include <stdio.h>
int main( int argc, const char *argv[])

{
int i,j;
for(i=1;i<=9 ;i++)//外层循环控制行数{
for(j=1;j<=i;j++)//内层循环控制每行打印的列数

{
printf("%d*%d=%d\t",j,i,i*j);
}
printf( "\n"); //每一行打印完输出换行
}
return 0;
}

4、终端输入行数,打印直角三角形

 

四、辅助控制关键字

return break continue

【1】break

break只能用在循环和switch···case中

break用在循环中,表示退出本层循环。

 

 

 

【2】continue

退出本层本次循环

continue放在while中时,需要把修改循环变量的语句放在continue的上面

【3】return

退出当前函数

作业:

  1. 整理思维导图
  2. while循环的练习用for循环做一遍,桃子数的不需要
  3. for循环的练习用while写一遍
  4. 51作业我会在这个文件夹里新建一个笔记,大家记得查看,晚一点更新。

while:

 

 

 

 for:

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值