在C语言程序中,一共有三种程序结构:顺序结构、选择结构(分支结构)、循环结构。
三者的特点
顺序结构,从头到尾一句接着一句的执行下来,直到执行完最后一句,无循环,无分支;
选择结构,到某个节点后,会根据一次判断的结果来决定之后向哪一个分支方向执行;
循环结构,循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,关键在于根据判断的结果,来决定循环体执行多少次。
C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。
顺序结构:
#include <stdio.h>
int main()
{
int a = 3, b = 2;
int sum = a+b; printf("a+b=%d\n", sum); //输出a+b的和
return 0;
}
选择结构·
C语言选择结构用于判断给定的条件,根据判断的结果来控制程序的流程。
在C语言中, 选择结构有两种: 1. if-else语句, 2. switch-case语句;
- if else 函数
1. </`f(条件1){
//满足条件1执行此代码块
...
}else if(条件2){
//不满足条件1, 满足条件2执行此代码块
...
}else{
//即不满足条件1也不满足条件2 执行此代码块
...
}`>
#include <stdio.h> //if else 语句 if while 后面不加分号
#include <stdlib.h>
int main()
{
int i;
while(scanf("%d",&i)!=EOF)
{
if(i>0)
{
printf("%d is bogger than zero\n",i);
}else{
printf("%d is small than zero\n",i);
}
}
system("pause");
}
2)swhich case例子
switch (变量或表达式)
{
case 常量表达式1:语句块1; break;
case 常量表达式2:语句块2; break; ......
case 常量表达式n:语句块n; break; default:
语句块n+1; break;
}
例 求闰年
#include <stdio.h>
#include <stdlib.h>
int main()
{
int year,mon;
while(scanf("%d%d",&year,&mon)!=EOF)
{
switch (mon)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:printf("%d is 31days\n",mon);break;
case 4:
case 6:
case 9:
case 11:printf("%d is 30days\n",mon);break;
case 2:printf("%d is 28days\n",mon,28+(year%4==0&&year%100!=0||year%400==0));
}
}
}
重点:switch的条件只能是整型和字符型(其实就是字符的ascii码)或者这些类型的表达式,case匹配的只能是整型或者字符型常量或者这两个类型的常量表达式, 也就是case不能匹配变量。
.循环结构
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。
在C语言中有三种循环结构: for循环, while循环, do-while循环.
1)for循环
for(表达式1; 表达式2; 表达式3)
{
循环体;
}
for循环中各表达式的含义
表达式1:初值表达式,用于循环开始前,为循环变量设置初始值
表达式二:循环控制逻辑表达式,它控制循环执行的条件,决定循环次数
表达式三:循环控制变量修改表达式,定义了一次循环,
三者必须用分号隔开
例求从1加到100的例子
#include <stdio.h>
main()
{
for(i=1;i<=100;i++)
s=s+i;
printf("s=%d",d);
}
while语句
表达式为:
while(表达式)
循环语句
例求1加到100的值
#include <stdio.h>
int main(){
int n=1,sum=0;
while(n<=100){
sum+=n;
n++;
}
/*do{
sum+=n;
n++;
}while(i<=100);*/
printf("sum=%d\n",sum);
return 0;
}
do while
特点,先执行循环体中的语句,再通过判断表达式的值来决定是否继续执行循环,循环条件的测试是在循环的尾部进行的,
一般形式为:
do
循环体语句
while(表达式);
例
#include <stdio.h>
int main(){
int n=1,sum=0;
/*while(n<=100){
sum+=n;
n++;
}
*/
do{
sum+=n;
n++;
}while(i<=100);
printf("sum=%d\n",sum);
return 0;
}
break语句
功能改变程序结构
一般表达式为
break;
例如求1000名学生中举行慈善募捐,当总数达到100000时结束,统计此时捐款的人数及平均没人捐款的数目
#include <stdio.h>
#define SUM 100000
int main(){
float amount,ave,total;
int i;
for(i=1,total=0;i<=1000;i++){
printf("Please input amount:");
scanf("%f",&amount);
total+=amount;
if(total>=SUM)
break;
}
ave=total/i;
printf("num=%d\nave=%f\n",i,ave);
return 0;
}
continue语句
功能是使本次循环提前结束,即跳过循环体中的continue语句后面尚未执行的循环体语句,继续执行下一次循环的条件判断。
例求100到200之间能被三整除的数
#include <stdio.h>
int main(){
int n;
for(n=100;n<=200;n++){
if(n%3==0)
continue;
printf("%d ",n);
}
printf("\n");
return 0;
}
循环的嵌套
解决大部分实际问题往往要用到循环嵌套来解决,复合结构程序必须做到嵌套层次清楚,嵌套层次之间不能相互交叉。
一般有while ,do-while,for,三种相互嵌套。