C语言分支和循环结构
1.顺序结构
2.选择结构
3.循环结构
if 语句语法结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
多分支:
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int age = 10;
if(age<18)
printf("未成年\n");
else if(age>=18 && age<28)
printf("青年\n");
else if(age>=28 && age<60)
printf("壮年\n");
else if(age>=50 && age<90)
printf("老年\n");
else
printf("老不死\n");
return 0;
}
如果条件成立,要执行多条语句,应该使用代码块。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int age = 10;
if(age<18)
{
printf("未成年\n");
printf("不能谈恋爱");
}
else
{
if(age>=18 && age<28)
printf("青年\n");
else if(age>=28 && age<60)
printf("壮年\n");
else if(age>=50 && age<90)
printf("老年\n");
else
printf("老不死\n");
}
return 0;
}
switch 语句
搭配break实现分支
switch(整型表达式)
{
case 整型常量表达式:
语句;
break;
}
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int day = 0;
scanf("%d",&day);
switch(day){
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("输入错误\n");
break;
}
return 0;
}
case 也可不跟break
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
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;
}
Test
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int n = 1;
int m = 2;
switch(n)
{
case 1: m++;
case 2: n++;
case 3:
switch(n)
{
//switch 允许嵌套使用
case 1: n++;
case 2: m++; break;
}
case 4:m++;
break;
default:
break;
}
printf("m=%d, n=%d\n",m,n);
return 0;
}
输出:m=5, n=2
循环语句
while(表达式)
循环语句;
continue 用来中止本次循环。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int i = 0;
while(i<=10){
i++;
if(i ==5)
continue;
printf("%d ",i);
}
return 0;
}
//1 2 3 4 6 7 8 9 10 11
```c
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int ch = 0;
//ctrl + z
///EOF - end of file ->-1
while((ch=getchar()) != EOF){
putchar(ch);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
/* 从键盘中不断读取字符*/
int main(int argc, char *argv[]) {
int ret = 0;
char ch;
char password[20] = {0};
printf("请输入密码:");//输入密码 并存放在password数组中
scanf("%s",password);
//缓冲区还剩余一个\n
//读取\n
while((ch=getchar())!='\n')
{
;
}
printf("请确认(Y/N)");
ret = getchar();//Y/N
if(ret == 'Y'){
printf("确认成功\n");
}
else{
printf("放弃确认\n");
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int ch = 0;
while((ch=getchar())!=EOF){
if(ch<'0'|| ch>'9')
continue;
putchar(ch);
}
return 0;
}
for循环
for(表达式1;表达式2;表达式3)
{
循环语句;
}
注意:
1.不可在循环体内修改循环变量,防止for循环失去控制。
2.建议for语句的循环控制变量的取值采用前闭后开区间写法。
3.for循环的初始化、调整、判断都可以省略
但是:
for循环的判断部分 如果被省略,那判断条件就是恒为真