1、程序控制结构,新C 语言程序设计,4.1 程序结构,说明语句 可执行语句 表达式语句 空语句 复合语句 函数调用语句 流程控制语句,4.2 顺序结构,4.2.1 顺序结构是最简单的一种程序结构形式,它总是由一组顺序执行的语句构成。 【例4.1】编写程序,实现从键盘上输入学生的三门课成绩,计算并输出其总成绩和平均成绩。 【例4.2】输入一个字符,求它的前驱和后继字符。并按ASCII码值从小到大顺序输出这三个字符及其对应的ASCII码。一个字符的前驱字符是比该字符ASCII码值小1的字符。一个字符的后继字符是比该字符ASCII码值大1的字符。,4.3 选择结构,4.3.1 if语句 if (表达式
2、) 语句【例4.3】编写程序,从键盘输入整数,判定它是否为大于100的数。 【例4.4】输出3个整数中的最大数。 【例4.5】输入两个整数,从小到大排序输出,4.3 选择结构,4.3.1 if语句 if (表达式) 语句1 else语句2【例4.6】输入两个整数,从小到大排序输出 【例4.7】使用if-else语句改写例4 .4,求三个整数的最大值。,4.3 选择结构,4.3.2 if嵌套 if ()if () 语句1else语句2elseif ()语句3else 语句4 【例4.8】输出3个整数中的最大数。 【例4.9】输入三个整数,从小到大排序输出。,4.3 选择结构,4.3.3 swit
3、ch语句 switch语句的形式 switch (表达式) case 常数表达式1:语句序列1 case 常数表达式n:语句序列n default:默认语句序列 【例4.13】编写程序,输入一个百分制的成绩,要求根据不同分数输出成绩等级A、B、C、D、E。90分以上为A,8089分为B, 7079分为C, 6069分为D,60分以下为E。 【例4.14】简单计算器。请编写一个程序计算表达式:data1 op data2的值,其中op为运算符+、-、*、/。程序不考虑除数为0的出错处理,假设输入的除数不等于0。,4.4 循环结构,4.4.1 while循环 while语句的格式如下: while
4、 (表达式)循环体,4.4 循环结构,【例4.15】编写程序求sum=1+2+3+100的值。 【例4.16】编写程序求1*2*3*?=100000。 【例4.17】输入一个整数,求它的各位之和。 【例4.18】设计采用欧几里德算法求两个自然数的最大公约数的程序。 求最大公约数的欧几里德算法: (1)输入m,n。 (2)求m和n的余数r。 (3)判断除数r是否不等于0。如果r不等于0,则将除数作为新的被除数,即m=n,余数作为新的除数,即n=r。 (4)重复(2)直到余数r为0,此时的n即为两个自然数的最大公约数,退出循环。 (5)输出最大公约数n。,4.4 循环结构,4.4.2 do whi
5、le循环 do while语句的格式如下: do 循环体 while (表达式);【例4.19】用do while语句求10!=123910。 【例4.20】买房计划 2011年张三年收入5万元,70%用于存款购房,房价50万元,张三准备贷款购房,首付30%,张三的年收入每年以5%的速度增长,房价也以每年10%的速度增长,问到哪一年张三可以攒够首付的钱。,4.4 循环结构,4.4.2 for循环for语句的格式如下: for (表达式1;表达式2;表达式3) 循环体 【例4.22】用for语句求sum=1+2+3+99+100。 【例4.23】编写程序找出所有三位水仙花数。所谓水仙花数是指其各
6、位数字的立方和等于该数本身。例如,153=13+53+33,所以153是水仙花数。,4.4 循环结构,4.4.4 其它控制语句 break语句 【例4.24】输入一个正整数n,判断它是否为素数。素数就是只能被1和自身整除的数。 解题思路: 判断n是否为素数,可以按素数定义来进行判断,用n依次除以2到n-1之间的所有数,只要发现有一个数能够被n整除,马上可以结束循环,判定n不是素数。如果没有一个能够被n整除的数,则n为素数。 continue语句 【例4.25】编写程序把能够被5整除的两位正整数输出,一行输出5个数。 解题思路: 定义变量i用于控制循环,以及表示两位正整数。变量c用于统计能够被5
7、整除的数的个数。程序依次判断一个两位i是否能被5整除,如果i不能被5整除,则结束本次循环,继续判断下一个数。如果i可以被5整除,则输出该数,输出数的个数c加1。如果一行输出数的个数满了5个,则换行输出。 goto语句 【例4.26】用if语句和goto语句构成循环,求sum=1+2+3+100。,4.4 循环结构,4.4.5 循环控制嵌套 【例4.27】编制程序,打印乘法九九表。 【例4.28】用循环语句输出用*号组成的金字塔。要求:用户可以指定输出的行数。 【例4.29】求100以内的全部素数。并将找到的素数按每行5个的形式输出在屏幕上。 【例4.30】修改前面例子的买房计划,张三如果想在6年内买房,它的年收入增长最少要达到多少,要求增长率精确到小数点后两位,即精确到xx.xx%.,