C程序流程设计课件_第1页
C程序流程设计课件_第2页
C程序流程设计课件_第3页
C程序流程设计课件_第4页
C程序流程设计课件_第5页
已阅读5页,还剩199页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一讲练习1第二讲练习2第三讲练习3第四讲练习4第五讲练习5第六讲练习6第一讲1第四章C程序流程设计4.1C语句概述C语句:以“;”作分隔符,编译后产生机器指令.C语句分类表达式语句:表达式加分号构成。空语句:;程序控制语句(9种):if()~else~switchfor()~while()~do~while()continuebreakgotoreturn分支循环辅助控制如total=total+limit;a=3;func();printf(“Hello,world!\n”);第四章C程序流程设计4.1C语句概述空语句:;程序控复合语句:用{…}括起来的一组语句一般形式:

{[数据说明部分;]执行语句部分;}说明:“}”后不加分号语法上和单一语句相同复合语句可嵌套用途:用于语法上只允许单个语句而处理上需要多个语句的地方,主要用做if语句的子句及循环语句的循环体。如if(a<b){t=a;a=b;b=t;}用于改变嵌套if-else语句的配对规则复合语句:用{…}括起来的一组语句4.2程序的三种基本结构结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序叫~优点:结构清晰,易读,提高程序设计质量和效率三种基本结构顺序结构ABAB流程图N-S图4.2程序的三种基本结构ABAB流程图N-S图C程序流程设计课件C程序流程设计课件C程序流程设计课件C程序流程设计课件C程序流程设计课件C程序流程设计课件ifif0(假)非0(真)if0(假)非0(真)if4.3选择型程序设计if语句(条件选择语句)if语句的三种形式形式一:格式:if(expression)statement执行过程:exprstatement非0=0例:if(x>y)printf(“%d”,x);4.3选择型程序设计exprstatement非0=0例:if......else......if......else......0(假)非0(真)如果表达式为真(非0),电脑将执行语句1

if......else......0(假)非0(真)如果表达式为真(非0),电脑然后跳过语句2,执行下面的语句if......else......然后跳过语句2,执行下面的语句if......else...如果表达式为假,电脑将跳过语句1,执行语句2,然后继续执行下面的语句如果表达式为假,电脑将跳过语句1,执行语句2,然后继续执行下4.3选择型程序设计if语句(条件选择语句)if语句的三种形式exprstatement1statement2非0=0形式二:格式:if(expression)statement1elsestatement2执行过程:例:if(x>y)max=x;elsemax=y;4.3选择型程序设计exprstatement1state形式三:格式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0执行过程:

例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;形式三:if(expr1)st如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a’)printf(“%d”,’a’);说明:if后面的表达式类型任意语句可以是复合语句if(x)if(x!=0)if(!x)if(x==0)例考虑下面程序的输出结果:#include<stdio.h>main(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}CompileError!如:if(a==b&&x==y)printf(“a=/*ch4_1.c*/#include<stdio.h>main(){intx,y;printf("Enteraninteger:");scanf("%d",&x);y=x;

if(y<0)y=-y;printf("\ninteger:%d--->absolutevalue:%d\n",x,y);}例求一个数的绝对值运行:Enteraninteger:-12integer:-12--->absolutevalue:12←可用条件运算符代替此判断/*ch4_1.c*/例求一个数的绝对值运行:Enter/*ch4_2.c*/#include<stdio.h>main(){inta,b;printf("Enterintegera:");scanf("%d",&a);printf("Enterintegerb:");scanf("%d",&b);

if(a==b)printf("a==b\n");elseprintf("a!=b\n");}例输入两个数并判断两数相等否运行:Enterintegera:12

Enterintegerb:12a==b运行:Enterintegera:12

