目录
可以这么说,当一个人自律且努力,舍得对自己使出霹雳手段时,往往就要开始变得优秀了。(from 《认知进化》)
1if语句
语法
if ( expression )
statement
如果表达式为真执行语句,为假不执行。statement部分可以是一条简单语句,或者是一条用花括号括起来的复合语句,执行的是简单语句或者花括号内的所有语句。
2 if else语句
2.1基础用法
语法格式
if ( expression )
statement1
else
statement2
判断一个数是奇数还是偶数,代码如下
#include <stdio.h>
int main(void)
{
int a=5 ;
scanf("%d", &a);
if (a % 2 == 1)
printf("a为奇数");
else
printf("a为偶数");
return 0;
}
if语句用于选择是否执行一个行为,而else if语句用于在两个行为之间选择。
2.2嵌套if
在 if else 语句中, else 可以与另⼀个 if 语句连⽤,构成多重判断。如果有多个 if 和 else , else 总是跟最接近的 if 匹配。
编写程序,实现用户输入成绩,然后输出成绩等级,A表示90分以上,B表示80到90分,C表示70到80分,D表示60到70分,E表示60分以下。输入对应的字母,则输出对应的成绩表示内容。
#include <stdio.h>
int main(void)
{
int score=0 ;
scanf("%d", &score);
if (score>=90)
printf("成绩等级为A\n");
else if (score>=80)
printf("成绩等级为B\n");
else if (score>=70)
printf("成绩等级为C\n");
else if (score>=60)
printf("成绩等级为D");
else
printf("成绩等级为E");
return 0;
}
3swich语句
除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。
switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。
语法:
switch (expression)
{ case value 1:
satement
case value 2:satement
default:statement
}
上面代码中,根据表达式 expression 不同的值,执行相应的 case 分⽀。如果找不到对应的值,就执行 default 分支。case 是入口,需要添加break作为出口跳出语句,否则会执行多个入口的语句。
switch 后的 expression 必须是整型表达式, case 后的值,必须是整形常量表达式。
判断是星期几,代码如下:
#include <stdio.h>
int main(void)
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("今天是星期一\n");
break;
case 2:
printf("今天是星期二\n");
break;
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;
default:
printf("输入错误\n");
break;
}
return 0;
}
当多个入口的出口一致时,可以使用同一个break。
#include <stdio.h>
int main(void)
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("今天是工作日\n");
break;
case 6:
case 7:
printf("今天是休息日\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
4while循环
语法:
while ( expression )
statement
while语句的结构和if语句很相似,它们的主要区别是:如果满足条件可执行的话,if语句只能测试和执行一次,而while语句可以测试和执行多次。
从1加到100
#include <stdio.h>
int main(void)
{
int i = 0;
int sum = 0;
while (i <= 100)
{
sum += i;
i++;
}
printf("%d", sum);
return 0;
}
5for循环
语法
for ( initialize; test; update )
statement
initialize ⽤于循环变量的初始化(表达式1)
test ⽤于循环结束条件的判断(表达式2)
update ⽤于循环变量的调整(表达式3)
⾸先执⾏ 表达式1 初始化循环变量,接下来就是执⾏ 表达式2 的判断部分, 表达式2 的结果如果不满足,则循环结束; 表达式2 的结果如果满足则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式3 ,调整循环变量,然后执行判断表达式2 , 表达式2 的结果是否为真,决定循环是否继续。整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。
从一加到一百
#include <stdio.h>
int main(void)
{
int sum = 0;
for (int i = 0; i <= 100; i++)
{
sum += i;
}
printf("%d", sum);
return 0;
}
6 do while循环
语法
do
statement
while ( expression );
statement可以是一条简单语句或复合语句。注意,do while循环以分号结尾。
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环;⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
#include <stdio.h>
int main(void)
{
int sum = 0;
int i = 0;
do {
sum += i;
i++;
}
while (i <= 100);
printf("%d\n", sum);
return 0;
}
7break语句
程序执行到循环中的break语句时,会终止包含它的循环,并继续执行下一阶段。
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 10; i++)
{
if (i == 7)
break;
printf("%d ", i);
}
return 0;
}
8continue语句
3种循环都可以使用continue语句。执行到该语句时,会跳过本次迭代的剩余部分,看是否符合循环执行条件从而开始下一轮迭代。如果continue语句在嵌套循环内,则只会影响包含该语句的内层循环。
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 10; i++)
{
if (i == 7)
continue;
printf("%d ", i);
}
return 0;
}
9goto语句
语法格式
goto label ;
...
...
...
label : statement
goto语句使程序控制跳转至相应标签语句。冒号用于分隔标签和标签语句。标签名遵循变量命名规则。标签语句可以出现在goto的前面或后面。goto 语句如果使用的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以建议能不⽤尽量不去使⽤;但是 goto 语句跳出多层循环的代码非常方便。
#include <stdio.h>
int main(void)
{
printf("你不说真心话\n");
goto next;
printf("让我怎么为你大冒险");
next:
printf("跳过大冒险\n");
}