目录
比较if(表达式)、switch(表达式)、while(表达式)它们的表达式有何异同,回顾组成循环的三要素
经过一段时间的学习,我对C语言有了一些初步的认识,希望大家能够一起学习,一起进步。本人是萌新级别的大学生,有错误或不当的地方恳请各位读者指出。
前言
生活中所有的事情都可以细分为两种结构:选择结构和循环结构,如果想使用C语言解决生活中的一些问题,那么C语言首先必须要能够实现这两种结构,接下来就让我带你粗略地认识一下C语言中的分支语句和循环语句吧!
一、C语言“语句”介绍
你知道C语言中“语句”这一概念吗?
C语言中的语句可以分为以下五类:
1.表达式语句;
2.函数调用语句;
3.控制语句;
4.复合语句;
5.空语句。
其中本文介绍的分支语句和循环语句都属于控制语句。控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构,选择结构和循环结构),它们由特定的语句定义符组成,C语言有9种控制语句,又可以分为以下三类:
1.条件判断语句(分支语句):if语句、switch语句;
2.循环执行语句:do while语句、while语句、for语句;
3.转向语句:break语句、goto语句、continue语句、return语句。
二、分支语句
1.if语句
单分支 if(表达式) 语句1; else 语句2; //其中表达式的结果为逻辑值:真(非0),假(0);如果表达式结果为真就执行语句1,否则执行语句2; //演示代码 #include <stdio.h> int main() { int score; scanf("%d",&score); if(score>=60) { printf("及格\n"); } else { printf("不及格\n"); } return 0; } 多分支 思考:对于多分支语句,能否改变表达式的顺序?各个else的含义又是什么? if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; ...... else 语句n; //演示代码 int main() { int age; scanf("%d",&age); if(age<=12) printf("儿童\n"); else if(age >12 && age <=18) //思考一下括号内的表达式是否可以写成这样(12<age<=18) printf("少年\n"); else { printf("成年\n"); printf("可以饮酒\n"); } return 0; }
(1)如果需要满足一个条件同时执行多条语句,则需要用{}把这几条语句括起来;如果需要一个条件仅执行一条语句,那么{}可以省略;
(2)if语句括号内的表达式的结果仅表示真假(即非0或0),如(12<7<3)先计算12<7为假,返回0,再计算0<3为真,所以整个表达式的结果为真。
(3)养成良好的代码习惯
下面代码1和代码2一样吗?代码3和代码4一样吗? #include <stdio.h> //代码1 int main() { int x=0; int y=2 if(x == 1) //你觉得(x == 1)和(1 == x)哪种写法更不容易出错 if(y == 2) printf("fun\n"); else printf("interesting\n"); return 0; } //代码2 int main() { int x=0; int y=2 if(x == 1) { if(y == 2) printf("fun\n"); } else printf("interesting\n"); return 0; } //代码3 if(choice) { return 1 } return 0; //代码4 if(choice) { return 1; } else { return 0; } 你觉得下面的代码5好看吗? //代码5 int main() { int a = 1; int b = 2; if(a==1) printf("good good study!\n"); if(b==2) printf("day day up!"); else printf("have fun!"); return 0; } 对以上代码进行分析后,相信你一定有些想法了, 其中代码1和代码2显然不同(else与较近的if相匹配), 但是代码3和代码4却执行了同样的程序(因为在遇到return之后,这段程序就结束了)。
养成良好的编程习惯对一个程序员来说尤为重要,既可以方便自己和读者对代码的阅读理解,又可以减少在编程中出现的错误
2.switch语句
当我们遇到需要多分支解决的问题的时候,是否会觉得多个else if写起来太过繁琐,不妨来学习一下switch语句的使用吧
一般形式: switch(表达式)//这里表达式的值与if语句表达式的值有什么不同? { case 常量表达式1:语句组1; case 常量表达式2:语句组2; case 常量表达式3:语句组3; ...... case 常量表达式n:语句组n; default :语句组n+1; } //演示代码 #include <stdio.h> int main() { int day; 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("请输入1到7之间的数字!\n");break; } return 0; } 思考:如果我需要输入1至5,输出工作日;输入6或7,输出休息日,该怎样改动演示代码 break在这里的作用是什么?删去break会得到怎样的结果呢? default在这里又扮演着怎样的角色呢?
(1)break语句的作用是:跳出switch语句,在缺少break的情况下,switch没有办法实现分支,在每个case语句后面加上一个break,是一个良好的编程习惯;
(2)default语句的作用是:如果表达式的值与所有的case都不匹配,程序并不会终止,也不会报错,如果你加上一天default语句,那么此时程序会执行default子句后面的语句,在每个switch语句里面加上一条default子句,也是一个编程好习惯
(3)switch()内的表达式只能是某个整型(char,int ,long等)或string,这里switch内表达式的性质与if内表达式的性质不同
三、循环语句
1.while语句
if(表达式) while(表达式)
语句; 循环语句;
在表达式成立的情况下,if语句后面的语句只会执行一次,而while语句后面的循环语句会一直执行到表达式不成立为止,while循环的条件判断部分的表达式与if的表达式性质相同,表达式结果为真则进入循环;
//演示代码-在屏幕上打印1~10 #include <stdio.h> int main() { int i = 1; //循环变量初始化 while(i<=10) //循环条件 { printf("%d ",i); //{}括起来的部分称为循环体 i = i + 1; //循环变量调整部分 } return 0; } 思考:while语句主要由哪些部分构成
在了解的while语句的基本语法之后,我们再来了解一下循环语句中的break语句和continue语句
分析下面这段代码运行的结果: #include <stdio.h> int main() { int i = 1; while (i <= 10) { printf("%d ", i); if (i == 5) break; i = i + 1; } printf("\n"); i = 1; // while (i <= 10) { i = i + 1; if (i == 5) continue; printf("%d ", i); } // printf("\n"); i = 1; while (i <= 10) { if (i == 5) continue; printf("%d ", i); i = i + 1; } return 0; } //1 2 3 4 5 //2 3 4 6 7 8 9 10 11 //1 2 3 4 ?
(1)break:永久终止循环
(2)continue:终止本次循环(后面的代码不再执行),进行下一次循环的入口判断
2. do while语句
#include <stdio.h> int main() { int i = 1; //循环变量的初始化 do { printf("%d ", i); i = i + 1; //循环变量的调整 }while (i <= 10); //循环条件 return 0; } do while语句中,循环至少执行一次,注意不要漏掉while(表达式)后面的" ; "
do while语句与while语句比较相似,但是有些场景do while语句能够发挥更好的效果
3.for语句
一般形式: for(表达式1;表达式2;表达式3) { 循环语句; } 表达式1为循环的初始化部分,表达式2为循环的条件判断部分,表达式3为循环条件的调整部分 与while语句不同的是,for语句的初始化部分、条件判断部分和循环条件的调整部分更加紧凑 使人一目了然,而且我们还可以观察到for语句的循环次数 //演示代码-在屏幕上打印1~10 #include <stdio.h> int main() { int i=0; for(i=1 ;i<=10 ;i++) { printf("%d ",i); } return 0; } 如果你已经对for循环有了初步的认识,请问下面的代码会循环多少次? int main() { int i=0; for(i=0 ;i=0 ;i++) { printf("%d ",i); } return 0; } //答案是0次,看到答案相信你已经发现for语句的判断表达式也与if语句的判断表达式性质相同, //表达式的结果只有真和假,正是因为i=0,0表示假,所以循环一次也不会执行
for语句还可以省略一些部分
演示代码 #include <stdio.h> int main() { // int i=1; for(;i<=10 ;i++) { printf("%d ",i); } // printf("\n"); for(i=1 ;;i++) { printf("%d ",i); if(i>=10) break; } // printf("\n"); for(i=1 ;i<=10 ;) { printf("%d ",i); i++; } return 0; }
总结
对于C语言中的分支语句和循环语句,需要重点掌握if语句、switch语句、do while语句、while语句和for语句的使用,并能根据具体的问题选择适当的语句解决问题
以上就是初识C语言第二部分的内容,希望能够对你有所帮助^W^