Enterintegerb:9a!=b/*ch4_2.c*/例输入两个数并判断两数相等否运行:E/*ch4_3.c*/#include<stdio.h>main(){charc;printf("Enteracharacter:");c=getchar();if(c<0x20)printf("Thecharacterisacontrolcharacter\n");elseif(c>='0'&&c<='9')printf("Thecharacterisadigit\n");elseif(c>='A'&&c<='Z')printf("Thecharacterisacapitalletter\n");elseif(c>='a'&&c<='z')printf("Thecharacterisalowerletter\n");elseprintf("Thecharacterisothercharacter\n");}例判断输入字符种类运行:Enteracharacter:Thecharacterisacontrolcharacter运行:Enteracharacter:8Thecharacterisadigit运行:Enteracharacter:DThecharacterisacapitalletter运行:Enteracharacter:hThecharacterisalowerletter运行:Enteracharacter:,Thecharacterisothercharacter/*ch4_3.c*/例判断输入字符种类运行:Enterif语句嵌套:一般形式:if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4内嵌if内嵌ifif(expr1)if(expr2)statement1elsestatement2内嵌ifif(expr1)if(expr2)statement1elsestatement3

内嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4内嵌ifif语句嵌套:if(expr1)内嵌if内嵌ifif(e例输入两数并判断其大小关系/*ch4_4.c*/#include<stdio.h>main(){intx,y;printf("Enterintegerx,y:");scanf("%d,%d",&x,&y);

if(x!=y)

if(x>y)printf("X>Y\n");elseprintf("X<Y\n");

elseprintf("X==Y\n");}运行:Enterintegerx,y:12,23X<Y

Enterintegerx,y:12,6X>YEnterintegerx,y:12,12X==Y例输入两数并判断其大小关系/*ch4_4.c*/运行:Enif~else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...if~else配对原则:缺省{}时,else总是和例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b)

{if(b==c)printf(“a==b==c”);

}elseprintf(“a!=b”);实现if~else正确配对方法:使用复合语句,加{}例:if(a==b)修改:if(a==b)实现if例考虑下面程序输出结果:main(){intx=100,a=10,b=20;intv1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(“%d”,x);}结果:-1例考虑下面程序输出结果:结果:-1习题:第四章15,17,19,22,25,26,61,65,68~72,79~83习题:第四章上机练习1:在E:盘建立学号(后3位)文件夹在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:课件下载:7/pub习题第四章:65,68,69,72,79编程:第四章119,120,121,122上传作业:(1)保证学号文件夹中有相应的exe文件(2)将学号文件夹复制到:/incoming/上传作业上机练习1:课件下载:习题第四章:65,68,69,72习题:第四章84~86,102习题:第四章switch语句(开关分支语句)一般形式:switch(表达式){caseE1:语句组1;

break;caseE2:语句组2;

break;…….caseEn:语句组n;

break;[default:语句组;break;]}执行过程:switch表达式语句组1语句组2语句组n语句组…...E1E2Endefaultcaseswitch语句(开关分支语句)switch(表达式)执行说明:switch,case和default是关键字。Switch是多分支选择语句的标志,case和default只能在switch语句中使用(case子句和default子句)switch后面的表达式是选择条件(简称选择表达式)。选择表达式可以为任何整型表达式、字符型表达式或枚举型表达式case后面的常量表达式(简称case常量)的值是选择表达式可能的取值,通常为常量或符号常量,类型应与选择表达式的类型一致(整型){}括起来的部分是switch语句体,{}不能省略。switch语句体由多个case和至多一个(可以没有)default组成说明:说明:E1,E2,…En是常量表达式,且值必须互不相同case与E1,E2,…En之间的空格不可缺语句标号作用,必须用break跳出case后可包含多个可执行语句,且不必加{}switch可嵌套多个case可共用一组执行语句如:……case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;……..说明:如:……例switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}break;break;break;break;运行结果:score为5时,输出:Verygood!Good!Pass!Fail!dataerror!运行结果:score为5时,输出:Verygood!例switch(score)b例#include<stdio.h>voidmain(){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(“\na=%d,b=%d”,a,b);}运行结果:a=2,b=1例#include<stdio.h>运行结果:a=2,b=/*ch4_5.c*/#include<stdio.h>main(){intc;printf("Entermornorhorother:");c=getchar();switch(c){case'm':printf("\nGoodmorning!\n");break;case'n':printf("\nGoodnight!\n");break;case'h':printf("\nHello!\n");break;default:printf("\n????????\n");break;}}例根据输入字母输出字符串/*ch4_5.c*/例根据输入字母输出字符串习题:第四章108,109,112,115,116,117,126转61习题:第四章转614.4循环型程序设计概述C语言可实现循环的语句:用goto和if构成循环while语句do~while语句for语句goto语句及用goto构成循环goto语句一般格式:goto语句标号;….…..标号:语句;4.4循环型程序设计goto功能:无条件转移语句说明:标号是标识符标号只能出现在goto所在函数内,且唯一标号只能加在可执行语句前面限制使用goto语句功能:无条件转移语句例用if和goto语句构成循环,求/*ch5_1.c*/#include<stdio.h>main(){inti,sum=0;i=1;loop:if(i<=100){sum+=i; i++;

