C语言-分支和循环1 原创
C语言是一门结构化的程序设计语言
- 顺序结构
- 选择结构
- 循环结构
int main()
{
int a = 0; //由一个分号;隔开的就是一条语句
return 0;
}
-
分支语句(选择结构)
如果你好好学习,拿到一个好offer,成为有钱的小姨。
如果你不好好学习,毕业就嫁人,一年抱俩,老公和小三跑了。 -
单分支语句(if语句)
int main()
{
int age = 21;
if (age > 18)
printf("你成年啦\n");
return 0;
}
- 多分支语句
if (条件)
printf();
else
printf();
int main()
{
int age = 21;
if (age < 18)
printf("你还未成年\n");
else
printf("你已成年\n");
return 0;
}
int age = 21 定义一个变量21,if (age < 18) 如果你的年龄小于18岁的话,printf(“你还未成年\n”);则输出你还未成年,else 否则,printf(“你已成年\n”);则输出你已成年。
(1)可嵌套
int main()
{
int age = 21;
if (age > 18)
printf("未成年\n");
else
{
if (age >= 18 && age <= 23)
print("青年\n");
else if (age >= 23 && age < 50)
printf("壮年\n");
else
printf("老年\n");
}
return 0;
}
在循环语句里再嵌套一个循环语句,套中套。先判断你是成年了,如果成年了则会进入下一个循环。
int main()
{
return 0;
} //一对{ }就是一个代码块。
如果表达式的结果为真,则语句执行。0表示假,非0表示真。
4. 悬空else
咱们代码的格式得写漂亮点,看的时候才不会乱,像我这种鱼的记忆的人过后就忘记我写的是什么了哈哈。
int main()
{
int a = 0;
int b = 2;
if ( a == 1)
if (b == 2)
printf("小姨\n");
else
printf("姐姐\n");
return 0;
}
千万千万不要写成下面这个样子!
if (a == 1)
if (b == 2)
printf("小姨\n");
else //遵循就近原则
printf("姐姐\n");
精致的小姨们!NO!绝对NO!这个else是与if (b == 2)相匹配的,她是遵循就近原则。那肯定会有人问,那如果我想把else与if (a == 1)相匹配怎么办呢?那就给她加个外套!{ }
if (a == 1)
{
if (b == 2)
printf("小姨\n");
}
else //遵循就近原则
printf("姐姐\n");
没有错,就是这样!
5.if的书写形式
int main()
{
int age = 21;
if (21 == age) //=赋值,==判断相等
printf("欢迎美丽的小姨回家\n");
return 0;
}
6.练习-判断一个数是否为奇数,输出1-100之间的奇数
int main()
{
int i = 1;
while (i <= 100)
{
if (i % 2 != 0)
printf("%d ", i);
i++; //先用i的初始值做循环变量再i+1
}
return 0;
}
用while循环去判断i是不是小于或等于100,如果小于或等于100,则进入下一个判断,if判断i被2整除会不会等于0,如果不等于0则是奇数,则将i输出。
while(i++)是先用i的初始值做循环变量再i+1。我们最开始的int i = 1;经过 i++;后,int i = 2; 相当于一个数循环一圈后再叠加一个数。
7.switch语句
int main()
{
int day = 0;
scanf("%d", &day); //输入
switch (day) //int
{
case 1: //int 常量表达式
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;
}
return 0;
}
day必须是int类型,case 1 中的 1 必须是int类型,也可以是常量表达式。
也可以写成如下的格式,按个人所需。
int main()
{
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;
}
return 0;
}
如果不想忽略不匹配所有标签的表达式的值时,可以在语句列表中增加一条default子句,可以写在任何一个case标签出现的位置。
case 7:
printf("周末\n");
break;
default: //如果不想忽略不匹配所有标签的表达式的值
printf("输入错误\n");
break;
}
return 0;
循环语句
- while
- for
- do while
1.while循环
什么是while循环呢?和if语句又有什么差别呢?
当满足条件的情况下,if语句后的语句执行,否则不执行。但这个语句只会执行一次。but我们发现生活中有很多实际的例子是:同一件事情我们需要完成很多次,那我们怎么做呢?C语言中给我们引入了:while语句,可以实现循环。
while(表达式)
循环语句;
打印1-10的数字
int main()
{
int a = 1;
while (a <= 10)
{
printf("%d ", a);
i++;
}
return 0;
}
如果我不想她打印到10呢?我就想她打印到5咋怎?没有错,加个break;
int main()
{
int a = 1;
while (a <= 10)
{
if (a == 5)
break;
printf("%d ", i);
i++;
}
return 0;
}
break永久终止循环!渣男敢找小三,那就离婚!让你永远失去我!!!可是单单离婚岂不是太便宜他了!该咋怎呢?那就派出我们的continue;
int main()
{
int a = 1;
while (a <= 10) //判断要不要执行循环体
{
if (a == 5)
continue;
printf("%d ", i);
i++;
}
return 0;
}
终止循环中本次循环中continue后面的代码,然后直接跳到while (a <= 10)语句的判断部分,进行下一次循环的入口判断。没有错!我才不会和break一样选择离婚呢,我自己也去重新找一个!拿着你的薪水去快乐!!!!
getchar() //接收字符的代码
putchar() //输出函数
有什么作用呢?小小举例一下
int main()
{
int ch = 0;
int ret = 0; //定义一个变量,来接收getchar的返回值
char password[20] = {0};
printf("输入密码:>");
scanf("%s", password); //%s输入一个字符串,输入密码,并存放在password数组中
while ((ch = getchar()) != '\n')
{
; //空语句,在循环变量里面不断的读取
}
printf("请确认(Y/N):>");
ret = getchar(); ///读取字符,让ret接收
if (ret == 'Y')
{
printf("确认成功\n");
}
else
{
printf("放弃确认\n");
}
return 0;
}
因为我们输入完密码后得按回车键\n,所以当gatchar读取完后,缓冲区还剩下一个\n,所以我们用while ((ch = getchar()) != ‘\n’)来读取\n。