C语言是一门结构化的编程语言,分别是三大结构:顺序结构,选择结构,循环结构。顺序结构的意思简单明了就是从头走到尾,从main函数开始到return 0结束。选择结构根据条件判断的结果来决定执行不同的代码块,C语言中有两种主要的选择结构:if-else;switch-case语句。循环结构是在满足特定条件下重复执行一段代码,主要的循环结构有while循环、do-while循环和for循环。
if语句
if
语法:
if(表达式)
//代码块...
C语言中零表示假,非零表示为真,当if后面的表达式结果为0时,代码块将不会执行,反之将执行代码块。
if语句的执行流程图:
案例演示:
根据用户输入判断是否成年
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年了\n");
return 0;
}
输入:19
输出:成年了
当我们用scanf给变量age赋值为19时,此时的变量age>18,表达式为真 就会执行对应的代码。
else
else语句是搭配if语句使用的,当我们一个if语句满足不了我们场景需求时,就需要用到else语句。例如:当变量age>=18时输出成年了,然而age<18的条件没有定义,就可以使用if.....else....语句
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
printf("成年了\n");
else
printf("未成年\n");
return 0;
}
输入:16
输出:未成年
从以上例子我们可以看出,无论是if语句还是else语句,他们都只控制着一条语句,那能不能控制多条语句呢??
当我们想要用if和else控制多个语句(也叫程序块,复合语句)时,出现报错了:”应输入一个语句“,这是因为一个if只能控制一个语句,当我们想要控制多条语句时,我们需要在if后面加上一对大括号{},
int main()
{
int age = 0;
scanf("%d", &age);
if (age >= 18)
{
printf("成年了\n");
printf("可以谈恋爱了\n");
}
else
{
printf("未成年\n");
printf("不可以谈恋爱\n");
}
return 0;
}
输入:18
输出:成年了
可以谈恋爱
if的嵌套
除了if语句和else语句,还有else if语句,表示多重判断。意思是 当第一个if语句不成立,再判断else if语句是否成立,例如以下代码:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if (n == 0)
printf("n = %d\n", n);
else if (n > 0)
printf("n是正数");
else
printf("n是负数");
return 0;
}
else的悬空问题
在很多人看来,当a == 1条件不满足时,就会立即执行else输出你好,但实际上,编译运行后没有任何输出。这就是else的悬空问题,当代码中存在多个ifelse语句,else总是和最近的if匹配,也就是说,后面的的if...else语句是受第一个if语句控制的,当前面的if不满足时,后面的if和else都不会执行。
#include<stdio.h>
int main()
{
int a = 0;
int b = 1;
if (a == 1)
if (b == 1)
printf("hi\n");
else
printf("你好\n");
return 0;
}
将代码修改一下,在if后面加个大括号,更加的通俗易懂了。
#include<stdio.h>
int main()
{
int a = 0;
int b = 1;
if (a == 1)
{
if (b == 1)
printf("hi\n");
else
printf("你好\n");
}
return 0;
}
关系操作符
在C语言中用来比较的表达式被称为“关系表达式”,这些关系表达式的返回值是0或1,比如 10>12为假返回0,12<14为真返回1;通常用于if语句和循环结构。
> //大于
< //小于
== //等等于
>= //大于等于
<= //小于等于
!= //不等于
=和==的区别
=和==所表达的意思是不一样的,=表示赋值,==表示判断。
当我们定义一个变量a初始化为0用于判断,在if语句中,即使a不等于3,在控制台中也照样输出hello C。这是因为,a = 3的意思是将3赋值给变量a,而它的返回值就3,表达式为真,所以就执行了,当然了这并不是我们想要的效果。
#include<stdio.h>
int main()
{
int a = 0;
if (a = 3)
printf("hello C");
return 0;
}
修改:
这样修改就不会执行printf()了
#include<stdio.h>
int main()
{
int a = 0;
if (a == 3)
printf("hello C");
return 0;
}
使用多个关系运算符的注意事项
在日常生活中我们经常能看到这种表达式:12<x<25,表示x在12-25这个范围,举个例子
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (12 < age < 25)
printf("青年小伙子\n");
return 0;
}
我们的需求是当用户输入的年龄在12-25岁之间的时候输出青年小伙子,但是我输入40的时候居然也输出了青年小伙子,40岁怎么可能还是小伙子
标签:语句,int,C语言,循环,printf,main,表达式,分支 From: https://blog.csdn.net/as_dfghjklsudk/article/details/145233324