gotoloop;}printf("%d",sum);}sum=0+1→1sum=1+2→3sum=3+3→6sum=6+4→10……sum=4950+100=5050循环初值循环终值循环变量增值循环条件循环体例用if和goto语句构成循环,求/*ch5_1.c*例从键盘输入一组数据,以0结束输入,求数据和/*ch5_11.c*/#include<stdio.h>main(){ intnumber,sum=0;read_loop:scanf("%d",&number); if(!number)gotoprint_sum; sum+=number;

gotoread_loop;print_sum:printf("Thetotalsumis%d\n",sum);}例从键盘输入一组数据,以0结束输入,求数据和/*ch5_while语句一般形式:while(表达式)

循环体语句;执行流程:expr循环体假(0)真(非0)whilewhile语句while(表达式)执行流程:expr循环体特点:先判断表达式,后执行循环体说明:循环体有可能一次也不执行循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环:while(1)循环体;<>特点:先判断表达式,后执行循环体<>例用while循环求/*ch5_2.c*/#include<stdio.h>main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}循环初值循环终值循环变量增值循环条件循环体<>例用while循环求/*ch5_2.c*/循环初值循环终例显示1~10的平方/*ch5_21.c*/#include<stdio.h>main(){inti=1;while(i<=10){printf("%d*%d=%d\n",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=100<>例显示1~10的平方/*ch5_21.c*/运行结果:<>习题:第五章1,2,3,8~11,13习题:do~while语句一般形式:do

循环体语句;while(表达式);执行流程:do循环体expr假(0)真(非0)while<>do~while语句do执行流程:do循环体expr假(0特点:先执行循环体,后判断表达式说明:至少执行一次循环体do~while可转化成while结构expr循环体假(0)真(非0)循环体While循环<>特点:先执行循环体,后判断表达式expr循环体假(0)真(非例用do~while循环求/*ch5_3.c*/#include<stdio.h>main(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);printf("%d",sum);}<>例用do~while循环求/*ch5_3.c*/<>例while和do~while比较/*ch5_4.c*/#include<stdio.h>main(){inti,sum=0;scanf("%d",&i);do{sum+=i; i++;}while(i<=10);printf("%d",sum);}main(){inti,sum=0;scanf("%d",&i);while(i<=10){sum+=i; i++;}printf("%d",sum);}<>例while和do~while比较/*ch5_4.c*/习题:第五章14,19~22习题:for语句一般形式:for([expr1];[expr2];[expr3])

循环体语句执行流程:expr2循环体假(0)真(非0)forexpr1expr3for([expr1];[expr2];[expr3])

循环体语句;expr2为假:for([expr1];[expr2];[expr3])

循环体语句;expr2为真:<>for语句for([expr1];[expr2];[for语句一般应用形式:for(循环变量赋初值;循环条件;循环变量增值){ 循环体语句}说明:for语句中expr1,expr2,expr3类型任意,都可省略,但分号;不可省无限循环:for(;;)for语句可以转换成while结构expr1;while(expr2){ 循环体语句; expr3;}例用for循环求

#include<stdio.h>main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}#include<stdio.h>main(){inti,sum=0;

i=1;while(i<=100){sum=sum+i;

i++;}printf("%d",sum);}for语句一般应用形式:for(循环变量赋初值;循环条件;循例:#include<stdio.h>main(){inti=0;for(i=0;i<10;i++)putchar(‘a’+i);}运行结果:abcdefghij例:#include<stdio.h>main(){inti=0;

for(;i<10;i++)putchar(‘a’+i);}例:#include<stdio.h>main(){inti=0;

for(;i<10;)putchar(‘a’+(i++));}例:#include<stdio.h>main(){inti=0;

for(;i<10;putchar(‘a’+i),i++)

};;例:#include<stdio.h>运行结果:abcdemain(){inti,j,k;

for(i=0,j=100;i<=j;i++,j--){k=i+j; printf("%d+%d=%d\n",i,j,k);}}#include<stdio.h>main(){charc;

