一、分支结构(选择结构)
1.if语句
首先说一下if语句的语法结构,通过以下这个例子进行描述:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x = 0;
int y = 0;
int z = 0;
printf("请输入两个整数\n");
scanf("%d %d", &x, &y);
if (x > y)
printf("%d\n", x);
else
printf("%d\n", y);
printf("%d\n", z);
}
运行结果:
发现这两种输入结果都会输出0,可以看出,如果if else无{},条件无论是否成立,都会执行这个任务。只有紧跟的那一句代码才是有效的。
编程过程中,最好不要省略{},要保持风格的统一。
这里给大家写一个标准:
#include<stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
假如我们把程序改为这样
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x = 0;
int y = 0;
int z = 0;
printf("请输入两个整数\n");
scanf("%d %d", &x, &y);
if (x > y);
printf("%d\n", x);
}
运行结果为:
重点在于表达式后面加了一个“;”,我们会发现与panduanyuju并不相符,这是因为在C中,光有一个“;”表示空语句,“;”被当成了条件的内容,后面的{}变成了和条件无关的代码块,直接输出了。
2.switch语句
switch语句也是一种分支语句,常常用于多分支的情况。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int day = 0;
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;
}
return 0;
system("pause");
}
在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。他无法更进一步的表达更复杂的(与)。
switch注意事项:
1.使用break结束语句,忘记的话会导致多个分支相互影响。
2.switch这里变量只能是整数。
3.可用default表示默认分支选项,如果switch中变量值与case不匹配就执行。
4.可在case中,把多个case合并,用来表示简单的或逻辑。
5.switch可嵌套,但是丑,不建议。
结论:switch事项多,能不用尽量不用。
针对注意事项中的第四条,可以有以下示例来解释:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int day = 0;
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
system("pause");
}
二、循环语句
1.while循环
while语法结构:
while(表达式)
循环语句;
当循环条件成立时执行循环体。但是有时我们设立的循环条件会使程序出现死循环,大多数死循环是没有用的,但有时候还是有必要的,比如服务器程序。
这里做出解释:
2个程序,通过网络通信,主动发起请求的一方是“客户端”,被动接受请求的一方是“服务器”,服务器需要7*24运行。
首先我们先运行一个简单的程序。(打印1—10十个数字)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d\n", i);
i++;
}
return 0;
system("pause");
}
while语句中的break和continue
1.break
将上面这个程序改动一下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
while (i < 10)
{
i += 1;
if (i==5)
break;
printf("%d\n", i);
}
return 0;
system("pause");
}
运行结果为下图:
总结:break在while循环中的作用:
其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。所以:while中的break是用于永久终止循环的。
2.continue
将上面程序中的break改为continue,会得到运行结果如下:
总结:continue在while循环中的作用就是:
continue适用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。先判定循环条件。
2.for循环
for循环和while本质上是等价的。
语法:
for(表达式1;表达式2;表达式3)
循环语句;
表达式1为初始化部分,用于初始化循环变量。
表达式2为条件判断语句,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整。
示例:(打印1-10十个数字)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
for (i = 1;/*初始化*/ i <= 10;/*判断部分*/ i++/*调整部分*/)
{
printf("%d\n", i);
}
return 0;
system("pause");
}
一些建议:
1.不可在for循环体内修改循环变量,防止for循环失去控制。
2.建议for语句de循环控制变量的取值采用“半开半闭区间”写法。
(编程领域中,大多数区间都采用前闭后开方式表示的,Linux shell采用前闭后闭)。
3、do…while()循环
do语句的语法:
do
循环语句;
while(表达式);
示例:(打印1-10十个数字)
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 1;
do
{
printf("%d\n", i);
i++;
} while (i <= 10);
return 0;
system("pause");
}
下面给大家分享一道笔试题:
请问程序要执行多少次?
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
k++;
return 0;
system("pause");
}
for中的k=0是个赋值语句,所以表达式为0,0表示不成立,所以不执行.