前言:本人也是小白,这算是我学习中的笔记整理,希望可以帮助更多的人,如果有错误欢迎大家指正,有不懂的也欢迎大家评论区互相交流,共同进步。文中段落中代码为节省空间只写了大概意思,完全,没有顾及语法和规范,大家写代码一定不要那样写哈(手动滑稽)。
1语句
1.1什么是语句
C语言编程中每用一个分号隔开的为一个语句
return 0;
1 + 2;
printf("haha,c语言!");
2分支语句
2.1什么是分支语句:即选择语句,需要表示根据不同条件选择执行不同结果时用的句型
2.2if else语句
2.2.1根据年龄判定是否成年:(注意:if else语句在只有一条语句时可以不用构造代码块,多条语句时必须构造代码块即用{}将所有语句包裹构成一个代码块,否则编译报错,建议大家养成良好的习惯,即使只有一条语句时也用{}包裹住)
int main()
{
int a = 10;
if(a < 18)
{
printf("未成年");
}
else
{
printf("成年");
}
return 0;
}
2.2.2 当选择多余两种时,除去首尾中间用else if,特别注意,中间条件不能直接写做 (18 <= a <28)由于代码逻辑的先后性,会先判定a是否小于等于18,得到的结果为真或者假,在C语言中即为1或者0,这样再去用1或者0去判定是否小于28,结果必为真,导致无论age为多少都只会输出青年,正确的方法为条件间用“&&”连接,逻辑表示为同时满足才为真,例如:
int main()
{
int a = 10;
if(a < 18)
{
printf("未成年");
}
else if(a >= 18 && a < 28)
{
printf("青年");
}
else
{
printf("成年");
}
return 0;
}
//另一种思维逻辑
int main()
{
int a = 10;
if(a < 18)
{
printf("未成年");
}
else
{
if(a >= 18 && a < 28)
{
printf("青年");
}
else
{
printf("成年");
}
}
return 0;
}
2.2.3小知识点1:C语言中的逻辑真假,0为假,只要不是0即为真,C语言的真默认输出数据为1。
2.2.4小知识点2:else悬空:else和距离最近的未匹配的if匹配,下面代码中第一个由于else与第二个if匹配造成else悬空,结果为无输出(a不等于0直接不会进入下面的if else语句,所以再次说一下构造代码块也就是代码规范性的重要)
//想写代码实现a=1,b=2时输出haha,否则输出hehe
//else悬空造成无输出
int main()
{
int a = 1;
int b = 2;
if(a == 0)
if(b == 1)
printf("haha\n");
else
printf("hehe\n");
return 0;
}
//正确的写法:
int main()
{
int a = 1;
int b = 2;
if(a == 0)
{
if (b == 1)
{
printf("haha\n");
}
}
else
{
printf("hehe\n");
}
return 0;
}
2.2.5小知识点3代码风格优化:该缩进缩进,该空格空格,该对齐对齐。由于“=”是赋值,而“==”才是判断相等,为防止if语句判断相等条件写成赋值,建议常量写在前,这样如果不小心写错编译器会报错,a == 5优化写为5 == a,当写成5 = a时编译器会报错。
2.3switch case语句
2.3.1switch case语句是用于有多种情况选择的分支语句句型可以通过类似枚举来分情况执行,简化else if的使用,例如:
int main()
{
int day = 0;
printf("请输入数字\n");
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;
}
2.3.2注意1: switch语句括号内必须是整形(int short定义的)表达式。可以是表达式如:{int a, int b, switch(a + b)}但是不能不是整形如:{float a, char b, switch(a), switch(b), switch(a +b)}
2.3.2注意2:case后面只能是整形常量表达式,可以是{const b = 3; case:1;case:2 * 3; case:b;}不能是{int a = 1; case:a;}
2.3.3注意3:break是跳出switch语句的,switch语句中未执行到break时会依次执行case入口后面的所有语句,例如第一段代码输入3时会输出“星期三”“星期四”......“星期日”和"输入非法"。所以要根据逻辑思维选择是否需要break语句,如第二段代码灵活运用break使输入1到5输出工作日,6到7输出休息日。(逻辑上来说最后一个case的break语句是可有可无的,但是为了后期代码维护,建议养成良好习惯最后一个case的break语句不要省略)
int main()
{
int day = 0;
const int a = 1;
printf("请输入数字\n");
scanf("%d", &day);
switch (day)
{
case a:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期日\n");
default:
printf("输入非法!\n");
}
return 0;
}
int main()
{
int day = 0;
const int a = 1;
printf("请输入数字\n");
scanf("%d", &day);
switch (day)
{
case a:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入非法!\n");
break;
}
return 0;
}
2.3.4注意4:default是默认,这条语句用以提示没有对应匹配上的case入口,当不需要这条语句时,代码规范建议在switch语句最后都添加{default:break;(注意缩进和对齐,这里为了节约空间)}。
2.3.5逻辑小测:switch语句可以嵌套使用,如下代码(最终应输出a = 3;b = 6):
int main()
{
int a = 1;
int b = 5;
switch (a)
{
case 1:
a++;
case 2:
b++;
switch (b)
{
case 6:
a++;
break;
case 7:
b++;
}
}
printf("a = %d\nb = %d\n", a, b);
return 0;
}