for(;(c=getchar())!='\n';)printf("%c",c);}#include<stdio.h>main(){inti,c;

for(i=0;(c=getchar())!='\n';i+=3) printf("%c",i+c);}<>运行结果:0+100=1001+99=100......50+50=100运行结果:123159main()#include<stdio.h>#includ上机练习2:在E:盘建立学号(后3位)文件夹在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:课件下载:7/pub习题第四章:108,117,124,128/*ch5_2.c*/#include<stdio.h>main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}/*ch5_21.c*/#include<stdio.h>main(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}}上机练习2:课件下载:习题第四章:108,117,124/*ch5_3.c*/#include<stdio.h>main(){inti,sum=0;i=1;do{sum+=i; i++;}while(i<=100);printf("%d",sum);}例ch5_4.c用for循环求

#include<stdio.h>main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}/*ch5_3.c*/例ch5_4.c用for循环求#例ch5_101.c:#include<stdio.h>main(){inti=0;for(i=0;i<10;i++)putchar(‘a’+i);}/*ch5_102.c*/main(){inti,j,k;

for(i=0,j=100;i<=j;i++,j--){k=i+j;printf("%d+%d=%d\n",i,j,k);}}/*ch5_103.c*/#include<stdio.h>main(){charc;

for(;(c=getchar())!='\n';)printf("%c",c);}请输入一串字符后回车观察程序的运行结果/*ch5_104.c*/#include<stdio.h>main(){inti,c;

for(i=0;(c=getchar())!='\n';i+=3) printf("%c",i+c);}例ch5_101.c:/*ch5_102.c*//*上传作业:(1)保证学号文件夹中有相应的exe文件(2)将学号文件夹复制到:/incoming/3班第4章练习2上传作业:习题:第五章1,2,3,8~11,13,14,19~22习题:上机练习3:在E:盘建立学号(后3位)文件夹在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:课件下载:7/pub习题第五章:8,9,10,11,13,19,20,2122:如何设计,能打印出所有可能的取值?2.上传作业:(1)保证学号文件夹中有相应的exe文件(2)将学号文件夹复制到:/incoming/3班第4章练习3上机练习3:课件下载:习题第五章:8,9,10,11,1for语句一般形式:for([expr1];[expr2];[expr3])

循环体语句for([expr1];[expr2];[expr3])

循环体语句;expr2为假:for([expr1];[expr2];[expr3])

循环体语句;expr2为真:例用for循环求

#include<stdio.h>main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("%d",sum);}for语句for([expr1];[expr2];[循环的嵌套三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的执行流程(1)while(){……while(){……}…...}(2)do{……do{……}while();…...}while();(3)while(){……do{……}while();…….}(4)for(;;){……do{……}while();……while(){……}…...}内循环外循环内循环嵌套循环的跳转禁止:从外层跳入内层跳入同层的另一循环向上跳转循环的嵌套(1)while()(2)do(3)w例循环嵌套,输出九九表1234567891234567892468101214161836912151821242791827364554637281……………..ij/*ch5_5.c*/#include<stdio.h>main(){inti,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n---------------------------------------\n");for(i=1;i<10;i++)for(j=1;j<10;j++) printf((j==9)?"%4d\n":"%4d",i*j);}例循环嵌套,输出九九表123456789123456781234567891234567892468101214161836912151821242791827364554637281……………..iji<10printf假(0)真(非0)i=1j++j=1j<10真(非0)假(0)i++for(i=1;i<10;i++)

