第一讲练习1 第二讲 练习2 第三讲 练习3 第四讲 练习4 第五讲 练习5 第六讲 练习6 第四章 C程序流程设计 4.1 C语句概述 C语句:以“;”作分隔符,编译后产生机器指令. C语句分类 表达式语句:表达式加分号构成。 空语句:; 程序控制语句(9种): )~else~switch continuebreak goto return 分支 循环 辅助控制 printf(“Hello,world!\n”);复合语句:用{…}括起来的一组语句 一般形式: [数据说明部分;]执行语句部分; 说明:“}”后不加分号 语法上和单一语句相同 复合语句可嵌套 用途: 用于语法上只允许单个语句而处理上需要多个 语句的地方,主要用做if 语句的子句及循环语 句的循环体。 用于改变嵌套if-else语句的配对规则 4.2 程序的三种基本结构 结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句(goto) 结构化程序:由三种基本结构反复嵌套构成的程序叫 优点:结构清晰,易读,提高程序设计质量和效率三种基本结构 顺序结构 流程图N-S图 4.3选择型程序设计 if语句(条件选择语句) if语句的三种形式 形式一: 格式:if (expression) statement 执行过程: expr statement printf(“%d”,x);if......else...... 如果表达式为真(非0),电脑将执行语句1if......else...... 然后跳过语句2,执行下面的语句 if......else...... 如果表达式为假,电脑将跳过语句1,执行语句2, 然后继续执行下面的语句 4.3 选择型程序设计 if语句(条件选择语句) if语句的三种形式 expr statement1 statement2 形式二:格式:if (expression) statement1 else statement2 执行过程: max=x;else max=y; 形式三: 格式: statement1else statement2else elsestatementn expr1statemnt1 expr2expr3 statemntn statemnt3 statemnt2 (salary>1000)index=0.4; else (salary>800)index=0.3; else (salary>600)index=0.2; else (salary>400)index=0.1; else index=0; printf(“%d”,‟a‟);说明: if后面的表达式类型任意 语句可以是复合语句 例考虑下面程序的输出结果:#include main() CompileError! /*ch4_1.c*/ #include main() integer:");scanf("%d",&x); printf("\ninteger:%d--->absolutevalue:%d\n",x,y); 求一个数的绝对值运行:Enter integer:-12integer:-12--->absolute value :12 可用条件运算符代替此判断 /*ch4_2.c*/ #include main() printf("Enterinteger scanf("%d",&a);printf("Enter integer printf("a==b\n");else printf("a!=b\n"); 例输入两个数并判断两数相等否运行:Enter integer a:12 Enter integer b:12 运行:Enterinteger a:12 Enter integer /*ch4_3.c*/#include main() character:");c=getchar(); if(c main() printf("Enterinteger printf("X>Y\n");else printf("X60\n”);break; printf(“Verygood!”); case printf(“Good!”);case printf(“Pass!”);case printf(“Fail!”);default printf(“dataerror!”); break;break; break; break; 运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error! 运行结果:score为5时,输出: Very good! 例#include void main() break;case break;case 运行结果:a=2,b=1/*ch4_5.c*/ #include main() other:");c=getchar(); switch(c) printf("\nGoodmorning!\n");break; case printf("\nGoodnight!\n"); break; case printf("\nHello!\n");break; default printf("\n?\n");break; 根据输入字母输出字符串习题:第四章 108,109,112,115,116,117,126 转61 4.4 循环型程序设计 概述 C语言可实现循环的语句: 用goto 构成循环while 语句 do while语句 语句goto语句及用goto构成循环 goto语句一般格式: goto 语句标号; 标号:语句;功能:无条件转移语句 说明: 标号是标识符 标号只能出现在goto所在函数内,且唯一 标号只能加在可执行语句前面 限制使用goto语句 和goto语句构成循环,求/*ch5_1.c*/ #include main() inti,sum=0; loop:if(i main() intnumber,sum=0; read_loop: scanf("%d",&number); if(!number) goto print_sum; sum+=number; goto read_loop; print_sum: printf("The total sum while语句一般形式: while(表达式) 循环体语句; 执行流程: expr 循环体 while特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体; 例用while循环求/*ch5_2.c*/ #include main() inti,sum=0; 循环初值循环终值 循环变量增值 循环条件 循环体 例显示1~10的平方/*ch5_21.c*/ #include main() 4*4=165*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100 习题:第五章 1,2,3,8~11,13 do~while语句 一般形式: do 循环体语句; while(表达式); 执行流程: do 循环体 expr 特点:先执行循环体,后判断表达式说明: 至少执行一次循环体 do~while可转化成while结构 expr 循环体 循环体While循环 例用do~while循环求/*ch5_3.c*/ #include main() inti,sum=0; }while(i main() inti,sum=0; scanf("%d",&i); do }while(i main() inti,sum=0; for(i=1;i main() inti,sum=0; 例:#includemain( for(i=0;i main( for(;imain( for(;imain( #includemain() for(;(c=getchar())!='\n';)printf("%c #include main() 运行结果:0+100=100 1+99=100 50+50=100运行结果: 123 159上机练习2: 盘建立学号(后3位)文件夹 在此文件夹下编辑下列程序验证结果,保存文件名与题号一致: 课件下载: ftp://10.10.154.27 ftp://202.192.145.9/pub 习题第四章:108,117,124,128 /*ch5_2.c*/ #include main() inti,sum=0; /*ch5_21.c*/#include main() /*ch5_3.c*/#include main() inti,sum=0; }while(i main() inti,sum=0; for(i=1;i main( for(i=0;imain() for(;(c=getchar())!='\n';)printf("%c 请输入一串字符后回车观察程序的运行结果 #include main() 上传作业:(1)保证学号文件夹中有相应的exe 文件 (2)将学号文件夹复制到: ftp://202.192.145.9/incoming/3班第4章练习2 习题: 第五章 1,2,3,8~11,13,14,19~22 上机练习3: 盘建立学号(后3位)文件夹 在此文件夹下编辑下列程序验证结果,保存文件名与题号一致: 课件下载: ftp://10.10.154.27 ftp://202.192.145.9/pub 习题第五章:8,9,10,11,13,19,20,21 22:如何设计,能打印出所有可能的取值? 上传作业:(1)保证学号文件夹中有相应的exe 文件 (2)将学号文件夹复制到: ftp://202.192.145.9/incoming/3班第4章练习3 for语句 一般形式: for([expr1] expr3])循环体语句 for([expr1] expr3])循环体语句; expr2 expr3])循环体语句; expr2 例用for循环求#include main() inti,sum=0; for(i=1;i main() for(i=1;i #define PI 3.14159 main() floatarea; for(r=1;r100) break; printf("r=%d,area=%.2f\n",r,area); break举例:小写字母转换成大写字母,直至输入非字母字符#include main() printf(“小写转大写程序\n”);c=getchar(); putchar(c-'a'+'A');else break; continue语句功能:结束本次循环,跳过循环体中尚未执行的 语句,进行下一次是否执行循环体的判断 仅用于循环语句中 expr whileexpr2 expr1expr3 P.106. 例4.18 求输入的十个整数中正数的个数及其平均值 /*ch5_12.c*/ #include main() inti,num=0,a; float sum=0; for(i=0;i main() for(i=1;i #define PI 3.14159 main() floatarea; for(r=1;r100) break; printf("r=%d,area=%.2f\n",r,area); #include main() printf(“小写转大写程序\n”);c=getchar(); putchar(c-'a'+'A');else break; #include main() inti,num=0,a; float sum=0; printf(“输入10 个整数,求出其中正整数的个数及平均值\n”); for(i=0;i #include main() floatn,t,pi; pi=0;n=1.0; pi=pi+t;n=n+2; pi=pi*4;printf("pi=%10.6f\n",pi); /*ch5_7.c*/#include main() longint f1,f2; int f1=1;f2=1; for(i=1;i #include main() printf(“请输入一个整数,以判断其是否为素数\n”);scanf("%d",&m); k=sqrt(m); primenumber\n",m); else printf("%d primenumber\n",m); /*ch5_10.c译密码*/ #include main() printf(“循环译密码程序\n”);while((c=getchar())!='\n') 上传作业:(1)保证学号文件夹中有相应的exe 文件 (2)将学号文件夹复制到: ftp://202.192.145.9/incoming/3班第4章练习4 共12 习题:第五章 40,41,45,49,57,59~62,64,67~70,72,76 题5.40 1000!=12345...10...15...25...9991000 6224 1448 62 24 1014 24 14 1014 10 求正整数m,n的最大公因子 程序:求非负整数X,Y的最大公因子 main() 盘建立学号(后3位)文件夹 在此文件夹下编辑下列程序验证结果,保存文件名与题号一致: 课件下载: ftp://202.192.145.9/pub ftp://10.10.154.27 要求:在所有程序的变量定义后添加打印语句以表明该程序的作用 例题5.60 #include main() printf(“请输入两个正整数以用辗转相除法求最大公约数:”);scanf(“%d 习题第五章:41,59,60,62,67,68,69,70 并将程序补充完整:57,76 上传作业:(1)保证学号文件夹中有相应的exe 文件 (2)将学号文件夹复制到: ftp://202.192.145.9/incoming/3班第4章练习5 习题: 第五章 77,79,82,86~90,93,94,98,99,100