目录
前言
现实生活中完成一件事情无外乎三种情况:
- 按照怎样的顺序去执行----顺序
- 遇到选择了如何去选择----分支
- 某件事可能要多做几次----循环
编程也是一样,最基本的结构就是这三种情况。
顺序
#include<stdio.h>
int main(void)
{
int num;//创建变量
scanf("%d",&num);//输入变量的值
return 0;
}
上述代码中,我们需要先创建变量,再使用它,而不能使用完它再创建,这就是顺序。
循环
-
什么是“真” 什么是“假”
C语言规定:0为“假”,其他的数字为“真”。
如果一个表达式成立,例如5>3,这个表达式恒成立,则为真,会返回数字1(每个表达式都会返回一个值),相反,如果写成5<3,则这个表达式会返回0,就为假。
-
while循环
#include<stdio.h>
int main(void)
{
while(1)
{
printf("xxxx\n");
}
return 0;
}
while()循环括号里面是判断是否可以进入循环的条件,如果括号里的条件成立,即为真,就进入循环,否则不进入循环。括号里面是1,那么就进入循环,
执行完循环里面的语句后,会再次回到while()循环的条件进行判断,1永远为真,所以就会一直循环,造成死循环。
运行结果如下:
这里只截取到一部分,实际上会一直打印
-
for循环
for(exp1;exp2;exp3)循环括号内部分为三个部分,exp1是初始化,只在for循环开始时执行一次,exp2是判断条件,exp3是调整部分,这三部分中间用分号隔开。
#include<stdio.h>
int main(void)
{
int i;
for(i=0;i<10;i++)
{
printf("%d ",i);
}
return 0;
}
这段代码即用for循环打印了0-9的数字 ‘
-
do while循环
do while循环不管三七二十一先执行一次循环体内部的语句,然后再进行判断是否循环
#include<stdio.h>
int main(void)
{
int i = 0;
do
{
printf("%d",i);
}while(i);
return 0;
}
注意:do while循环的while后面是有分号的,而while循环和for循环括号后面是不可以加分号的
分支
当我们遇到好多种情况需要去抉择的时候我们应该如何去选择呢,这就需要分支语句
-
if语句
#include<stdio.h>
int main(void)
{
int num;
scanf("%d", &num);
if (num > 0)
{
printf("%d > 0\n",num);
}
else if (num < 0)
{
printf("%d < 0\n",num);
}
else
{
printf("%d = 0\n",num);
}
return 0;
}
上述代码即为if语句的例子,输入num,符合哪种情况就进入哪一个代码段
使用if语句需要注意的事项
- 每个if语句后面只能跟一个语句,如果有多个语句需要用大括号括起来
- else if可以有无数多种
- else 的情况是除了if 和 else if 之外的所有情况
- 如果代码段没有用大括号括起来,那么else语句会和离else语句最近的if 匹配
例如如下代码:
#include<stdio.h>
int main(void)
{
int num;
scanf("%d", &num);
if (num > 0)
printf("%d > 0\n", num);
if (num < 0)
printf("YES\n");
else
printf("NO\n");
return 0;
}
代码运行结果如下:
有人疑惑,为什么else 语句也会执行?
实际上,和else 语句离的最近的是2号if语句并不是1号if()语句,如何避免这种情况呢?就是每个情况都用大括号括起来,不管有几个语句,都用大括号括起来,这样可以使代码之间的关系一目了然,可读性提高,不至于造成上面的情况。
优化后如下:
#include<stdio.h>
int main(void)
{
int num;
scanf("%d", &num);
if (num > 0)
{
printf("%d > 0\n", num);
}
if (num < 0)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
return 0;
}
-
switch语句
#include<stdio.h>
int main(void)
{
int day;
scanf("%d", &day);
switch (day)
{
case 1:
printf("今天是周%d",day);
break;
case 2:
printf("今天是周%d", day);
break;
case 3:
printf("今天是周%d", day);
break;
case 4:
printf("今天是周%d", day);
break;
case 5:
printf("今天是周%d", day);
break;
case 6:
printf("今天是周%d", day);
break;
case 7:
printf("今天是周%d", day);
break;
default:
printf("输入错误");
break;
}
return 0;
}
switch()括号里的判断条件是整数
case 后面的数字即为switch括号里的数字
如果有一种情况符合,就从这个case 进入,一直执行后面的语句,知道遇到第一个break才停止,如果没有遇到break,就会执行完后面所有的情况
例如:
#include<stdio.h>
int main(void)
{
int day;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
default:
printf("输入错误");
break;
}
return 0;
}
输入2,就会进入case 2,一直执行到遇到break
default 语句可有可无,是除了列出来的case 的所有情况,所有case 情况的顺序没有要求,任意位置都可以
//有任何疑惑和看法欢迎留言