概述
目录
1. switch语句的补充:
1.1在switch语句中的default语句:
1.2在switch语句中的break语句:
2.:循环语句:
2.1 while循环语句:
2.2:for循环
2.3:do while 循环
1. switch语句的补充:
1.1在switch语句中的default语句:
如果我们输入的值不是我们定义的case的值的时候,我们就使用default语句:
int main() {
int i = 0;
scanf("%d", &i);
switch (i) {
case 1:
printf("h");
case 2:
printf("hh");
case 3:
printf("hhh");
default:
printf("hhhh");
}
return 0;
}
此时我们输入的5,但是我们的case语句中并没有case5,所以他就执行了我们的default语句.
1.2在switch语句中的break语句:
如果有break,把么就会跳出当前的case语句.如果没有break语句,就执行下一条case语句.
int main() {
int i = 1;
int j = 1;
switch (i) {
case 1:
i++;
case 2:
j++;
}
printf("i= %d j= %d", i, j);
return 0;
}
上面是没有用break语句的代码.我们来看看结果:
int main() {
int i = 1;
int j = 1;
switch (i) {
case 1:
i++;
break;
case 2:
j++;
}
printf("i= %d j= %d", i, j);
return 0;
}
当我们使用break语句时:
此时我们发现j的值没有加一,i的值加一了,说明使用break语句之后,程序在遇到break之后就结束了switch,没有进行后面的case.
下面有个例子给大家分析:
int main() {
int n = 1;
int m = 2;
switch (n) {
case 1:
m++;//m=3
case 2:
n++;//n=2
//case 1 case 2没有break语句终止,所以会执行后面的语句
case 3:
switch (n) {//n=2
case 1:
n++;
case 2:
m++; n++;//m=4,n=3;
break;
}
case 4:
m++;//m=5
break;
default:
break;
}
printf("m= %d n= %d", m, n);//m=5,n=3;
return 0;
}
如果上面的switch语句你能够看得懂,并且可以完全理解,那么你的switch语句就可以了.
2.:循环语句:
循环语句有哪些?:while循环 for循环 do while循环.
2.1 while循环语句:
语句的格式:while(条件判断语句){循环体}.如果条件为真 就进入循环体.
int main() {
int i = 1;
while (i) {
printf("hhn");
}
return 0;
}
我们在while循环的条件判断语句中给他的条件是i=1,所以他是一个真的条件,所以就会执行我们的循环体;
下面我们来简单的用一下我们的while循环打印一下我们的1-9;
//打印数字1-9;
int main() {
int i = 1;
while (i<10) {
printf("%d ",i);
i++;
}
return 0;
}
while循环中:有两个关键字:break 和 continue;
break:
int main() {
int i = 1;
while (i<10) {
if (i == 5)
break;
printf("%d ",i);
i++;
}
return 0;
}
当我们使用了break时,就终止了我们的循环,break后面的代码就不会执行.
continue:
int main() {
int i = 1;
while (i<10) {
if (i == 5)
continue;
printf("%d ",i);
i++;
}
return 0;
}
此时我们使用了continue时,程序并没有停止而是出现了死循环.那么我们的continue就是跳过continue后面的代码直接判断是否可以执行下一次循环,我们上面的代码就是在i=5的时候,continue跳过了后面的代码,直接去判断我们的循环条件是否成立,成立就继续进行我们的代码,但是此时是不执行continue后面的代码的.所以我们的程序出现了死循环(此时我们的n是4,条件判断为真)
int main() {
int i = 1;
while (i<10) {
i++;
if (i == 5)
continue;
printf("%d ",i);
}
return 0;
}
当我们的代码修改以后按照上面的代码进行写的时候,就不会出现死循环的结果,因为我们的i++在循环中仍然运行.我们来看一下结果:
在这给大家讲一下一个C语言中的一个函数.getchar (获取字符 ASCII码值)和 putchar (输出一个字符)
int main() {
int ch = getchar();//获取一个字符:从键盘中获取
printf("%cn", ch);
putchar(ch);
return 0;
}
为什么我们定义的ch是一个int型,不是一个char型?因为它所获取的是这个字符的ASCII码值,所以就是需要int型.putchar就是输出这个字符的ASCII值的数值所代表的是字符.
c语言中的EOF(end of file)字符结束.
int main() {
int ch = 0;
while ((ch = getchar())!=EOF) {//表示我们获取的是一个字符的话就是真值进去循环
putchar(ch);
}
return 0;
}
以上代码进去以后就是一个循环,我们输入一个字符他就会打印一个字符,那么我们发现此时是一个死循环,程序没有办法停止.那么我们只需要输入CTRL+z,就会输入一个EOF,程序就会停止.
在这给大家举个例子让大家更加好的理解
//判断密码是否正确
int main() {
char password [20] = { 0 };//定义一个密码是一个字符数组
printf("请输入密码n");
scanf("%s", password);//输入一个字符
printf("请判断密码是否正确->(Y/N)n");
int ret = getchar();//获取判断的字符
if (ret == 'Y') {
printf("YESn");
}
else {
printf("NO");
}
return 0;
}
为什么我输入以后还没有判断,他就输出了?
那么怎么解决这个问题呢:
那么这就是我们很好的一个解决方案.代码如下:
//判断密码是否正确
int main() {
char password [20] = { 0 };//定义一个密码是一个字符数组
printf("请输入密码n");
scanf("%s", password);//输入一个字符
printf("请判断密码是否正确->(Y/N)n");
//getchar();//让他把n拿走,那么后面的getchar就获取的是我们判断密码的YN.
int flag = 0;
while ((flag=getchar())!='n') {
getchar();
}
int ret = getchar();//获取判断的字符
if (ret == 'Y') {
printf("YESn");
}
else {
printf("NO");
}
return 0;
}
下面一个代码只打印我们的数字字符:
int main() {
char ch = '