声明在前
图中用于展示程序代码的软件是Visual Studio 2019 社区版,在微软官网即可下载,本人目前是大四,非计算机专业学生,零基础学编程系列为本人自学笔记及心得,文章中如有错误,欢迎各位批评指正,希望与大家一起学习进步。
C语言是一门 结构化(顺序结构、选择结构、循环结构) 的程序设计语言。
C语言中由一个分号;隔开的就是一条语句,例如:
printf("hello world!");
1+2;
;//空语句
今天主要学习的是分支语句(选择语句)
一.if语句
1、一分支
if(表达式)//若表达式为真,执行语句,否则就不执行
语句;
2、两分支
if(表达式)//若表达式为真,执行语句1,否则就执行语句2
语句1;
else
语句2;
int age;
scanf("%d\n",age);
if(age<18)
printf("未成年\n");
else
printf("成年\n");
3、多分支
if(表达式1) //若表达式1为真,则执行语句1
语句1;
else if(表达式2) //若表达式1为假,表达式2为真,则执行语句2
语句2;
else //若表达式1为假,表达式2为假,则执行语句3,
语句3;
int age;
scanf("%d\n",age);
if(age<18)
printf("未成年\n");
else if(age>=18 && age<28)
printf("青年\n");
else if(age>=28 && age<50)
printf("壮年\n");
else
printf("老年\n");
注:第二个条件为什么不可以写成“18<=age<28”?
若age=10,则18<=10不成立,条件为假则为0,而0<28成立,还是会输出青年。
4、悬空else
int a=1;
int b=2;
if(a==0)
if(b==2)
printf("123\n");
else//else默认和距离最近的if进行匹配,若要和第一个if匹配,需要把第二个if加到括号内
printf("456\n");
return 0;//运行结果是空的,什么也不输出
5、if书写形式的对比
代码1
if(condition)
{
return x;
}
return y;//与代码2意思相同,但可读性差,容易造成误解
代码2进行更正
if(condition)
{
return x;
}
else
{
return y;
}
代码3
int num=1;
if(num=5)//=是赋值;==是判断;此处应为==,但是容易漏写
{
printf("123\n");
}
return 0;//此时可以输出123,无报错但是有bug
代码4进行更正
int num=1;
if(5==num)//把数值放在前,此时若漏写=,系统会进行提示
{
printf("123\n");
}
return 0;//逻辑更加清晰,不易出错
二.switch分支语句
用于多分支的情况
int day=0;
scanf("%d",&day);
switch(day)//括号内必须是整型表达式
{
case 1:
printf("星期一\n");//case后面必须是整型常量表达式
break;//执行完该case语句后直接跳出switch语句,实现真正的分支
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;
}
若星期一到星期五都输出工作日,星期六到星期日输出休息日,则不需要加break,break语句的实际效果是把语句列表划分为不同的部分。
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;
}
养成习惯:最后一个case语句都加上break
若输入的不是1-7,则需要default语句来处理:
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
break;
示例:
int main()
{
int m=2;
int n=1;
switch(n)
{
case 1:m++;
case 2:n++;
case 3:
switch(n)
{
case 1:n++;
case 2:m++;n++;
break;
}
case 4:m++;
break;
default:
break;
}
printf("m=%d\n,n=%d\n",m,n);
return 0;
}
至此,本部分结束。因为对编程及计算机语言没有太多的基础,所以写的过于详细,主要作为我个人的学习记录,也希望能帮到跟我一样零基础但是想学习编程的同学。