C语言程序设计程序控制结构C语言的语句C语言中语句以分号“;”结束,语句分为:1.声明语句:在程序编译时处理,在程序运行时不产生相应的操作。2.执行语句:在程序运行时向计算机系统发出操作命令,使计算机执行特定的操作。voidmain(){inti;/*声明语句*/printf(%d\n,(i=1,++i));/*执行语句*/}C语言的执行语句表达式语句:表达式加分号“;”空语句:仅一个分号“;”构成的语句复合语句:用一对花括号{}括起来的多条语句控制语句:C语言提供9种控制语句,见P62#includemath.hvoidmain(){inti;i=abs(-2);;/*表达式语句(赋值语句)空语句*/printf(%d\n,i);/*表达式语句(函数调用语句)*/}C语言的执行语句#includestdio.hvoidmain(){inta,b;printf(Pleaseinputa,b:\n);scanf(%d,%d,&a,&b);if(ab)/*控制语句(if语句)*/{intt;t=a;a=b;b=t;}/*复合语句*/printf(a=%d,b=%d\n,a,b);getch();}程序控制结构程序的三种基本结构顺序结构:程序执行按照代码书写顺序执行选择结构:循环结构:if语句switch语句当型循环结构(for语句、while语句)直到型循环结构(do-while语句)顺序结构所谓顺序结构程序就是按代码书写顺序,自上而下执行的语句构成的程序段。一般顺序结构的流程图为:动作1动作2动作3例:计算两个键盘输入的整数的平均值并输出。开始输入两个整数计算平均值定义三个变量输出平均值结束#includestdio.hmain(){inta,b;floataverage;printf(Pleaseinputa,b:\n);scanf(%d,%d,&a,&b);average=(a+b)/2.0;printf(average=%f\n,average);getch();}选择结构C语言的选择控制语句有两条:条件选择语句:if语句开关分支语句:switch语句一、if语句的三种形式1、if(表达式)语句表达式真(非0)语句序列假(0)例:输入一个字母,以小写形式输出该字母。#includestdio.hmain(){charc;printf(Inputaletter:);c=getchar();if(c='A'&&c='Z')c=c+32;printf(%c\n,c);getch();}开始输入一个字母定义一个字符变量输出字母结束大写字母?转换为小写字母真(非0)假(0)选择结构一、if语句的三种形式2、if(表达式)语句1else语句2表达式真(非0)语句序列2假(0)语句序列1例:输出实数x,y中的较大者。#includestdio.hmain(){floatx,y;printf(Inputx,y:);scanf(%f,%f,&x,&y);if(xy)printf(%f\n,x);elseprintf(%f\n,y);getch();}开始输入两个实数定义两个实型变量输出x结束xy?输出y真(非0)假(0)选择结构一、if语句的三种形式3、if(表达式1)语句1elseif(表达式2)语句2......elseif(表达式n)语句n[else语句n+1]表达式1真(非0)语句序列n假(0)语句序列1表达式2语句序列2真(非0)表达式n假(0)真(非0)语句序列n+1假(0)例:输入百分制成绩,要求输出相应的五级制成绩。百分制成绩与五级制成绩之间的转换标准为:90分以上为“A”;80~89分为“B”;70~79分为“C”;60~69分为“D”;60分以下为“E”。#includestdio.hmain(){intscore;printf(Pleaseinputthescore(0~100):);scanf(%d,&score);if(score=90)printf(A\n);elseif(score=80)printf(B\n);elseif(score=70)printf(C\n);elseif(score=60)printf(D\n);elseprintf(E\n);getch();}例:在一对/**/之间补充程序,使对其输入的一个月工资数额,求应交税款。设应交税款的计算公式如下:如:输入:4500输出:f(4500.00)=30.00输入:6500输出:f(6500.00)=195.00输入:9500输出:f(9500.00)=645.00#includestdio.hvoidmain(){floatx;doubley;printf(Pleaseinputanumber:\n);scanf(%f,&x);/**//**/printf(f(%.2f)=%.2f\n,x,y);getch();}if(x=3500)y=0;elseif(x=5000)y=(x-3500)*0.03;elseif(x=8000)y=(x-3500)*0.1-105;elseif(x=12500)y=(x-3500)*0.2-555;.125008000,555%203500;80005000,105%103500;50003500,%33500;3500,0xxxxxxxxfif语句的嵌套if语句的嵌套:一个if语句的if分支、elseif分支或else分支中又完整地包含了另一个if语句。if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4书写代码时,写出层次关系例:有如下一函数,请判断以下哪个程序是正确的?0)(x10)(x00)(x1-)(xf程序1:main(){intx,y;scanf(%d,&x);if(x0)y=-1;elseif(x==0)y=0;elsey=1;printf(x=%d,y=%d,x,y);}例:有如下一函数,请判断以下哪个程序是正确的?0)(x10)(x00)(x1-)(xf程序2:main(){intx,y;scanf(%d,&x);if(x=0)if(x0)y=1;elsey=0;elsey=-1;printf(x=%d,y=%d,x,y);}例:有如下一函数,请判断以下哪个程序是正确的?0)(x10)(x00)(x1-)(xf程序3:main(){intx,y;scanf(%d,&x);y=-1;if(x!=0)if(x0)y=1;elsey=0;printf(x=%d,y=%d,x,y);}y=-1;if(x!=0){if(x0)y=1;}elsey=0;例:有如下一函数,请判断以下哪个程序是正确的?0)(x10)(x00)(x1-)(xf程序4:main(){intx,y;scanf(%d,&x);y=0;if(x=0)if(x0)y=1;elsey=-1;printf(x=%d,y=%d,x,y);}y=0;if(x=0){if(x0)y=1;}elsey=-1;例:以下程序的输出结果是?#includestdio.hmain(){inta,b,c,x;a=b=c=0;x=35;if(!a)x--;elseif(b);if(c)x=3;elsex+=4;printf(x=%d\n,x);}x=38inta=1;switch(a){case1:a+=1;break;case2:a+=2;break;default:a+=0;}printf(%d\n,a);选择结构二、switch语句switch语句的一般形式:switch(表达式){case常量表达式1:语句组1;[break;]case常量表达式2:语句组2;[break;]……case常量表达式n:语句组n;[break;][default:语句组n+1;]}多分支选择结构:根据一个表达式的不同取值来实现对分支的选择。语句组1break计算表达式=常量1有语句组2=常量2无break无有语句组n=常量nbreak有无语句组n+1=其它#includestdio.hmain(){chargrade;grade=getchar();grade=(grade='a'&&grade='z')?grade-32:grade;switch(grade){case'A':printf(90~100\n);break;case'B':printf(80~89\n);break;case'C':printf(70~79\n);break;case'D':printf(60~69\n);break;case'E':printf(60\n);break;default:printf(Error\n);}}每个分支的常量的值必须互不相同各个分支允许内嵌多个语句,而且可以不用{}括起来最后一个分支可以不加break语句#includestdio.hmain(){chargrade;grade=getchar();switch(grade){default:printf(Error\n);break;case'A':case'a':printf(90~100\n);break;case'B':case'b':printf(80~89\n);break;case'C':case'c':printf(70~79\n);break;case'D':case'd':printf(60~69\n);break;case'E':case'e':printf(60\n);break;}}无论default分支是否最后出现,它都是作为最后一个分支来考虑允许多个case共用一组执行语句例:以下程序的输出结果是?main(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(a=%d,b=%d\n,a,b);}a=2,b=1break;a=1,b=0例:运行以下程序段,结果为:()intt=3;switch(t){case'1':printf(1);break;case'2':printf(2);break;case'3':printf(3);break;default:printf(Error!);}A)1B)2C)3D)Error!Dintt=49;A循环结构循环结构的特点是在给定的条件成立时,反复执行某程序段,直到条件不成立。循环条件:给定的条件循环体:反复执行的程序段C语言的循环控制语句有三种:while语句do-while语句for语句循环结构(while)while(循环条件表达式){循环体}真(非0)假(0)表达式循环体main(){intn=1,sum=0;while(n=100){sum+=n;++n;}printf(n=%d,sum=%d\n,n,sum);}去掉花括号{}?while(n=100);?循环结构(do-while)do{循环体}while(循环条件表达式);真(非0)假(0)表达式循环体main(){intn=1,sum=0;do{sum+=n++;}while(n=100);printf(n=%d,sum=%d\n,n,sum);}勿忘分号“;”While与do-while的比较main(){intsum=0,n;scanf(%d,&n);while(n=10){sum+=n;n++;}printf(%d\n,sum);}main(){intsum=0,n;scanf(%d,&n);do{sum+=n;n++;}while(n=10);printf(%d\n,sum);}输入1时,