for(j=1;j<10;j++)printf((j==9)?"%4d\n":"%4d",i*j);外循环内循环123456789123456789246810121416

4.5辅助控制语句break语句功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中4.5辅助控制语句

expr……break;……假(0)真(非0)whiledo……break;…...expr假(0)真(非0)while

expr……假(0)真(非0)whiledo……expr假expr2……break;…...假(0)真(非0)forexpr1expr3switchexpr语句组1break;语句组2break;语句组nbreak;语句组break;…...const1const2constndefaultcaseexpr2……假(0)真(非0)forexpr1expr3s例break举例:输出圆面积,面积大于100时停止#include<stdio.h>#definePI3.14159main(){intr;floatarea;for(r=1;r<=10;r++){area=PI*r*r;if(area>100) break;printf("r=%d,area=%.2f\n",r,area);}}例break举例:输出圆面积,面积大于100时停止#in例break举例:小写字母转换成大写字母,直至输入非字母字符#include<stdio.h>main(){charc;while(1){printf(“小写转大写程序\n”);c=getchar(); if(c>='a'&&c<='z') putchar(c-'a'+'A'); else break;}}例break举例:小写字母转换成大写字母,直至输入非字母continue语句功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中expr……continue;……假(0)真(非0)while真(非0)do……continue;…...expr假(0)whileexpr2……continue;…...假(0)真(非0)forexpr1expr3continue语句expr……假(0)真(非0)whileP.106.例4.18求输入的十个整数中正数的个数及其平均值/*ch5_12.c*/#include<stdio.h>main(){inti,num=0,a;floatsum=0;for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}P.106.例4.18求输入的十个整数中正数的个数及其程序举例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,...程序举例t=1,pi=0,n=1.0,s=1当|t|1e-例迭代产生Fibonacci数列有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?例迭代产生Fibonacci数列有趣的古典数学问题:例迭代产生Fibonacci数列1,1,2,3,5,8,13,21,34……..从第3数起,每数是前2数之和f1f2f1=f1+f2f2=f2+f1f1=f1+f2f2=f2+f1f1=f1+f2f2=f2+f1例迭代产生Fibonacci数列1,1,2,3,5,8例求Fibonacci数列:1,1,2,3,5,8,……的前40个数f1=1,f2=1fori=1to20输出f1,f2f1=f1+f2f2=f2+f11534233159710946750255142293524578241578171855377258417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155例求Fibonacci数列:1,1,2,3,5,8,……例4.10判断m是否素数P.93.读入mk=mi=2当ikm被i整除真假用break结束循环i=i+1i>k真假输出:m”是素数”输出:m”不是素数”例4.10判断m是否素数P.93.读入mk=谭P.119.例6.10译密码ABCDEFGHIJKLMNOPQRSTUVWXYZ例如Hello,world!译成密码:Lipps,asvph!谭P.119.例6.10译密码ABCDEFGHIJKL习题:第五章26~29,33,35,36,37,39习题:上机练习4:在E:盘建立学号(后3位)文件夹在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:课件下载:/pub/*ch5_5.c*/#include<stdio.h>main(){inti,j;for(i=1;i<10;i++)printf("%4d",i);printf("\n---------------------------------------\n");for(i=1;i<10;i++)for(j=1;j<10;j++) printf((j==9)?"%4d\n":"%4d",i*j);}ch5_5.cch5_99.cch5_100.cch5_12.cch5_6.cch5_7.cch5_8.cch5_10.c第五章:35,36,37,39上机练习4:课件下载:/*ch5_5.c*/ch5_5.c/*ch5_99.c*/#include<stdio.h>#definePI3.14159main(){intr;floatarea;for(r=1;r<=10;r++){area=PI*r*r;if(area>100) break;printf("r=%d,area=%.2f\n",r,area);}}/*ch5_99.c*//*ch5_100.c*/#include<stdio.h>main(){charc;while(1){printf(“小写转大写程序\n”);c=getchar(); if(c>='a'&&c<='z') putchar(c-'a'+'A'); else break;}}/*ch5_100.c*//*ch5_12.c*/#include<stdio.h>main(){inti,num=0,a;floatsum=0;printf(“输入10个整数,求出其中正整数的个数及平均值\n”);for(i=0;i<10;i++){scanf("%d",&a); if(a<=0)continue; num++; sum+=a;}printf("%dplusinteger'ssum:%6.0f\n",num,sum);printf("Meanvalue:%6.2f\n",sum/num);}/*ch5_12.c*//*ch5_6.c*/#include<stdio.h>#include<math.h>main(){ints;floatn,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.6f\n",pi);}/*ch5_6.c*//*ch5_7.c*/#include<stdio.h>main(){longintf1,f2;inti;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;}}1534233159710946750255142293524578241578171855377258417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155/*ch5_7.c*/1123/*ch5_8.c*/#include<stdio.h>#include<math.h>main(){intm,i,k;printf(“请输入一个整数,以判断其是否为素数\n”);scanf("%d",&m);k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)printf("%disaprimenumber\n",m);elseprintf("%disnotaprimenumber\n",m);}/*ch5_8.c*//*ch5_10.c译密码*/#include<stdio.h>main(){charc;printf(“循环译密码程序\n”);while((c=getchar())!='\n'){if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) {c=c+4; if(c>'Z'&&c<='Z'+4||c>'z') c=c-26; } printf("%c",c);}}/*ch5_10.c译密码*/习题第五章:35,36,37,392.上传作业:(1)保证学号文件夹中有相应的exe文件(2)将学号文件夹复制到:/incoming/3班第4章练习4共12题习题第五章:35,36,37,392.上传作业:共12习题:第五章40,41,45,49,57,59~62,64,67~70,72,76习题:题5.401000!=1×2×3×4×5×...×10×...×15×...×25×...×999×1000kii<=1000m=iwhile(m%5==0){k++m=m/5}i+=505151111011012215115133201201442512515516130......题5.40题5.60如:62242题5.60求正整数m,n的

