C3-三种基本结构的程序设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

…… 语句组 语句组 nn 语句组 2 2 …… 语句组
break;
语句组 n+1 语句组 n+1
break;
break;
default: 语句组n+1 }
注:①在VC6.0下,表达式和常量表达式为任何整型、字符型或枚 举类型。 ②每一个case后的常量表达式值必须互不相同。 ③ default 位 置 任 意 , 是 所 有 case 皆 不 满 足 时 的 入 口 ; 若 无 default且无匹配常量表达式,则不执行任何操作。 ④语句组不须加{ }。 ⑤break无条件转向本层复合结构的下一条语句。
返回
2019/2/24 8
3.2.3 if嵌套语句(分支嵌套的一般形式)
if后和else后的语句可再包含if语句。
注: else 总是与前面最近的并且没有与其他 else 匹配的if相匹配。
例:if(n>0) if(a>b) c=a; eFra Baidu bibliotekse c=b; 例’:if(n>0) { if(a>b) c=a; } else c=b;
2019/2/24 16
[例3.7]switch语句的嵌套。
#include <stdio.h> void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; } case 2: a++; b++; break; case 3: a++; b++; } printf("a=%d,b=%d\n",a,b); }
2019/2/24
17
[例3.8]输入年、月,输出该月天数。
#include <stdio.h> void年号能被 main() 4 整除但不能被 100 整除,或者年号 {int year,month,days,flag=1; 能被400year,month=?\n"); 整除的年均是闰年。 printf("input scanf("%d%d",&year,&month); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; case 4: case 6: case 9: case 11: days=30; break; case 2: if((year%4==0)&&(year%100!=0)||(year%400==0)) days=29; else days=28; break; default: flag=0; printf("month is error\n"); 返回 } if(flag) printf("year=%d,month=%d,days=%d\n",year,month,days); }
2019/2/24 12
[例3.4]设计求ax2+bx+c=0的一元二次方程解的程序。
#include <stdio.h> #include <math.h> void main() 输入a,b,c { float a,b,c,d,x1,x2,p,q; printf("a,b,c=?"); N Y scanf("%f%f%f",&a,&b,&c); a==0? printf("The equation "); if(fabs(a)<1e-6) printf("is not quadratic.\n"); else 非二次方程 d=b2-4ac { d=b*b-4*a*c; if(fabs(d)<1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else N Y if(d>=1e-6) d==0? { x1=(-b+sqrt(d))/(2*a); x2=(-b-sqrt(d))/(2*a); N b printf("has distinct real roots:%8.4f andY %8.4f\n",x1,x2); d>0? 相等实根 } 2a else { p= -b/(2*a); q=sqrt(-d)/(2*a); printf("has complex roots:\n"); 不相等实根 不相等虚根 printf("%8.4f+%8.4fi\t",p,q); b d b d i printf("%8.4f-%8.4fi\n",p,q); 2 a 2 a 2 a } 返回 } }
2019/2/24
9
[例3.2]求一个点所在的象限。
#include <stdio.h> void main() { float x,y; printf("Input the coordinate of a point.\n"); printf("x="); scanf("%f",&x); printf("y="); scanf("%f",&y); if(x>0) if(y>0) printf("The point is in 1st quadrant.\n"); else printf("The point is in 4th quadrant.\n"); else if(y>0) printf("The point is in 2nd quadrant.\n"); else printf("The point is in 3rd quadrant.\n"); }
2019/2/24 14
[例3.5]根据考试成绩的等级打印百分制分数段。
#include <stdio.h> void main() { char grade; printf("Input the grade:"); scanf("%c",&grade); switch(grade) { case 'A': printf("85~100\n"); break; case 'B': printf("70~84\n"); break; case 'C': printf("60~69\n"); break; case 'D': printf("<60\n"); break; default: printf("error\n"); } }
2019/2/24 15
[例3.6]判别某考试成绩等级是否大于60分。
#include <stdio.h> void main() { char grade; printf("Input the grade:"); scanf("%c",&grade); switch(grade) { case 'A': case 'B': case 'C': printf(">=60\n"); break; case 'D': printf("<60\n"); break; default: printf("error\n"); } }
2019/2/24
返回
10
3.2.4 if-else-if语句(分支嵌套的特殊形式)
if(表达式1) 语句1; else if(表达式2) 语句2; …… else if(表达式n) 语句n; else 语句n+1;
表达式1? 真(非0) 表达式2? 真(非0) 假(0) 假(0)
表达式n? 真(非0) 语句1 语句2 语句n
0 语句2
2019/2/24
7
[例3.1]输入一个整数,判断奇偶。 #include <stdio.h> void main() { int n; printf("Input an integer\n"); scanf("%d",&n); if(n%2==0) printf("The integer is even\n"); else printf("The integer is odd\n"); }
[例3.10]求S=1+2+…+100的和。 #include <stdio.h> void main() { int i,sum=0; i=1; while(i<=100) { sum+=i; i++; } printf("SUM=%d\n",sum); }
2019/2/24 23
[例3.11]求两个正数的最大公因子。
假(0)
语句n+1
2019/2/24
11
[例3.3]求解符号函数。 #include <stdio.h> void main() { int x,sign; printf("Please input a number\n"); scanf("%d",&x); if(x>0) sign=1; else if(x==0) sign=0; else sign=-1; printf("The sign is %d\n",sign); }
2019/2/24 18
3.2.6 goto语句(无条件分支结构)
goto 语句标号; 注:语句标号用标识符表示,用来表示程序的某个位置。 loop: if(i<=100) { sum+=i; i++; goto loop; }
返回
2019/2/24 19
3.3 循环结构(重复结构)
循环语句:在给定条件成立时,反复执行某个程序 段(循环体)。
2019/2/24
13
3.2.5 switch-case语句(开关分支结构)
switch(表达式) { case 常量表达式1: 语句组1
计算表达式值
break; break;
case 常量表达式2: 常量表达式 常量表达式 2 …… 常量表达式 n default 常量表达式 1 1 常量表达式 2 常量表达式 n default 语句组2 …… case 常量表达式n: 语句组n 语句组 语句组 1 1 break;
退出
2019/2/24 3
3.1 顺序结构
顺序结构程序 是按书写顺序执行的语句构成的程序段。
语句1 语句2
返回
2019/2/24 4
3.2 分支结构(条件结构)
3.2.1 基本if语句(单分支结构) 3.2.2 if-else语句(双分支结构) 3.2.3 if嵌套语句(分支嵌套的一般形式) 3.2.4 if-else-if语句(分支嵌套的特殊形式) 3.2.5 switch-case语句(开关分支结构) 3.2.6 goto语句(无条件分支结构)
2019/2/24
返回
21
3.3.2 while语句
while(表达式) 语句;
while (表达式)? 非0 语句 0
注:①先判断,后执行循环体; ②循环体最少执行0次,即表达式不成立时; ③死循环:while(1),即循环体内无改变表达式 的值使之为假的语句,也无跳出循环的语句。
2019/2/24 22
返回
2019/2/24 5
3.2.1 基本if语句(单分支结构)
if(表达式) 语句;
表达式? 注:表达式可以是任意表达式, 为“非0”则执行语句。 非0 语句
0
返回
2019/2/24 6
3.2.2 if-else语句(双分支结构)
if(表达式) 语句1; else 语句2;
非0 语句1
表达式?
复习
第二章 数据类型、运算符和表达式 2.3 变量 变量说明和变量地址 变量的初始化 数据类型 2.4 运算符和表达式 赋值运算 算术运算 关系运算 逻辑运算 逗号运算 条件运算 位运算 复合赋值运算 运算符的优先级和结合律
2019/2/24 1
第三章 三种基本结构的程序设计
3.1 顺序结构 3.2 分支(条件)结构 3.3 循环结构
欧几里得算法(辗转相除法): ①输入两个正数m和n; ②m除以n,余数为r,n->m,r->n; ③若 n=0,则m是最大公因子,结束;否则转②。 #include <stdio.h> void main() { int m,n,r; printf("Please type in two positive integers\n"); scanf("%d%d",&m,&n); while(n) { r=m%n; m=n; n=r; } printf("Their greatest common divisor is %d.\n",m); } 返回
3.3.1 if-goto语句构成的循环结构 3.3.2 while语句 3.3.3 do-while语句 3.3.4 for语句 3.3.5 break语句 3.3.6 continue语句 3.3.7 程序举例 返回
2019/2/24 20
3.3.1 if-goto语句构成的循环结构
[例3.9]求S=1+2+…+100的和。 #include <stdio.h> void main() { int i,sum=0; i=1; loop: if(i<=100) { sum+=i; i++; goto loop; } printf("SUM=%d\n",sum); }
相关文档
最新文档