1、第五章第五章 C程序流程设计程序流程设计 C语句概述语句概述 程序的三种基本结构程序的三种基本结构(顺序顺序、选择选择、循环循环)选择型程序设计选择型程序设计(if else,switch)循环型程序设计循环型程序设计(for,while)辅助控制语句辅助控制语句(break,continue,goto,return)11/14/20221C语句概述语句概述 C语句语句:以以“;”作分隔符作分隔符,编译后产生机器指令编译后产生机器指令 C语句分类语句分类 表达式语句表达式语句:表达式表达式加分号构成加分号构成 空语句空语句:;程序控制语句程序控制语句(9种)种):复合语句复合语句:用:用 括起
2、来的括起来的一组语句一组语句 一般形式:一般形式:数据说明部分数据说明部分;执行语句部分执行语句部分;如如 total=total+limit;a=3;func();printf(“Hello,world!n”);C程程序序控控制制语语句句分支语句分支语句if else switch循环语句循环语句for(;)while()do while()辅助控制辅助控制breakcontinuegotoreturn复合语句的说明:复合语句的说明:“”后后不加分号不加分号 语法上和单一语句相同语法上和单一语句相同 复合语句复合语句可嵌套可嵌套11/14/20222复合语句复合语句 在什么情况下使用复合语句
3、?在什么情况下使用复合语句?条件语句和循环语句在语法上只允许带一条条件语句和循环语句在语法上只允许带一条语句语句 当分支和循环中需要进行多项操作时当分支和循环中需要进行多项操作时被当作一条被当作一条语句来处理语句来处理复合语句在语法上是一个整体,相当于一个语句。凡复合语句在语法上是一个整体,相当于一个语句。凡 是能是能 使用简单语句的地方,都可以使用复合语句。使用简单语句的地方,都可以使用复合语句。复合语句内还可以包含复合语句,即复合语句的嵌套复合语句内还可以包含复合语句,即复合语句的嵌套 使用使用 11/14/20223C程序的三种基本结构程序的三种基本结构 结构化程序设计结构化程序设计 基
4、本思想基本思想:任何程序都可以用三种基本结构表:任何程序都可以用三种基本结构表示,示,限制使用无条件转移语句限制使用无条件转移语句(goto)结构化程序:三种基本结构反复嵌套构成结构化程序:三种基本结构反复嵌套构成 优点:结构清晰,易读,提程序质量和效率优点:结构清晰,易读,提程序质量和效率 三种基本结构三种基本结构 顺序结构顺序结构 选择结构选择结构 二分支选择二分支选择 多分支选择多分支选择 循环结构循环结构 当型循环当型循环 直到型循环直到型循环ABAB流程图流程图N-S图图PAB真真假假PBA真真假假kA1A2AiAnk=k2k=k1k=knk=ki.PA假假真真当当P为真为真AAP真
5、真假假A直到直到P为真为真11/14/202245.1关系运算符和表达式关系运算符和表达式 功能:比较两个功能:比较两个常量、变量常量、变量或或表达式表达式的值的大小的值的大小 符号:符号:=!=结合方向:结合方向:从左向右从左向右 优先级:优先级:=(6)=!=(7)关系表达式的值:逻辑关系表达式的值:逻辑“真真”和和“假假”,用,用1和和0表示表示 用途:用途:循环语句循环语句和和选择语句选择语句中中例例 ca+b /c(a+b)ab!=c /(ab)!=c a=bc /a=(bc /a=(bc)例例int a=3,b=2,c=1,d,f;ab(ab)=cb+cbf=abc例例int a=
6、3,b=2,c=1,d,f;ab/表达式值表达式值1(ab)=cb+cbf=abc例例int a=3,b=2,c=1,d,f;ab/表达式值表达式值1(ab)=c/表达式值表达式值1b+cbf=abc例例int a=3,b=2,c=1,d,f;ab/表达式值表达式值1(ab)=c/表达式值表达式值1b+cbf=abc例例int a=3,b=2,c=1,d,f;ab/表达式值表达式值1(ab)=c/表达式值表达式值1b+cb/d=1f=abc例例int a=3,b=2,c=1,d,f;ab/表达式值表达式值1(ab)=c/表达式值表达式值1b+cb/d=1f=abc/f=0例:若例:若a=0;b
7、=0.5;x=0.3;则则 a=x=b的值为的值为 例:若例:若a=0;b=0.5;x=0.3;则则 a=x278在在C中是允许的,值为中是允许的,值为例:例:5278在在C中是允许的,值为中是允许的,值为 0例:例:int i=1,j=7,a;a=i+(j%4!=0);则则a=例:例:int i=1,j=7,a;a=i+(j%4!=0);则则a=2例例 a0 结果为结果为 A100 结果为结果为例例 a0 结果为结果为 1 A100 结果为结果为 0关系运算请注意:关系运算请注意:(1)应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断如如 1.0/3.0*3.0=1.0 结果为结
8、果为 关系运算请注意:关系运算请注意:(1)应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断如如 1.0/3.0*3.0=1.0 结果为结果为 0关系运算请注意:关系运算请注意:(1)应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断如如 1.0/3.0*3.0=1.0 结果为结果为 0可改写为:可改写为:fabs(1.0/3.0*3.0-1.0)1E-6(2)注意区分注意区分“=”与与“=”如如 int a=0,b=1;if(a=b)printf(“a equal to b”);else printf(“a not equal to b”);(2)注意区分注意区分“=”
9、与与“=”如如 int a=0,b=1;if(a=b)printf(“a equal to b”);else printf(“a not equal to b”);(2)注意区分注意区分“=”与与“=”如如 int a=0,b=1;if(a=b)printf(“a equal to b”);else printf(“a not equal to b”);(2)注意区分注意区分“=”与与“=”如如 int a=0,b=1;if(a=b)printf(“a equal to b”);else printf(“a not equal to b”);11/14/202255.2逻辑运算符和表达式逻辑运
10、算符和表达式 功能:判断逻辑值和对逻辑值进行操作功能:判断逻辑值和对逻辑值进行操作 符号:符号:!&|逻辑运算真值表逻辑运算真值表 结合方向:结合方向:!从右向左从右向左,&|从左向右从左向右 优先级:优先级:!(2)&(11)|(12)逻辑运算中:逻辑运算中:运算参量运算参量:0表示表示假假,非非0表示表示真真 运算结果运算结果:0表示表示假假,1表示表示真真 短路特性短路特性:逻辑表达式求解时,:逻辑表达式求解时,并非所有的逻辑并非所有的逻辑运算符都被执行运算符都被执行,只是在,只是在必须执行下一个逻辑运算必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符符才能求出表达式的解时,
11、才执行该运算符ab!a!ba&ba|b真真真真真真假假假假真真假假假假ab!a!ba&ba|b真真真真假假真真假假假假假假真真真真假假假假真真ab!a!ba&ba|b真真真真假假假假真真假假假假真真假假真真真真假假假假假假真真真真ab!a!ba&ba|b真真真真假假假假真真真真假假假假真真假假假假真真真真假假假假假假假假真真真真假假ab!a!ba&ba|b真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假例例a=x&xb&xya=b|x=y!a|ab例例a=x&x=b/(a=x)&(xb&xya=b|x=y!a|ab例例a=x&x=b/(a=x)&
12、(xb&xy/(ab)&(xy)a=b|x=y!a|ab例例a=x&x=b/(a=x)&(xb&xy/(ab)&(xy)a=b|x=y/(a=b)|(x=y)!a|ab例例a=x&x=b/(a=x)&(xb&xy/(ab)&(xy)a=b|x=y/(a=b)|(x=y)!a|ab/(!a)|(ab)例例a=4;b=5;!aa&ba|b!a|b4&0|253&2|83&2|83&2|83&2|83&2|83&2|83&2|83)&2|(83&2|83)&2|(8b)&(n=cd)例例a&b&c/只在只在a为真时,才判别为真时,才判别b的值的值/只在只在a、b都为真时,才判别都为真时,才判别 c的
13、值的值a|b|c/只在只在a为假时,才判别为假时,才判别b的值的值/只在只在a、b都为假时,才判别都为假时,才判别 c的值的值a=1;b=2;c=3;d=4;m=1;n=1;(m=ab)&(n=cd)/结果结果m=0,n=111/14/202265.3 选择程序设计选择程序设计 if 语句语句(条件选择语句条件选择语句)if 语句的三种形式语句的三种形式 形式一:形式一:格式:格式:if(expression)statement 执行过程:执行过程:形式二:形式二:格式:格式:if(expression)statement1 else statement2 执行过程:执行过程:exprstat
14、ement非非0=0exprstatement1statement2非非0=0例:例:if(xy)printf(“%d”,x);例:例:if(xy)max=x;else max=y;11/14/202275.3 选择程序设计选择程序设计 if 语句语句(条件选择语句条件选择语句)if 语句的三种形式语句的三种形式 形式一:形式一:格式:格式:if(expression)statement 执行过程:执行过程:形式二:形式二:格式:格式:if(expression)statement1 else statement2 执行过程:执行过程:形式三:形式三:格式:格式:执行过程:执行过程:if(ex
15、pr1)statement1else if(expr2)statement2else if(expr3)statement3.else statementn expr1statemnt1非非0=0expr2expr3statemntnstatemnt3statemnt2非非0非非0=0=0例:例:if(salary1000)index=0.4;else if(salary800)index=0.3;else if(salary600)index=0.2;else if(salary400)index=0.1;else index=0;11/14/20228如:如:if(a=b&x=y)prin
16、tf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);例例 考虑下面程序的输出结果考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);例例 考虑下面程序的输出结果考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);关于关于if语句的说明:语句的说
17、明:if后面的后面的表达式类型任意表达式类型任意 语句可以是语句可以是复合语句复合语句 if(x)if(x!=0)if(!x)if(x=0)Compile Error!11/14/20229/*ch4_1.c*/#include main()int x,y;printf(Enter an integer:);scanf(%d,&x);y=x;if(yabsolute value:%dn,x,y);例例1 求一个数的绝对值求一个数的绝对值运行:运行:Enter an integer:-12 integer:-12-absolute value:1211/14/202210/*ch4_2.c*/#
18、include main()int a,b;printf(Enter integer a:);scanf(%d,&a);printf(Enter integer b:);scanf(%d,&b);if(a=b)printf(a=bn);else printf(a!=bn);例例2 输入两个数并判断两数相等否输入两个数并判断两数相等否运行:运行:Enter integer a:12 Enter integer b:12 a=b 运行:运行:Enter integer a:12 Enter integer b:9 a!=b 11/14/202211/*ch4_3.c*/#include main(
19、)char c;printf(Enter a character:);c=getchar();if(c=0&c=A&c=a&c=z)printf(The character is a lower lettern);else printf(The character is other charactern);例例3 判断输入字符种类判断输入字符种类运行:运行:Enter a character:The character is a control character运行:运行:Enter a character:8 The character is a digit运行:运行:Enter a ch
20、aracter:D The character is a capital letter运行:运行:Enter a character:h The character is a lower letter运行:运行:Enter a character:*The character is other character11/14/202212if(expr1)if(expr2)statement1 else statement2内嵌内嵌if if语句嵌套:语句嵌套:if(expr1)if(expr2)statement1else statement3 内嵌内嵌ifif(expr1)statement
21、1else if(expr3)statement3 else statement4内嵌内嵌ifif(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌内嵌if内嵌内嵌if11/14/202213例例 输入两数并判断其大小关系输入两数并判断其大小关系/*ch4_4.c*/#include main()int x,y;printf(Enter integer x,y:);scanf(%d,%d,&x,&y);if(x!=y)if(xy)printf(XYn);else printf(
22、XYn);else printf(X=Yn);运行:运行:Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Yif else 配对原则配对原则:缺省缺省 时,时,else总是和它总是和它上面上面离它最近的未配对离它最近的未配对的的if配对配对if()if()if()else.else.else.11/14/202214例:例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);实现
23、实现if else 正确配对方法:加正确配对方法:加 例例 考虑下面程序输出结果考虑下面程序输出结果:main()int x=100,a=10,b=20;int v1=5,v2=0;if(ab)printf(“%d”,a);else printf(“%d”,b);printf(“%d”,ab?a:b);例例 求求 a+|b|printf(“a+|b|=%dn”,b0?a+b:a-b);例例 x0?1:(x=0)?x:-x (c=a&cy?1:1.5 /xy ,值为值为1.0;x60n”);break;.例例 switch(score)case 5:printf(“Very good!”);ca
24、se 4:printf(“Good!”);case 3:printf(“Pass!”);case 2:printf(“Fail!”);default:printf(“data error!”);运行结果:运行结果:score为为5时,输出:时,输出:Very good!Good!Pass!Fail!data error!例例 void main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“na=%d,b=
25、%d”,a,b);运行结果:运行结果:a=2,b=111/14/202218/*ch4_5.c*/#include main()int c;printf(Enter m or n or h or other:);c=getchar();switch(c)case m:printf(nGood morning!n);break;case n:printf(nGood night!n);break;case h:printf(nHello!n);break;default:printf(n?n);break;例例 根据输入字母输出字符串根据输入字母输出字符串11/14/2022194.4 循环程序
26、设计循环程序设计 C语言中可以实现循环的语句语言中可以实现循环的语句 if 和和 goto 构成循环构成循环 while 语句语句 do while()语句语句 for 语句语句 goto语句及用语句及用goto构成循环构成循环 一般形式:一般形式:功能:无条件转移功能:无条件转移 goto 语句标号;语句标号;.标号标号:语句;语句;警告:警告:不能用整数作标号不能用整数作标号 只能出现在只能出现在goto所在函数内所在函数内,且唯一且唯一 只能加在可执行语句前面只能加在可执行语句前面 限制使用限制使用goto语句语句11/14/202220例例 用用if 和和goto语句构成循环,求语句构
27、成循环,求1001nn/*ch5_1.c*/#include main()int i,sum=0;i=1;loop:if(i=100)sum+=i;i+;goto loop;printf(%d,sum);sum=0+1sum=1+2=3sum=3+3=6sum=6+4sum=4950+100=5050循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环条件循环条件循环体循环体11/14/202221例例 从键盘输入一组数据,以从键盘输入一组数据,以0结束输入,求数据和结束输入,求数据和/*ch5_11.c*/#include main()int number,sum=0;read_lo
28、op:scanf(%d,&number);if(!number)goto print_sum;sum+=number;goto read_loop;print_sum:printf(The total sum is%dn,sum);11/14/2022224.4 循环程序设计循环程序设计 while语句语句 一般形式:一般形式:执行流程:执行流程:判断表达式,后执行循环体判断表达式,后执行循环体while(表达式表达式)循环体语句;循环体语句;expr循环体循环体假假(0)真真(非非0)while 循环体有可能一次也不执行循环体有可能一次也不执行 循环体可为循环体可为任意类型语句任意类型语句
29、下列情况,退出下列情况,退出while循环循环 条件表达式不成立(为零)条件表达式不成立(为零)循环体内遇循环体内遇break,return,goto无限循环无限循环:while(1)循环体循环体;11/14/202223例例 while语句语句构成循环,求构成循环,求1001nn/*ch5_2.c*/#include main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环条件循环条件循环体循环体11/14/202224例例 显示显示110的平方的平方/*ch5_2
30、1.c*/#include main()int i=1;while(i=10)printf(%d*%d=%dn,i,i,i*i);i+;运行结果:运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=10011/14/2022254.4 循环程序设计循环程序设计 do while()语句语句 一般形式:一般形式:执行流程:执行流程:特点:特点:先先执行循环体,再判断执行循环体,再判断 至少执行一次循环体至少执行一次循环体 可转化为可转化为while循环循环do 循环体语句循环体语句;while(表达式表达式);do循环体循环
31、体expr假假(0)真真(非非0)whileexpr循环体循环体假假(0)真真(非非0)循环体循环体While循环循环11/14/202226例例 dowhile语句语句构成循环,求构成循环,求1001nn/*ch5_3.c*/#include main()int i,sum=0;i=1;do sum+=i;i+;while(i=100);printf(%d,sum);11/14/202227例例 while和和dowhile比较比较/*ch5_4.c*/#include main()int i=1,sum=0;scanf(%d,&i);do sum+=i;i+;while(i=10);pri
32、ntf(%d,sum);#include main()int i=1,sum=0;scanf(%d,&i);while(i=10)sum+=i;i+;printf(%d,sum);11/14/2022284.4 循环程序设计循环程序设计 for 语句语句 一般形式:一般形式:执行流程:执行流程:一般应用方式:一般应用方式:for(exp1;exp2;exp3)循环体语句循环体语句;expr2循环体循环体假假(0)真真(非非0)forexpr1expr3for(循环变量赋初值循环变量赋初值;循环条件循环条件;循环变量增值循环变量增值)循环体语句;循环体语句;expr1,expr2,expr3 类
33、型任意类型任意 exp1,exp2,exp3都可省略,但分号不可省都可省略,但分号不可省 无限循环无限循环:for(;)for语句可以转换成语句可以转换成while结构结构11/14/202229例例1#include main()int i=0;for(i=0;i10;i+)putchar(a+i);运行结果:运行结果:abcdefghij例例2#include main()int i=0;for(;i10;i+)putchar(a+i);例例3#include main()int i=0;for(;i10;)putchar(a+(i+);例例4#include main()int i=0;
34、for(;i10;putchar(a+i),i+);例:多种方式连续输出多个字符例:多种方式连续输出多个字符11/14/202230例:打印加法表例:打印加法表#include main()int i,j,k;for(i=0,j=100;i=j;i+,j-)k=i+j;printf(%d+%d=%dn,i,j,k);例:打印输入的多个字符例:打印输入的多个字符#includemain()char c;for(;(c=getchar()!=n;)printf(%c,c);例:根据输入打印多个字符例:根据输入打印多个字符#include main()int i,c;for(i=0;(c=getch
35、ar()!=n;i+=3)printf(%c,i+c);11/14/202231例例 梯形法求数值积分梯形法求数值积分0yxaa+h a+ih a+(i+1)hbf(x)dxxxfba24)(1011121220.51;1;ininibahnhsf aihf aihhSf aihf aihhf af bhf aihshf af bsshf aihiini 迭代:#includemain()float a,b;double s,h;double f(double x);int n,i;printf(Input integral area a,b:);scanf(%f,%f,&a,&b);prin
36、tf(Input n:);scanf(%d,&n);h=(b-a)/n;s=0.5*h*(f(a)+f(b);for(i=1;i=n-1;i+)s=s+h*f(a+i*h);printf(nThe value is:%lf,s);double f(double x)return(sqrt(4.0-x*x);11/14/202232(1)while()while().(2)do do while();.while();(3)while()do while();.(4)for(;)do while();while().循环的嵌套循环的嵌套 三种循环可互相嵌套三种循环可互相嵌套,层数不限层数不限 外
37、层循环可包含两个以上内循环外层循环可包含两个以上内循环,但但不能相互交叉不能相互交叉 嵌套循环的执行流程嵌套循环的执行流程 嵌套循环的跳转嵌套循环的跳转禁止事项禁止事项:从外层跳入内层从外层跳入内层 跳入同层的另一循环跳入同层的另一循环 向上跳转向上跳转11/14/202233例例 循环嵌套,输出九九表循环嵌套,输出九九表1234567891234567892468101214161836912151821242791827364554637281./*ch5_5.c*/#include main()int i,j;for(i=1;i10;i+)printf(%4d,i);printf(n-n
38、);for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);11/14/202234for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);i10printf假假(0)真真(非非0)i=1j+j=1j10真真(非非0)假假(0)i+外循环外循环内循环内循环11/14/2022354.5 辅助控制语句辅助控制语句 break 语句语句 功能:在循环语句和功能:在循环语句和switch语句中语句中,终止并跳出终止并跳出循环体或开关体循环体或开关体 说明:说明:break只能终止并跳出只能
39、终止并跳出最近一层最近一层的结构的结构 break不能用于循环语句和不能用于循环语句和switch语句之外语句之外的任何其它语句之中的任何其它语句之中exprbreak;假假(0)真真(非非0)whiledobreak;.expr假假(0)真真(非非0)whileexpr2break;.假假(0)真真(非非0)forexpr1expr3switchexpr语句组语句组1break;语句组语句组2break;语句组语句组nbreak;语句组语句组break;.const 1const 2const ndefaultcase 11/14/202236例例1 输出圆面积,面积大于输出圆面积,面积大于
40、100时停止时停止#define PI 3.14159main()int r;float area;for(r=1;r100)break;printf(r=%d,area=%.2fn,r,area);11/14/202237例例2 小写字母转换成大写字母小写字母转换成大写字母,直至输入非字母字符直至输入非字母字符#include main()int i,j;char c;while(1)c=getchar();if(c=a&c=z)putchar(c-a+A);else break;11/14/2022384.5 辅助控制语句辅助控制语句 continue 语句语句 功能:结束本次循环,功能:
41、结束本次循环,跳过循环体中尚未执行跳过循环体中尚未执行的语句的语句,进行下一次是否执行循环体的判断,进行下一次是否执行循环体的判断 说明:说明:只能用于循环语句中只能用于循环语句中exprcontinue;假假(0)真真(非非0)while真真(非非0)docontinue;.expr假假(0)whileexpr2continue;.假假(0)真真(非非0)forexpr1expr311/14/202239例例 求输入的十个整数中求输入的十个整数中正数正数的个数及其平均值的个数及其平均值/*ch5_12.c*/#include main()int i,num=0,a;float sum=0;f
42、or(i=0;i10;i+)scanf(%d,&a);if(a=0)continue;num+;sum+=a;printf(%d plus integers sum:%6.0fn,num,sum);printf(Mean value:%6.2fn,sum/num);11/14/202240 程序举例程序举例t=1,pi=0,n=1.0,s=1当当|t|1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4输出输出pi分子:分子:1,-1,1,-1分母:分母:1,3,5,7,.61111435710 例1用公式求 的近似值,直到最后一项的绝对值小于为止*ch5_6.c*/#includ
43、e#include main()int s;float n,t,pi;t=1;pi=0;n=1.0;s=1;while(fabs(t)=1e-6)pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4;printf(pi=%10.6fn,pi);11/14/202241例例2 求求Fibonacci数列数列 1,1,2,3,5,8,的前的前40个数个数121211123nnnFnFnFFFnf1=1,f2=1for i=1 to 20输出输出f1,f2f1=f1+f2f2=f2+f1153423315971094675025514229352457824157817185537725
44、8417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155/*ch5_7.c*/#include main()long int f1,f2;int i;f1=1;f2=1;for(i=1;i=20;i+)printf(%12ld%12ld ,f1,f2);if(i%2=0)printf(n);f1=f1+f2;f2=f2+f1;11/14/202242例例3 判断判断m是否素数是否素数读入读入mk=m
45、i=2当当i km被被i整除整除真真假假用用break结束循环结束循环i=i+1i k+1真真假假输出输出:m”是素数是素数”输出输出:m”不不是素数是素数”/*ch5_8.c*/#include#include main()int m,i,k;scanf(%d,&m);k=sqrt(m);for(i=2;i=k+1)printf(%d is a prime numbern,m);else printf(%d is not a prime numbern,m);11/14/202243例例4 译密码译密码例如输入:例如输入:Hello,world!译成密码:译成密码:Lipps,asvph!/*ch5_10.c*/#include main()char c;while(c=getchar()!=n)if(c=a&c=A&cZ&cz)c=c-26;printf(%c,c);11/14/202244