最大公因子当r=0时,n为最大公因子m(被)r(余)n(除)本次:下次:m(被)n(除)求正整数m,n的

最大公因子当r=0时,n为最大公因子mrn欧几里德算法--辗转相除法迭代算法:当r<>0时1.m%n--->r2.m<---n(除数作被除数)n<---r(余数作除数)3.重复1.(当r=0时,停止。n为最大公因子)欧几里德算法--辗转相除法迭代算法:当r<>0时程序:求非负整数X,Y的最大公因子main(){intr,m,n;scanf(“%d%d”,&m,&n);if(m<n){r=m;m=n;n=r;}r=m%n;while(r){m=n;n=r;r=m%n;}printf(“%d\n”,n);}程序:求非负整数X,Y的最大公因子main()上机练习5:在E:盘建立学号(后3位)文件夹在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:课件下载:/pub7要求:在所有程序的变量定义后添加打印语句以表明该程序的作用例题5.60#include<stdio.h>main(){intr,m,n;

printf(“请输入两个正整数以用辗转相除法求最大公约数:”);scanf(“%d%d”,&m,&n);if(m<n){r=m;m=n;n=r;}r=m%n;while(r){m=n;n=r;r=m%n;}printf(“%d\n”,n);}习题第五章:41,59,60,62,67,68,69,70并将程序补充完整:57,762.上传作业:(1)保证学号文件夹中有相应的exe文件(2)将学号文件夹复制到:/incoming/3班第4章练习5上机练习5:课件下载:要求:在所有程序的变量定义后添加打印习题:第五章77,79,82,86~90,93,94,98,99,100上机编程:105,106,108习题:题5.80it=t*it=-t/i11-13-3155-1......题5.82inew/=(double)ie+=new1

