选择语句
if语句
if(表达式){
执行代码块;
}
else{
执行代码块;
}
注:C#中的 if() 后面没有分号,直接写{}
#include <stdio.h>
int main(){
int coding = 0;
printf("你会选择去努力学习敲代码吗?(选择1或0)>:");
scanf("%d", &coding);
if (coding == 1){
printf("加油你会有好offer和高薪酬。\n");
}
else{
printf("回家卖烤白薯去吧。\n");
}
return 0;
}
多分支:
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include <stdio.h>
int main(){
int age = 18;
printf("你多少岁了:");
scanf("%d", &age);
if (age < 18){
printf("你原来还蛮小的\n");
}
else if (age >= 18 && age < 30){
printf("你成年了哇,但还蛮年轻的\n");
}
else if (age >= 30 && age < 50){
printf("正是年富力强的时候啊\n");
}
else{
printf("年纪不小了,注意身子骨\n");
}
return 0;
}
嵌套if语句
#include <stdio.h>
int main(){
int a = 89;
if (a > 88){
if (a > 99){
printf("%d\n", ++a);
}
else{
printf("%d\n", --a);
}
}
else{
printf("错误\n");
}
return 0;
}
switch语句
多分支时使用:
switch(表达式){
case 常量1:语句1;
break;
case 常量2:语句2;
break;
default:语句n;
break;
}
根据switch后面表达式的结果,寻找匹配的case,并执行case后面的语句,一直到break为止。
如果没有遇到 break 那就接着执行下面的语句。如果所有的case都不匹配,那么就执行default 后面的语句。
如果没有default,那么程序就什么都不会执行,直接跳过switch case 语句。
#include <stdio.h>
int main(){
int day = 0;
printf("今天是星期几?");
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;
}
#include <stdio.h>
//输入1-5,输出的是“weekday”
//输入6-7,输出“weekend”
int main()
{
int day = 0;
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
注:switch case 语句的结果只能是整数(int)类型
break: 结束运行。
循环语句
C语言中有三种循环结构
while 循环
while(表达式){
循环语句;
}
#include <stdio.h>
//打印1-10
int main(){
int i = 1;
while(i < 11){
printf("%d\n", i);
i++;
}
return 0;
}
break
#include <stdio.h>
//打印结果为1-4
int main(){
int i = 1;
while(i < 11){
if(i == 5){
break;
}
printf("%d\n", i);
i++;
}
return 0;
}
循环中只要遇到break就停止后期的所有循环,直接终止循环。
continue
用于终止本次循环的,也就是在本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
#include <stdio.h>
//打印1-5
int main(){
int i = 1;
while(i < 11){
if(i == 6){
continue;
}
printf("%d\n", i);
i++;
}
return 0;
}
写循环语句时需要保证循环条件的正确性,否则可能出现死循环。例如,如果循环条件中的变量没有被更新,那么循环可能会一直执行下去,导致程序陷入死循环。另外还需要注意break和continue的放置位置。
#include <stdio.h>
int main() {
int i = 0;
while (i < 10) {
i++;
if (i % 2 == 0) {
continue; // 跳过偶数
}
printf("%d ", i);
}
return 0;
}
for 循环
for(表达式1; 表达式2; 表达式3)
// 表达式1为初始化部分,用于初始化循环变量的。
// 表达式2为条件判断部分,用于判断循环时候终止。
// 表达式3为调整部分,用于循环条件的调整。
循环语句;
#include <stdio.h>
int main(){
int i = 0;
for(i = 1; i <= 10; i++){
printf("%d", i);
}
return 0;
}
for循环相较于while循环的好处在于其条件集中,在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。
日常运用的仍是for循环偏多。
通常for循环内部的循环变量的取值,采用的是前闭后开的写法。
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++){
}
//两边都是闭区间
for(i=0; i<=9; i++){
}
do-while 循环
do{
循环语句;
}while(表达式);
循环至少执行一次,使用的场景有限,所以不是经常使用。
#include <stdio.h>
int main(){
int i = 0;
do{
printf("%d", i);
i++;
}while(i < 10);
return 0;
}
练习:
1.计算n的阶乘
#include <stdio.h>
int main(){
int i = 0;
int n = 1;
int size = 1;
printf("我想求一个数的阶乘:");
scanf("%d", &n);
for(i = 1; i <= n; i++){
size = size * i;
}
printf("结果为:%d", size);
return 0;
}