个人主页:小田爱学编程
系列专栏:c语言从基础到进阶
关注博主,随时获取更多关于c语言的优质内容!
欢迎来到小田代码世界~
喜欢的小伙伴记得一键三连哦 ૮(˶ᵔ ᵕ ᵔ˶)ა
目录
一、分支语句
1.if语句
(1)Tip:短路问题
(2)Tip:if和 eise if的嵌套
(3)Tip:悬空else问题
2.switch语句
二、循环语句
1.while语句
编辑
2.for语句
do-while循环
四、goto语句
五.猜数字游戏
前言:
梳理一下三大结构且做一个实践
举个例子:输入一个整数,判断是否为奇数
#include
int main() { int num=0; scanf("%d",&num); if(num%2=1) { printf("%d是奇数/n",&num); } return 0; } 用一张图清楚的表达出这里面的逻辑,在c语言中0表示为假,非0表示为真,把这个逻辑用到奇数判断就行,判断奇数,首先为数学问题,模2为1则为奇数,然后根据编程思维写出来,利用if语句和scanf函数这个题很简单
else语句
#include
int main()
{
int age = 0;
scanf("%d,&age");
if(age>=18)
{
printf("成年/n";
else
printf("未成年/n");
}
return 0;
}
#include
int main()
{
int year=0;
scanf("%d",&year);
if(year%4=0&&year%100!=0||year%400=0)
{
printf("这个年是闰年/n");
else
printf("不不不/n");
}
return 0;
}
短路问题
里面要特别注意&&这个操作符,记住左边一旦为真,左边即是0
注意:if 语句只能控制⼀条语句,就是 printf("成年了\n"); ,if语句为真,则打印成年了,
int main()
{
int num = 0;
//输入
scanf("%d", &num);
//判断
if (num == 0)
printf("输入的值是0\n");
else if (num > 0)
{
printf("输入的值是正数\n");
}
else{
printf("输入的值是负数\n");
}
return 0;
}
输入一个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:负数
#include
int main()
{
int num=0;
scanf("%d",&num);
if(num>0)
{
if(num%2==0)
printf("偶数/n");
else
printf("奇数/n");
}
else
{
Printf("负数/n");
}
return 0;
}
有的人又要问了:if后不加{}else后不加{}能行吗?if后不加{}else后不加{}能行吗?else总跟最接近的if匹配这样很可能会构成逻辑错误,会把相近的语句进行对齐:悬空else问题
#include
int main()
{
int a = 0;
int b = 0;
if(a==1)
if(b==2)
printf("hehe/n");
else
printf("haha/n")
return 0;
)
#include
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("hehe\n");
}
else
{
printf("haha\n");
}
return 0;
}
如果希望else确实和第⼀个if匹配,可以这样修改。
switch (expression) {
case value1: statement
case value2: statement
default: statement
}
上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,就执行defult的形式。
#include
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
#include
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
case 1:
printf("余数是1\n");
case 2:
printf("余数是2\n");
}
return 0;
}
default :
System.out.println("default");
break;
#include
int main()
{
int i = 1;
while(i<=10)
{
printf("%d ", i);
i = i+1;
}
return 0;
}
while里面的break和continue
#include
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;//当i等于5后,就执⾏break,循环就终⽌了
printf("%d ", i);
i = i+1;
}
return 0;
}
#include
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
//当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅
//因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环
printf("%d ", i);
i = i+1;
}
return 0;
}
for 循环是三种循环中使⽤最多的, for 循环的语法形式如下:
1. for(表达式1; 表达式2; 表达式3)
2. 语句;
练习:在屏幕上打印1~10的值
1 #include
2
3 int main()
4 {
5 int i = 0;
6 for(i=1; i<=10; i++)
7 {
8 printf("%d ", i);
9 }
10
11 return 0;
}
运行结果 1.2.3.4.5.6.7.8.9.10
计算1~100之间3的倍数的数字之和
#include
int main()
{
int i = 0;
int sum = 0;
for(i=1; i<=100; i++)
{
if(i % 3 == 0)
sum += i;
}
printf("%d\n", sum);
return 0;
}
如果能直接产⽣3的倍数的数字就省去了多余的循环和判断
#include
int main()
{
int i = 0;
int sum = 0;
for(i=3; i<=100; i+=3)
{
sum += i;
}
printf("%d\n", sum);
return 0;
}
break和continue
#include
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
break;
printf("%d ", i);
}
return 0;
}
运行结果为1.2.3.4.
break 的作⽤是永久的终⽌循环,未来我们在某个条件发⽣的时候,不想再继续循环的时候,就可以使⽤ break 来完成。
continue
#include
int main()
{
int i = 1;
for(i=1; i<=10; i++)
{
if(i == 5)
continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分
printf("%d ", i);
}
return 0;
}
打印的结果为1.2.3.4.5.6.7.8.9.10
while遇见continue是到判断了
for遇见continue是到循环了
#include
int main()
{
int n = 0;
scanf("%d", &n);
int cnt = 0;
do
{
cnt++;
n=n/10;
} while (n);
printf("%d\n", cnt);
return 0;
}
#include
int main()
{
printf("hehe\n");
goto next:
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
#include
void menu()//设置一个函数,具有返回值
{
printf("*************************/n");
printf("********1.play 0.exit/n");
printf("*******************************/n");
}
void game()
{
int r = rand() % 100 + 1;//生成一个随机数,为了提高代码运行的效率,所以缩短范围,采用模100+1出来的为0-100之间的数
int guess = 0;
while (1)//采用while语句进入循环
{
printf("猜一下数字:");
scanf("%d" ,& guess);
//使用if语句进行判断
if (guess > r)
{
printf("猜大了/n");
}
else if (guess < r)
{
printf("猜小了/n");
}
else
{
printf("恭喜你,你成功了");
break;
}
}
}
//开始游戏
int main()
{
int input = 0;//开始游戏,需要值的启动,设置初始化变量)
//因为随机数生成与种子有关,所以采用time返回值为时间戳,种子会一直变化,unsigned进行强制转换为整型
srand((unsigned int)time(NULL));
//一开始就要进行循环,选择do while语句
{
menu();//引入一个函数,就是菜单
printf("请选择数字");
scanf("%d", &input);//输出一个值,在vs中要么用scanf-s,要不然在第一行定义
switch (input)//使用case语句
{
case 1:
game();
break;//跳出循环
case 0:
printf("游戏结束,请去打王者荣耀");
break;
default://其他情况
printf("输入错误,重新输入/n");
break;
}
} while (input);
return 0;
}
今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下,您的支持就是我前进的动力!