2022年6月18日
c语言是一门 结构化 的程序设计语言
生活中的结构
1.顺序结构:顺序,从上到下,没有插叙补叙
2.选择结构:中途有分叉,可A可B可C等选择
3.循坏结构:一直循环,或某一刻出去
本节课着重介绍后二者
分支语句 ~ if与switch
什么是语句:
c语言中由一个分号;隔开的就是一个语句
;//也是语句,空语句
if语句
if(表达式)
语句;
或
if(表达式)
语句1;
else
语句2;
或
//多分句
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
注意:
①else只与最近的未匹配的if匹配,所以若不想让某else与最近的if匹配,可以用{ }
②if(condition)
{return x ;}
return y ;
//符合条件,输出x,不符合条件输出y
③判断常量与变量关系时,为避免出bug,一般讲常量放在变量前,如5 == num,避免赋值操作
//错误例 int main() { int age = 10; if(18<=age<28)//else if(18<=age<28)有问题,这是因为代码的顺序问题,先判断18<=age,为假,输出0,而0<28为真,故输出青年 printf("青年");
int main() { int age =20 if(age<18) printf("未成年"); else if(age>=18 && age<28) printf("青年"); else if(age>=28 && age<60) printf("壮年"); else printf("老年"); return 0 ; }
也可以
int main() { int age =20 if(age<18) printf("未成年"); else {
if(age>=18 && age<28) printf("青年") else if(age>=28 && age<60) printf("壮年"); else printf("老年"); } return 0 ; }
0 表示假,非0 表示真
如果条件成立,要执行多条语句,怎么利用代码块?
if(age<18)
{
printf("未成年");
printf("不能谈恋爱");
}
示例,输出1~100之间的奇数
int main() { int i = 1; while(i <= 100) { if (i % 2 == 1) { printf("%d\n", i); } i ++; } return 0; }
switch语句
若想输入1~7的一个数字,输出一个“星期N”,若用if语句要用if,else if*5 , else。
switch专门实现多分句
switch(整型表达式)//不能float、char等浮点
{
语句项;
}
那么语句项是什么呢?答:是一些case语句。如
case 整型常量表达式://条件
语句; //执行
break;//跳出语句
示例:
int main() { int day = 0; scanf_s("%d", &day); switch (day) { case 1: printf("星期一"); break; case 2: printf("星期二"); break; case 3: printf("星期三"); break; case 4: printf("星期四"); break; case 5: printf("星期五"); break; case 6: printf("星期六"); break; case 7: printf("星期天"); break; } return 0; }
多个条件一个结果
int main() { int day = 0; scanf_s("%d", &day); switch (day) { case 1: case 2: case 3: case 4: case 5: printf("工作"); break; case 6: case 7: printf("休息日"); break; //多个条件一个结果 } return 0; }
int main() { int day = 0; scanf_s("%d", &day); switch (day) { case 1: case 2: case 3: case 4: case 5: printf("工作"); break; case 6: case 7: printf("休息日"); break; //多个条件一个结果 //若前面case不能匹配(如8/9),则用户输入非法 ,可用default提示 default: printf("你输错了,1~7谢谢"); break; } return 0; }
当然case语句中也能夹if之类的语句
注:if(1)表示真
循环语句
示例
打印1~10
int main() { int i = 1 ; while(i <= 10) {printf("%d\n",i); i ++ ; } return 0 ; }
break
循环里碰到break直接终止循环,会不会与switch里的break混淆呢?
用例,打印1~4
int main() { int i = 1; while (i <= 10) { if (i == 5) { break; }; printf("%d\n", i);
i ++; } return 0; }
continue介绍
while中遇到continue,终止本次后面代码,回到while重新判断(是否进入进入下一次循环的入口判断)。
如死循环例
int main() { int i = 0; while(i <=10) { if(i == 5) { continue; } printf("%d\n", i); i++; } return 0; }
正确的正确的打印1~10&&跳过5
int main() { int i = 0; while(i <10) { i++; if(i == 5) { continue; } printf("%d\n", i); } return 0; }
函数getchar和putchar
int main() { char ch = 0; while ((ch = getchar()) != EOF) { putchar(ch); }; return 0; }
getchar()--可接受键盘字符
如int ch = getchar()
之后打印字符可以用 putchar(ch)或printf("%c",ch),二者效果相同(不过printf的“”里还能带一些其他东西。。)
这里的EOF意为end of file(文件结束标志),一个字符,ctrl+z打出
0 评论:
发表评论