时间:2024.11.5
一、学习内容
流程控制语句:
通过一些语句,控制程序的执行流程。
1、顺序结构
从上往下依次执行,是程序默认的执行过程。
2、if的第一种格式
if(关系表达式)
{
语句体;
}
//考试奖励:
//小明在吃苹果,如果苹果中虫子的数量大于等于1,小明就会扔掉苹果
#include <stdio.h>
int main(){
int n;
scanf("%d\n",&n);
if(n>=1)
{ printf("请扔掉苹果");
}
return 0;
}
3、if的第二种格式
if(关系表达式)
{
语句体A;
}
else
{
语句体B;
}
4、第二种格式的练习
#include<stdio.h>
int main(){
int n;
if(n>=60)
{
printf("同意表白");
}
else{
printf("不同意表白,请向其他人表白");
}
return 0;
}
/*需求:
我和小诗诗一起去看电影
如果在一排连着坐,我会很开心地看电影
如果不是在一排或者没有连着坐,我会开心地打游戏*/#include<stdio.h>
int main(){
int m=5,n=6,a=6,b=7;if((m==a)&&(m==a-1||m==a+1))
{
printf("开心地看电影");
}
else{
printf("开心地打游戏");
}
return 0;
}
5、if的第三种格式
#include<stdio.h>
int main(){
int rank,money;
scanf("%d\n",&money);
if(money>=1&&money<=99)
{
printf("尊贵的VIP1");
}
else if(money>=100&&money<=499)
{
printf("尊贵的VIP2");
}
else if(money>=500&&money<=999)
{
printf("尊贵的VIP3");
}
else if(money>=1000&&money<=1999)
{
printf("尊贵的VIP4");
}
else if(money>=2000&&money<=5000)
{
printf("顶级的VIP5");
}
return 0;
}
6、第三种格式的练习
#include<stdio.h>
int main(){
int s;
scanf("%d\n",&s);
if(s>=85&&s<=100)
{
printf("A");
}
else if(s>=70&&s<=84)
{
printf("B");
}
else if(s>=60&&s<=69)
{
printf("C");
}
else
{
printf("D");
}
return 0;
}
7、switch语句
作用:把所有的选择一一列举出来,根据不同的条件任选其一
#include<stdio.h>
int main(){
int d;
scanf("%d\n",&d);
switch(d)
{
case 1:
printf("跑步");
break;
case 2:
printf("游泳");
break;
case 3:
printf("慢走");
break;
case 4:
printf("动感单车");
break;
case 5:
printf("拳击");
break;
case 6:
printf("爬山");
break;
case 7:
printf("好好吃一顿");
break;
default:
printf("没有这个星期");
break;}
return 0;
}
8、switch语句的细节
9、case穿透
case穿透的规则:
1.还是根据小括号中表达式的结果去匹配对应的case
2.执行对应case里面的代码
3.如果在执行过程中,遇到了break,那么直接结束整个switch但是如果没有遇到break,就会继续执行下面case中的代码,直到遇到break,或者把整个switch中所有的代码全部执行完了,才会结束
4.细节:case穿透只会向下穿,不会回到上面
#include<stdio.h>
int main(){
int d;
scanf("%d\n",&d);
switch(d)
{
case 1:
printf("当前数字是1\n");
break;
case 2:
printf("当前数字是2\n");
break;default:
printf("当前数字是其他\n");
break;}
return 0;
}#include<stdio.h>
int main(){
int d;
scanf("%d\n",&d);
switch(d)
{
case 1:
printf("当前数字是1\n");
break;
case 2:
printf("当前数字是2\n");
//break;default:
printf("当前数字是其他\n");
break;}
return 0;
}
#include<stdio.h>
int main(){
int d;
printf("请输入当前月份:\n");
scanf("%d\n",&d);
switch(d)
{
case 3:
printf("春季\n");
break;
case 4:
printf("春季\n");
break;
case 5:
printf("春季\n");
break;case 6:
printf("夏季\n");
break;
case 7:
printf("夏季\n");
break;
case 8:
printf("夏季\n");
break;case 9:
printf("秋季\n");
break;
case 10:
printf("秋季\n");
break;
case 11:
printf("秋季\n");
break;case 12:
printf("冬季\n");
break;
case 1:
printf("冬季\n");
break;
case 2:
printf("冬季\n");
break;default:
printf("没有这个月份\n");
break;}
return 0;
}
case穿透进行简化后:
#include<stdio.h>
int main(){
int d;
printf("请输入当前月份:\n");
scanf("%d\n",&d);
switch(d)
{
case 3:
case 4:
case 5:
printf("春季\n");
break;case 6:
case 7:
case 8:
printf("夏季\n");
break;case 9:
case 10:
case 11:
printf("秋季\n");
break;case 12:
case 1:
case 2:
printf("冬季\n");
break;default:
printf("没有这个月份\n");
break;}
return 0;
}
#include<stdio.h>
int main(){
int d;
printf("请选择服务:\n");
scanf("%d\n",&d);
switch(d)
{
case 1:
printf("机票查询\n");
break;case 2:
printf("机票预订\n");
break;case 3:
printf("机票改签\n");
break;case 4:
printf("退出服务\n");
break;default:
printf("退出服务\n");
break;}
return 0;
}
10、for循环的基本格式
循环:重复的执行某件事情。
11、for循环的执行流程
12、while循环
13、for和while的区别
14、do...while
二、练习
技巧:
1.循环的开始条件
2.循环的结束条件
3.要重复执行的事情
4.每次循环结束之后,变量i如何改变 i++
1、练习1-正向和反向打印数字
#include<stdio.h>
int main()
{
for(int i=1;i<6;i++)
{
printf("%d\n",i);
}for(int j=5;i>0;j--)
{
printf("%d\n",j);
}return 0;
}
2、练习2-累加求和
#include<stdio.h>
int main()
{
int sum=0;
for(int i=1;i<6;i++)
{
sum+=i;
}printf("sum=%d\n",sum);return 0;
}
3、练习2的细节分析
变量的生命周期:
变量只在所属的大括号中有效
如果每次循环都是操作同一个变量,比如说:累加,变量必须定义在外面;
如果每次循环都是操作一个全新的变量,变量可以定义在循环的里面。
4、练习3-求偶数和
#include<stdio.h>
int main()
{
int sum=0;
for(int i=0;i<=100; )
{
i+=2;
sum+=i;
}printf("sum=%d\n",sum);return 0;
}
或
#include<stdio.h>
int main()
{
int sum=0;
for(int i=1;i<101;i++)
{
if(i%2==0){
sum+=i;}
}printf("sum=%d\n",sum);return 0;
}
5、练习3-统计思想
统计思想:
定义一个变量,在合适的时候自增即可
#include<stdio.h>
int main()
{
int count=0;
int m,n,c,d;
scanf("%d %d",&m,&n);
d=m>n?m:n;
c=m<n?m:n;
for(int i=c;i<=d;i++)
{
if((i%6==0)&&(i%8==0)){
count++;}
}printf("count=%d\n",count);return 0;
}
6、循环算法题1-2的次幂
1.思考循环结束的条件是什么
2.while后的小括号里写的是:什么情况下,循环可以继续进行,跟上面的推断是反过来的
#include<stdio.h>
int main()
{int n;
scanf("%d",&n);while((n>1)&&(n%2==0))
{
n/=2;
}
if(n==1){
printf("yes\n");
}else{
printf("no\n");
}
return 0;
}
7、循环算法题2-折纸问题
#include<stdio.h>
int main()
{float n=0.1;int count =0;
while(n<=8844430.0)
{
n*=2.0;
count++;
}printf("%d\n",count);return 0;
}
8、循环算法题3-整数反转
#include<stdio.h>
int main()
{int n,f;
scanf("%d\n",&n);
int a,b,c;
a=n/100;
b=n/10%10;
c=n%100;
f=a+b*10+c*100;printf("%d\n",f);return 0;
}
9、循环算法题4-平方根
10、循环算法题4和5-回文数和除法计算
#include <stdio.h>
#include<string.h> //strlen函数的头文件 int main()
{ int n; char a[999],b[999]; printf("Please input string: ");scanf("%s",a); //输入字符串 n=strlen(a); //用strlen函数读取字符串长度(长度到\0停止) int i,j;for(i=0,j=n-1;i<n;i++,j--) //循环将字符串a逆序赋值给b b[j]=a[i];for(i=0;i<n;i++) { if(b[i]!=a[i]) break; //判断是否是回文数 } if(i==n) printf("是一个回文数!\n"); //如果从第1位到n都相同 则输出回文数 else printf("不是一个回文数!\n"); return 0;
}
#include<stdio.h>
int main()
{int m,n;
scanf("%d %d",&m,&n);int c=0;
int y;
do{
y=m-n;
c++;}while(y>=n);printf("%d\n",c);
printf("%d\n",y);
return 0;
}