本篇介绍C语言程序结构,包括顺序结构、选择结构、循环结构。
顺序结构
顺序结构即按照程序书写顺序自上而下顺序执行,每条语句都必须执行并且只能执行一次。这种结构最简单。
选择结构
选择结构即根据一定条件选择要执行的语句,又分为以下三种结构。
- 单分支结构
即if语句,如:
#include<stdio.h>
int main()
{
int a=1,b=2;
if(a>b)
printf("a大");
return 0;
}
说明:满足条件即执行相应语句,否则不执行。
- 双分支结构
即if-else语句。如
#include<stdio.h>
int main()
{
int a=1,b=2;
if(a>b)
printf("a大");
else
print("a小于等于b");
return 0;
}
说明:满足条件执行相应语句,否则执行其他语句。
扩展:if-else也可嵌套使用,如:
#include<stdio.h>
int main()
{
int a;
printf("请输入自然数a的值");
scanf("%d",&a);
if(a>100)
printf("a大于100");
else if(a>90)
printf("a大于90");
else if(a>80)
printf("a大于80");
else
printf("a小于等于80");
return 0;
}
说明:嵌套的条件需要满足一定的子集关系。
- 多分支结构
即switch语句,如:
#include<stdio.h>
int main()
{
int a;
printf("请输入a的值");
scanf("%d",&a);
switch(a)
{
case 1:printf("1");break;
case 2:printf("2");break;
case 3:printf("3");break;
default:printf("error");
}
return 0;
}
说明:不同的情况执行不同的语句,break用来跳出switch语句。
- 条件运算符和条件表达式
条件运算符为?:
,为三目运算符。使用方法如下:
#include<stdio.h>
int main()
{
int a=1,b=2,max;
max=(a>b)?a:b;//条件表达式
printf("%d",max);
return 0;
}
循环结构
循环结构即给定条件成立时反复执行某程序段,直到条件不成立为止。C语言的循环语句有如下几种:
- for语句
举例:
#include<stdio.h>
int main()
{
int i,a=0;
for(i=0;i<10;i++)
{
a+=i;
}
printf("%d",a);
return 0;
}
说明:该程序功能为求1+······+9的值,i=0
为初始条件,i<10
为循环条件,i++
为循环变量增量。执行循环语句前判断i<10
,执行循环语句后进行i++
。
- while语句
举例:
#include<stdio.h>
int main()
{
int i=0,a=0;
while(i<10)
{
a+=i;
i++;
}
printf("%d",a);
return 0;
}
说明:执行循环语句前判断i<10
。必须以某种方式改变循环变量的值,这样循环才可能结束。
- do-while语句
举例:
#include<stdio.h>
int main()
{
int i=0,a=0;
do
{
a+=i;
i++;
} while(i<10);
printf("%d",a);
return 0;
}
说明:执行循环语句后判断i<10
- goto语句
goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。
举例:
//
#include<stdio.h>
int n=0;
int main()
{
printf("input a string: ");
loop: if (getchar()!='\n')
{
n++;
goto loop;
}
printf("output: %d\n",n);
return 0;
}
说明:
输入abcdefghijklmnopqrstuvwxyz
,然后Enter
,输出:26
本例用if语句和goto语句构成循环结构。当输入字符不为’\n’时即执行n++进行计数。然后转移至if语句循环执行,直至输入字符为’\n’才停止循环。
- break语句
当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。在多层循环中,一个 break 语句只向外跳一层。
举例:
#include <stdio.h>
int main()
{
int i=1, sum=0;
while(1)
{ //循环条件为死循环
sum+=i;
i++;
if(i>100) break;
}
printf("%d\n", sum);
return 0;
}
说明:
运行结果:5050
while 循环条件为 1,是一个死循环。当执行到第100次循环的时候,计算完i++;后 i 的值为 101,此时 if 语句的条件 i> 100 成立,执行break;语句,结束循环。
- continue语句
continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。
举例:
#include <stdio.h>
int main()
{
char c = 0;
while(c!='\n')
{ //回车键结束循环
c=getchar();
if(c=='4' || c=='5')
{ //按下的是数字键4或5
continue; //跳过当次循环,进入下次循环
}
putchar(c);
}
return 0;
}
说明:
运行结果:
0123456789↙
01236789
程序遇到while时,变量c的值为’\0’,循环条件c!=’\n’成立,开始第一次循环。getchar() 使程序暂停执行,等待用户输入,直到用户按下回车键才开始读取字符。
本例我们输入的是 0123456789,当读取到4或5时,if 的条件c==‘4’||c=='5’成立,就执行 continue 语句,结束当前循环,直接进入下一次循环,也就是说putchar©;不会被执行到。而读取到其他数字时,if 的条件不成立,continue 语句不会被执行到,putchar©;就会输出读取到的字符。
break与continue的对比:break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。
- 无限循环
如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。
举例:
#include <stdio.h>
int main ()
{
for( ; ; )
{
printf("该循环会永远执行下去!\n");
}
return 0;
}
说明:当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,C 程序员偏向于使用 for(;😉 结构来表示一个无限循环。您可以按 Ctrl + C 键终止一个无限循环。
总结一下,本篇介绍了C语言三种程序结构,详细介绍了if-else、switch、for、while、goto、break、continue等。
小僧初来乍到,希望大家多多支持!如有纰漏,欢迎大家在评论区留言,小僧会及时更正,同时,大家如果有疑惑的地方可以把问题写在评论区,小僧看到会回复哟😄!
另外,小僧的公众号上线啦,里面有“实用工具”、“学习资源”以及许多资料,欢迎大家关注一波小僧的公众号👇
参考:
百度百科
《C语言开发从入门到精通》------王长青、韩海玲