23......题5.80it=t请独立完成:编程输出所有的“水仙花数”。即一个三位数其各位数字立方和恰好等于该数本身(例如153=13+53+33)。可参考5.98请独立完成:上机练习6:在E:盘建立学号(后3位)文件夹在此文件夹下编辑下列程序验证结果,保存文件名与题号一致:课件下载:/pub要求:在所有程序的变量定义后添加打印语句以表明该程序的作用(1)习题5.98(2)编写完整程序,输出所有的“水仙花数”。即一个三位数其各位数字立方和恰好等于该数本身(例如153=13+53+33)。(3)第六章数组例ch6_1.c(4)习题第五章:82,86,87,88,89,90,93,94,100,105,106,1082.上传作业:(1)保证学号文件夹中有相应的exe文件(2)将学号文件夹复制到:/incoming/4班第4章练习6上机练习6:课件下载:要求:在所有程序的变量定义后添加打印/*ch6_1.c*/#include<stdio.h>#defineSIZE10main(){intx[SIZE],i,max,min;printf("Enter10integers:\n");

for(i=0;i<SIZE;i++){printf("%d:",i); scanf("%d",&x[i]);}

max=min=x[0];

for(i=1;i<SIZE;i++){if(max<x[i])max=x[i];if(min>x[i])min=x[i];}printf("Maximumvalueis%d\n",max);printf("Minimumvalueis%d\n",min);}/*ch6_1.c*/演讲完毕,谢谢观看!演讲完毕,谢谢观看!第一讲练习1第二讲练习2第三讲练习3第四讲练习4第五讲练习5第六讲练习6第一讲103第四章C程序流程设计4.1C语句概述C语句:以“;”作分隔符,编译后产生机器指令.C语句分类表达式语句:表达式加分号构成。空语句:;程序控制语句(9种):if()~else~switchfor()~while()~do~while()continuebreakgotoreturn分支循环辅助控制如total=total+limit;a=3;func();printf(“Hello,world!\n”);第四章C程序流程设计4.1C语句概述空语句:;程序控复合语句:用{…}括起来的一组语句一般形式:

{[数据说明部分;]执行语句部分;}说明:“}”后不加分号语法上和单一语句相同复合语句可嵌套用途:用于语法上只允许单个语句而处理上需要多个语句的地方,主要用做if语句的子句及循环语句的循环体。如if(a<b){t=a;a=b;b=t;}用于改变嵌套if-else语句的配对规则复合语句:用{…}括起来的一组语句4.2程序的三种基本结构结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序叫~优点:结构清晰,易读,提高程序设计质量和效率三种基本结构顺序结构ABAB流程图N-S图4.2程序的三种基本结构ABAB流程图N-S图C程序流程设计课件C程序流程设计课件C程序流程设计课件C程序流程设计课件C程序流程设计课件C程序流程设计课件ifif0(假)非0(真)if0(假)非0(真)if4.3选择型程序设计if语句(条件选择语句)if语句的三种形式形式一:格式:if(expression)statement执行过程:exprstatement非0=0例:if(x>y)printf(“%d”,x);4.3选择型程序设计exprstatement非0=0例:if......else......if......else......0(假)非0(真)如果表达式为真(非0),电脑将执行语句1

if......else......0(假)非0(真)如果表达式为真(非0),电脑然后跳过语句2,执行下面的语句if......else......然后跳过语句2,执行下面的语句if......else...如果表达式为假,电脑将跳过语句1,执行语句2,然后继续执行下面的语句如果表达式为假,电脑将跳过语句1,执行语句2,然后继续执行下4.3选择型程序设计if语句(条件选择语句)if语句的三种形式exprstatement1statement2非0=0形式二:格式:if(expression)statement1elsestatement2执行过程:例:if(x>y)max=x;elsemax=y;4.3选择型程序设计exprstatement1state形式三:格式:if(expr1)statement1elseif(expr2)statement2elseif(expr3)statement3…...[elsestatementn]expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0执行过程:

例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;形式三:if(expr1)st如:if(a==b&&x==y)printf(“a=b,x=y”);if(3)printf(“OK”);if(‘a’)printf(“%d”,’a’);说明:if后面的表达式类型任意语句可以是复合语句if(x)if(x!=0)if(!x)if(x==0)例考虑下面程序的输出结果:#include<stdio.h>main(){intx,y;scanf(“%d,%d”,&x,&y);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论