if语句
结构:
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
#include <stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18) //只有加上大括号才能写上两条语句,不写括号只能带上一条printf语句。
{
printf("青少年\n");
printf("好好学习\n");
}
else if (age >= 18 && age < 30) //不能写成18<=age<30,会从左到右计算后输出真或者假
{
printf("青年\n");
}
else if (age >= 30 && age < 50)
{
printf("中年\n");
}
else if (age >= 50 && age < 80)
{
printf("中老年\n");
}
else if (age >= 80 && age < 100)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
return 0;
}
用if实现多分枝案例如上。
c语言中0表示假,非零表示真,所以-1也为真。
悬空else
#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;
}
#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;
}
//这样就可以明了的看出else匹配的对象。
#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;
}
//这样就是和第一个if匹配。
所以说代码风格很重要。比如空格的运用来让数据表达更清楚,良好的语句格式等。
if和条件
if(condition) //条件满足就返回,否则返回y,但是代码风格较差。
{
return x;
}
return y;
if(condition)
{
return x;
}
else
{
return y;
}
int test()
{
int a = 5;
if (a)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
int ret = test();
printf("ret = %d\n", ret);
return 0;
}
int main()
{
int num = 1;
if (num == 5) //这里如果写成num = 5,那么不会报错,因为整个表达式为真。
//写代码时吧常量放在等号左边可以更好的发现错误。
printf("hehe\n");
return 0;
}
switch语句
int main()
{
int day = 0;
scanf("%d", &day);//3
switch (day)
{
case 1:
printf("星期1\n");
break; //break的作用是当满足需求后直接跳出循环。所以并不是所有case语句都需要加上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"); //当不匹配以上常量就会进入default。且default没有位置顺序要求。放哪里都可以。
break;
}
//if (1 == day)
// printf("星期1\n");
//else if (2 == day)
// printf("星期2\n");
//else if (3 == day)
// printf("星期3\n");
//...
return 0;
}
//看出两者差异。
switch(整形表达式)
{
语句项;
}
//而case则是
case 整形常量表达式;//必须是整形。
语句;
switch嵌套
#include <stdio.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1: //因为没有break,所以case1,2,3都执行了。
m++;
case 2:
n++;
case 3:
switch (n)
{ //switch允许嵌套使用
case 1:
n++;
case 2:
m++; n++;
break; //这个break只能跳出本身的语句。
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
while循环
while(表达式)
循环语句;
int main()
{
int i = 1;
while (i<=10)
{
if (5 == i)
continue; //这个cotinue是跳过本次循环,后面代码不会执行。再次进入while循环。
printf("%d ", i);
i++;
}
return 0;
}
getchar
int main()
{
int ch = getchar(); //getchar是获取一个字符的。遇到文件结束标志或者读取错误会返回EOF。不要用char类型来接受getchar,因为char类型存不下-1。
putchar(ch); //putchar是打印一个字符的。
return 0;
}
//ctrl + z可以让程序返回一个文件结束标志。
int main()
{
char password[20] = { 0 };
printf("请输入密码:>");
scanf("%s", password);//123456
//方法2
int tmp = 0;
while ((tmp = getchar()) != '\n')
{
; //这个分号可以省略。
}
printf("请确认密码(Y/N):>");
int ch = getchar();
if ('Y' == ch)
printf("确认成功\n");
else
printf("确认失败\n");
//方法1
getchar();//不能处理空格,需要方法二。
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
while (scanf("%d", &ch) != EOF)
{
printf("%d ", ch);
}
return 0;
}
for循环
int main()
{
//for循环的判断部分省略了,就意味着判断恒为真
//for (; ;)
//{
// printf("呵呵\n");
//}
int i = 0;
int j = 0;
for (; i < 10; i++) //循环变量不一定是一个也可以是多个。
{
//i=0
//j=0~9,10
for (; j < 10; j++)
{
printf("hehe\n");
}
}
return 0;
}
for(表达式1表达式2;表达式3)
循环语句;
表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
注意
1 for循环不要再体内修改循环变量,防止for循环失去控制。
2 最好用前闭后开的区间写法(<而不是<=)