什么是语句?
C语句可分为以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
本篇文章后面介绍的是控制语句。
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:
1.条件判断语句也叫分支语句: if语句、 switch语句;
2.循环执行语句: do while语句、while语句、 for语句;
3.转向语句: break语句、goto语句、continue语句、 return语句。
#include<stdio.h> int main() { 3 + 5;//表达式语句 ;//空语句 printf("iloyo.");//函数调用语句 return 0; }
1. if语句
if语句的语法结构:
if(表达式) 语句1; else 语句2; //单分支-if语句可以不加else if(表达式) 语句; //多分支 if(表达式1) 语句1; else if(表达式2) 语句2; else 语句3; //嵌套使用 if(表达式1) 语句1; else { if(表达式2) 语句2; else 语句3; }
如果表达式的结果为真,则语句执行
在C语言中:0表示假,非0表示真。
如果条件成立,要执行多条语句,应该使用代码块:{ }
#include<stdio.h> int main() { if(表达式) { 语句列表1; } else { 语句列表2; } return 0; }
实例:
//代码1 #include<stdio.h> int main() { int age; scanf("%d", &age); if (age < 18) printf("未成年"); return 0; } //代码2 #include<stdio.h> int main() { int age ; scanf("%d", &age); if (age < 18) printf("未成年\n"); else printf("成年\n"); return 0; }
假设人的一生可分为:幼年(1-10岁)、青年(11-35岁)、中年(36-60岁)、老年(61- 岁)。已知一个人的年龄,如何知道ta处于人生哪个阶段呢?
#include<stdio.h> int main() { int age = 20; //int age; //scanf("%d",&age); if (age >= 1 && age <= 10) printf("幼年"); else if(age>10&&age<=35) printf("青年"); else if(age>35&&age<=60) printf("中年"); else printf("老年"); return 0; }
1.1 悬空else
下面是一个悬空的else语句,本意是与第一个if语句匹配,输出结果应该是“haha”,为什么会出错呢?
原因一:默认情况下,if只能控制一条语句,若想控制多条语句,就要加上{ },else同上。
原因二:if-else 就近原则,else是与离它最近的if匹配的。
改正如下:
#include <stdio.h> int main() { int a = 0; int b = 2; if (a == 1) { if (b == 2) //{ printf("hehe\n"); //} } else //{ printf("haha\n"); //} return 0; }
1.2 if书写形式对比
下面的代码2和代码4更好,逻辑更加清晰,不容易出错。
//代码1 if (condition) { return x; } return y; //代码2 if(condition) { return X ; } else { return y; } //代码3 int num = 1; if(num == 5) { printf("hehe\n"); } //代码4 int num = 1; if(5 == num) { printf("hehe\n"); }
- 当常量与变量判断相等时,把常量放在“==“”左边,避免出错
- 函数体中,只要碰到return就返回,后面语句不再执行
- 养成良好的代码风格,在笔试中才不会丢分
1.3 练习
1.判断一个数是否为奇数
2.输出1-100之间的奇数
下划看答案
//第一题 #include<stdio.h> int main() { int n = 0; scanf("%d", &n); if (n % 2 == 1) { printf("%d是奇数\n",n); } else { printf("%d不是奇数\n",n); } return 0; }
//第二题 //代码1 #include<stdio.h> int main() { int i = 1; while (i <= 100) { printf("%d ", i); i = i+2; } return 0; } //代码2 #include<stdio.h> int main() { int i; for (i = 1; i <= 100; i++) { if (i % 2 != 0) { printf("%d ", i); } } return 0; }