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

下载本文档

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

文档简介

C语言程序设计第3章结构化程序设计第1章C语言概述第2章基本数据类型和运算第3章

结构化程序设计第5章函数第6章指针第7章复合结构类型第8章编译预处理第4章数组及字符串●课程概述

附录3.1结构化程序设计的思想及流程图3.2结构化程序设计的三种基本结构3.3几种转移控制语句3.4C程序语句3.5C程序举例3.6本章容易出现错误的知识点总结(选学)

第9章位运算第10章文件结构化程序设计第3章教学目标►了解结构化程序设计的思想及流程图的画法►掌握顺序结构、选择结构、循环结构的程序设计方法►掌握控制转移语句break、continue的使用►编制出简单的C程序。3.1.1结构换程序设计思想结构化程序设计(StructuredProgramming)的核心是算法设计,基本思想是采用自顶向下、逐步细化的设计方法和单入单出的控制结构。自顶向下和逐步细化的设计方法是将一个复杂任务按照功能进行拆分,并逐层细化到便于理解和描述的程度,最终形成由若干独立模块组成的树状层次结构,单入单出的控制结构是指每个模块内部均用顺序、选择、循环三种基本结构来描述。3.1结构程序设计的思想及流程图传统流程图

传统流程图是用一些图框表示各种操作,如图所示。N-S流程图3.1.2流程图3.1结构程序设计的思想及流程图(d)执行框(b)输入输出框(c)判断框(a)起止框(e)连接点(f)流程线

传统流程图

顺序结构、选择结构和循环结构的传统流程图的示意如图所示。N-S流程图3.1.2流程图3.1结构程序设计的思想及流程图(a)顺序结构S1S2S1S2条件条件S1(b)选择结构

(c)循环结构

传统流程图

N-S图是将全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的框。顺序结构、选择结构和循环结构的N-S流程图的示意如图所示。N-S流程图3.1.2流程图3.1结构程序设计的思想及流程图ABP真假ABA当P成立A直到P成立(a)顺序结构(b)选择结构(c)当型循环(d)直到型循环顺序结构是程序中的语句按照书写的顺序,自上而下地执行。其特点是程序总是从第1条语句开始执行,依次执行完所有的语句后结束程序。3.2.1顺序结构3.2结构程序设计的三种基本结构例3.1输入一个三位整数,依次输出该数的正(负)号和百位、十位、个位数字。下图所示为对应的N-S流程图。3.2.1顺序结构3.2结构程序设计的三种基本结构输入一个三位整数存入x中x>0?真假c4='+'c4='-'x=|x|c3=x%10+48c2=x%10+48x=x/10c1=x/10+48输出c4、c1、c2、c3对应的内容代码如下:3.2.1顺序结构3.2结构程序设计的三种基本结构#include<math.h>main(){ charc1,c2,c3,c4;

intx;

scanf("%d",&x);/*输入一个三位的整数*/ c4=x>0?'+':'-'; /*将x的符号存入c4*/ x=abs(x); /*求三位整数的绝对值*/ c3=x%10+48; /*x%10获得个位数字,加48后转换为对应的字符*/ x=x/10; /*获得x的前两位*/ c2=x%10+48; /*x%10获得十位数字,加48后转换为对应的字符*/ c1=x/10+48; /*x/10获得百位数字,加48后转换为对应的字符*/ printf("%c\n%c\n%c\n%c\n",c4,c1,c2,c3);} 在运行时,从键盘输入:

-345↙则输出为:

-345接着从键盘输入:

678↙则输出为:

+678输入三角形的三边长,求三角形面积。分析:给出三角形的三边a、b、c,可根据公式area=(s(s-a)(s-b)(s-c))1/2计算该三角形的面积,其中s=(a+b+c)/2。下图所示为对应的N-S流程图。3.2.1顺序结构3.2结构程序设计的三种基本结构输入三角形的三条边a、b、c求三角形三边和的一半s=1.0/2*(a+b+c)计算三角形的面积area=sqrt(s*(s-a)*(s-b)*(s-c))输出a、b、c、s的值输出三角形的面积area的值代码如下:3.2.1顺序结构3.2结构程序设计的三种基本结构#include<math.h>main(){floata,b,c,s,area;

printf("pleaseinputthreeborderofthetriangle:");

scanf("%f,%f,%f",&a,&b,&c);/*输入三角形的三条边*/s=1.0/2*(a+b+c);/*求三角形三边和的一半*/area=sqrt(s*(s-a)*(s-b)*(s-c));/*按公式计算三角形的面积*/

printf("a=%-7.2fb=%-7.2fc=%-7.2fs=%-7.2f\n",a,b,c,s);

printf("area=%-7.2f\n",area);}

该程序的运行结果如下:pleaseinputthreeborderofthetriangle:3,4,5↙a=3.00b=4.00c=5.00s=6.00area=6.003.2.2选择结构3.2结构程序设计的三种基本结构选择结构在程序执行中能依据运行时某些变量的值,来确定某些操作是做还是不做,或者在若干个操作中确定选择哪个操作来执行。选择结构有三种形式:单分支结构、双分支结构和多分支结构。下面是一个最常用的双分支的例子:if(m<0)n=-1;elsen=1;上述程序表示:如果m小于0,则n等于-1,否则n等于1。C语言中能够实现选择结构设计的语句有if语句和switch语句,其中switch语句可以用if语句来替代。1.if语句

2.switch语句if…语句的语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。语法格式为:if(表达式)

语句1;下一条语句;if语句的流程图如图所示。3.2.2选择结构3.2结构程序设计的三种基本结构下一条语句表达式语句序列表达式真假语句序列下一条语句(a)传统流程图(b)N-S流程图if…语句1.if语句

2.switch语句例3.3

单分支if语句的应用举例。#include<stdio.h>main(){

int

m,n,max;

printf("\ninputtwonumbers:");

scanf("%d%d",&m,&n);/*输入两个整数*/

max=m;/*将m的值赋给max*/

if(max<n)max=n;/*求两个数中的较大者*/

printf("max=%d",max);/*输出较大的数*/}3.2.2选择结构3.2结构程序设计的三种基本结构该程序的运行结果如下:inputtwonumbers:3443↙max=43例3.31.if语句

2.switch语句if…else…语句在C语言中称为双向分支语句。语句的语法格式为:if(条件表达式)语句1;else语句2;if…else…语句对应的流程图如图所示。3.2.2选择结构3.2结构程序设计的三种基本结构if…elseif(i>0)a=0;elsea=-11;例如条件表达式真假语句1下一条语句(a)传统流程图(b)N-S流程图语句2下一条语句条件表达式语句2真假语句11.if语句

2.switch语句if…else…语if…else…语句也可以表示为:if(测试表达式){语句1;语句2;…}else{语句n;语句n+1;…}3.2.2选择结构3.2结构程序设计的三种基本结构if…elseif(a>0){b=a+b;a=0;c++;}else{c=0;b=0;}例如1.if语句

2.switch语句elseif多向分支语句的格式如下:if(表达式1)语句1;

elseif(表达式2)语句2; [elseif(表达式3)语句3;] … [elseif(表达式n)语句n;] [else语句n+1;]下一条语句;这种if语句在执行时,依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1。3.2.2选择结构3.2结构程序设计的三种基本结构elseif语句1.if语句

2.switch语句多向分支语句的流程图如图所示。3.2.2选择结构3.2结构程序设计的三种基本结构elseif语句表达式3语句n+1表达式1真真假假假表达式2语句1语句2语句n真1.if语句

2.switch语句例3.4输入一个字符,如果是数字则输出A,如果是大写字母则输出B;如果是小写字母则输出C;如果是空格则输出D;如果是回车换行符则输出E,是其他符号时则输出F。下图所示为对应的N-S流程图。3.2.2选择结构3.2结构程序设计的三种基本结构例3.4输入一个字符存入c中c>=0&&c<=9真假输出Ac>=’A’&&c<=’Z’假真输出Bc>=’a’&&c<=’z’真假输出Cc=

=’

’真假输出D输出Ec=

=’\n’真假输出F1.if语句

2.switch语句3.2.2选择结构3.2结构程序设计的三种基本结构例3.4程序如下:#include<stdio.h>main(){charc;

scanf("%c",&c);if('0'<=c&&c<='9')

printf("c=%c------>%c\n",c,'A');/*如果输入的是数字,则输出字符A*/else

if('A'<=c&&c<='Z')printf("c=%c------>%c\n",c,'B');/*如果输入的是大写字母,则输出字符B*/else

if('a'<=c&&c<='z')printf("c=%c------>%c\n",c,'C');/*如果输入的是小写字母,则输出字符C*/else

if(c=='')

printf("c=%c------>%c\n",c,'D');/*如果输入的是空格,则输出字符D*/1.if语句

2.switch语句3.2.2选择结构3.2结构程序设计的三种基本结构例3.4 else

if(c=='\n')

printf("c=%c------>%c\n",c,'E');/*如果输入回车换行符则输出字符E*/ else

printf("c=%c------>%c\n",c,'F');/*以上都不是,则输出字符F*/}程序运行情况如下所示:5↙c=5------>AH↙c=H------>B&↙c=&------>F1.if语句

2.switch语句switch语句是多向分支选择语句,即根据多个条件表达式的值,从多个操作中选择一个满足条件的操作来执行。其对应的流程图如图所示。3.2.2选择结构3.2结构程序设计的三种基本结构计算表达式=常量表达式2=常量表达式n语句2语句n假假假真真真语句1=常量表达式1语句n+11.if语句

2.switch语句switch语句的一般格式为:switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;…case常量表达式n:语句n;break;default: 语句n+1;break;}switch语句中的“表达式”可以是任何类型,常用的是字符型或整型表达式。3.2.2选择结构3.2结构程序设计的三种基本结构break语句用来跳出switch语句。switch语句的执行过程是:首先判断表达式的值;然后在常量表达式i(i=1,2,…,n)中找到与表达式匹配的常量表达式,并执行该常量表达式后面对应的语句;若没有找到与表达式匹配的常量表达式,则执行default语句后面的语句n+1。default语句可以省略。1.if语句

2.switch语句#include<stdio.h>main(){

intx;

printf("pleaseinputintegernumber(1~7):------>>");

scanf("%d",&x);/*输入一个1~7之间的整数*/

switch(x){/*输出与所输入的x值相对应的日期名称*/

case1:printf("Monday\n");break; case2:printf("Tuesday\n");break; case3:printf("Wednesday\n");break; case4:printf("Thursday\n");break; case5:printf("Friday\n");break; case6:printf("Saturday\n");break; case7:printf("Sunday\n");break;

default:printf("youarewrong!\n");3.2.2选择结构3.2结构程序设计的三种基本结构下面是上述程序的运行情况:pleaseinputintegernumber(1~7):------>>4↙Thursday2.do…while语句3.for语句1.while语句3.2.3循环结构3.2结构程序设计的三种基本结构while语句也称为“当”型循环控制语句,其语句格式如下:while(表达式)语句;其中的“表达式”是循环条件,“语句”是while的循环体。执行过程是:计算表达式的值,当值为真(非0)时,执行循环体语句。特点是先判断后执行。其流程图如图所示。

循环体语句(a)传统流程图表达式表达式为真循环体语句(b)N-S流程图真假2.do…while语句3.for语句1.while语句3.2.3循环结构3.2结构程序设计的三种基本结构例3.7

用while语句来实现1*2*3*…*10的乘积。#include<stdio.h>main(){ longinti=1,mul=1;

while(i<=10)

/*用while语句求1*2*3*…*10的乘积*/ { mul=mul*i; i++; }

printf("\n%ld\n",mul);}例3.7该程序的运行结果如下:36288002.do…while语句3.for语句1.while语句3.2.3循环结构3.2结构程序设计的三种基本结构do…while语句的一般形式为:do{语句;}while(表达式);这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。do…while循环至少要执行一次循环语句。对应的流程图如图所示。循环体语句(a)传统流程图表达式表达式为真循环体语句(b)N-S流程图真假2.do…while语句3.for语句1.while语句3.2.3循环结构3.2结构程序设计的三种基本结构例3.8用do…while语句来实现1*2*3*…*10的乘积。#include<stdio.h>main(){ longint

i,mul=1; i=1; do/*用do…while语句求1*2*3*…*10的乘积*/ { mul=mul*i; i++; }while(i<=10);

printf("%ld\n",mul);}例3.8该程序的运行结果如下:36288002.do…while语句3.for语句1.while语句3.2.3循环结构3.2结构程序设计的三种基本结构for语句的一般形式为:for(表达式1;表达式2;表达式3)

语句;其执行过程为:先计算表达式1;再计算表达式2,若其值为真(非0),则执行for语常见的for语句形式如下所示:for(循环变量赋初值;循环条件;循环变量增值)语句;下面是一个关于for语句的例子:

mul=1;

for(i=1;i<=10;i++)

mul=mul*i;对应的流程图如图所示。计算表达式1(a)传统流程图表达式2表达式2为真时循环体语句(b)N-S流程图真假循环体语句计算表达式3计算表达式1计算表达式32.do…while语句3.for语句1.while语句3.2.3循环结构3.2结构程序设计的三种基本结构例3.9从键盘上输入5个数,求其平均值。对应的N-S图如图所示。例3.9定义整型变量a,浮点型变量b和sumfor(a=1,sum=0.0;a<6;a++)输入一个数并存入b中

sum+=b输出平均值average=sum/52.do…while语句3.for语句1.while语句3.2.3循环结构3.2结构程序设计的三种基本结构例3.9的程序代码如下:#include<stdio.h>main(){

inta;

floatb,sum;

for(a=1,sum=0.0;a<6;a++)

{

printf("pleaseinputnumber:\n");

scanf("%f",&b);/*从键盘上输入5个数*/

sum+=b;/*求输入的5个数的加和*/

}

printf("average=%f\n",sum/5);/*求5个数的平均值,并将其输出*/}例3.9该程序的运行情况如下:pleaseinputnumber:34.4↙pleaseinputnumber:28.1↙pleaseinputnumber:56.2↙pleaseinputnumber:71.9↙pleaseinputnumber:32.7↙average=44.6600012.例3.101.循环的嵌套3.2.4循环的嵌套3.2结构程序设计的三种基本结构如果一个循环体中又含有另一个完整的循环结构,则称为循环的嵌套。当内嵌的循环中含有另一个嵌套的循环时,称为多重循环。while循环、do…while循环和for循环三种结构可以互相嵌套。例如:while(){…

do

{…

for(;;){…}

}while();}2.例3.101.循环的嵌套3.2.4循环的嵌套3.2结构程序设计的三种基本结构例3.10循环嵌套的举例:将八进制数(0~7)以二进制的形式进行输出。下图所示为对应的N-S流程图。for(m=0;m<2;m++)for(n=0;n<2;n++)for(k=0;k<2;k++)

输出m、n、k的值2.例3.101.循环的嵌套3.2.4循环的嵌套3.2结构程序设计的三种基本结构例3.10的程序代码如下:#include<stdio.h>main(){intm,n,k;

printf("mnk\n");

for(m=0;m<2;m++)/*用三重循环输出m、n、k的8个组合值*/

for(n=0;n<2;n++)

for(k=0;k<2;k++) printf("%d%d%d\n",m,n,k);}该程序的运行情况如下:m n k0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1for、while和do…while循环一般情况下是可以互相代替的,可以用来处理同一个问题。在while和do…while循环的循环体中,应包括使循环趋于结束的语句。在三种循环体中,for语句功能最强。用while和do…while循环时,循环变量初始化的操作应在while和do…while语句之前完成,而for语句可以在表达式1中或for语句的前面实现循环变量的初始化。第一第二第三3.2.5几种循环的总结3.2结构程序设计的三种基本结构2.例3.113.注意事项1.语句一般形式3.3.1break语句3.3几种转移控制语句break语句的一般形式为:break;通常情况下,在循环语句中break语句总是和if语句连在一起使用,即满足条件时便跳出循环。2.例3.113.注意事项1.语句一般形式3.3.1break语句3.3几种转移控制语句例3.11

break语句应用举例。#include<stdio.h>main(){

inti;

for(i=1;i<10;i++)

{

i=i+1;

printf("%d\n",i);

if(i%2==0)/*如果i能被2整除,则跳出for循环*/

break;}该程序的运行结果如下:22.例3.113.注意事项1.语句一般形式3.3.1break语句3.3几种转移控制语句(1)当break位于循环体内的switch结构中时,break只是强迫程序流程退出switch结构,而不是退出switch所在的循环体。(2)在嵌套的循环结构中,break只退出它所在的那层循环。(3)当需要直接退出多层循环时,可通过增加标记的方法逐层退出。也可以用3.3.4节介绍的goto语句来完成。2.例3.123.注意事项1.语句一般形式3.3.2continue语句3.3几种转移控制语句continue语句用来结束本次循环,即跳过循环体中continue语句下面尚未执行的语句,接着进行下一次是否执行循环的判定,即结束本次循环。continue语句的语法形式为:continue;2.例3.123.注意事项1.语句一般形式3.3.2continue语句3.3几种转移控制语句例3.12

continue语句应用举例。#include<stdio.h>main(){

inti;

for(i=1;i<10;i++)

{

if(i%2==0)/*如果i能被2整除,则结束本次循环,进入下次循环的判定*/

continue;

else

printf("%d\n",i);

}}该程序的运行情况如下:135792.例3.123.注意事项1.语句一般形式3.3.2continue语句3.3几种转移控制语句(1)continue语句通常和if语句连用,只能提前结束一轮循环,不能使整个循环终止。(2)当continue语句位于处在循环体中的switch结构中时,continue语句只对循环起作用,即退出一轮循环,进入下一次是否循环的判定。(3)continue语句用在while、do…while循环中与用在for循环有些不同。在for循环中终止本次循环运行时,要计算表达式3的值。2.例3.131.区别3.3.3break语句与continue语句的区别3.3几种转移控制语句break语句和continue语句都可以用在while、do…while、for循环体中,都有退出循环的功能,但是break语句用来退出循环体,执行循环体后面的第1条语句;而continue语句用来退出本次循环,提前进入下次循环的判定。3.流程图比较2.例3.131.区别3.3.3break语句与continue语句的区别3.3几种转移控制语句例3.13输出两位数中所有能同时被3和5整除的数。分析:能同时被3和5整除的数应满足(j%3==0)&&(j%5==0),不能同时被3和5整除的数应满足(j%3!=0)||(j%5!=0)。#include<stdio.h>main(){intj;

for(j=10;j<100;j++) {if((j%3!=0)||(j%5!=0)) continue;printf("%5d",j); }

printf("\n");}3.流程图比较程序的输出结果为:1530456075902.例3.131.区别3.3.3break语句与continue语句的区别3.3几种转移控制语句3.流程图比较3.2.4goto语句3.3几种转移控制语句goto语句的一般格式为:

goto

lable;其中,lable是语句标号。标号用标识符表示,即以字母或下划线开头,后跟字母或数字或下划线,并以冒号结尾;且标号可以和变量同名。3.2.5return语句3.3几种转移控制语句return语句是函数返回语句,可以带参数也可以不带参数。具体将在后面讲解函数时进行介绍,此处将不作详细的说明。12表达式语句由表达式加上分号“;”组成。执行表达式语句就是计算表达式的值。例如:x=y+z;/*赋值语句*/y+z;/*加法运算语句,但计算结果不能保留,无实际意义*/i++;/*自增1语句,i值增1*/343.4C程序语句5表达式语句12函数调用语句由函数名、实际参数加上分号“;”组成。例如:

printf("%f\n%f\n",a,b);执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调函数体中的语句,从而求出函数值。有关函数的知识在后继的章节中将详细介绍。343.4C程序语句5函数调用语句12控制语句用于控制程序的流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有9种控制语句,具体可以将其细分为如表所示的三类。343.4C程序语句5控制语句序号语句类型语句类别语句说明1条件判断语句if语句简单条件语句switch语句多分支选择语句2循环执行语句dowhile语句循环语句while语句循环语句for语句循环语句3转向语句break语句中止执行switch语句或循环语句goto语句转向语句continue语句结束本次循环语句return语句从函数返回语句12用大括号{}括起来的相互关联的若干语句的集合称为“复合语句”,又称为“分程序”。复合语句内的各条语句都必须以分号“;”结尾,在大括号“}”外不能再加分号。例如,下面的语句就是一条复合语句:{x=y+z;a=b+c;

printf("%d%d",x,a);}343.4C程序语句5复合语句12只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用作空循环体。例如:while(getchar()!='\n');上述程序段的功能是,只要从键盘输入的字符不是回车则继续输入,这里的循环体为空语句。343.4C程序语句5空语句1.实例一

2.实例二3.实例三3.5C程序举例某个服装店经营套服,也单件出售。如果买整套服装,一次买的数量多于50套,每套80元;如果一次买的数量不足50套,每套90元;如果只买上衣,每件60元;如果只买裤子,每条45元。输入需要买的上衣和裤子的件数,计算应付金额。思路:首先判断购买的形式,即买套装(此时买的上衣和裤子件数相同),还是分件买,根据购买的形式计算金额。1.实例一

2.实例二3.实例三3.5C程序举例下图所示为对应的N-S流程图。

输入上衣数c和裤子数tc==t

假c>=50

假m=c*80m=c*90c>t

假t>=50

假c>=50m=t*80+(c-t)*60m=t*90+(c-t)*60m=c*80+(t-c)*45m=c*90+(t-c)*45

输出应付的金额m

假1.实例一

2.实例二3.实例三3.5C程序举例程序如下:#include<stdio.h>main(){int

c,t;/*变量c代表买上衣的件数,t代表买裤子的件数*/

intm;/*变量m表示应付金额*/

printf("Pleaseinputthenumberofcandt:\n");

scanf("%d,%d",&c,&t);/*输入需要买的上衣和裤子的件数*/

if(c==t)/*成套买*/{if(c>=50)m=c*80;/*买50套以上,每套80元*/elsem=c*90;/*买50套以下,每套90元*/}else/*不成套买*/{if(c>t)/*买的上衣比裤子多*/{if(t>=50)m=t*80+(c-t)*60;/*多于50件,成套部分按每套80元算,单件另算*/1.实例一

2.实例二3.实例三3.5C程序举例elsem=t*90+(c-t)*60;/*少于50件,成套部分按每套90元算,单件另算*/}else/*买的上衣比裤子多*/{if(c>=50)m=c*80+(t-c)*45;/*多于50件,成套部分按每套80元算,单件另算*/elsem=c*90+(t-c)*45;/*少于50件,成套部分按每套90元算,单件另算*/}}

printf("Themoneyyouneedtopayis%d\n",m);/*输出应付的金额*/}程序的运行结果为:Pleaseinputthenumberofcandt:54,29↙Themoneyyouneedtopayis41101.实例一2.实例二3.实例三3.5C程序举例利用多重循环语句求出100以内所有的质数。思路:质数是指只能被1和它本身整除的自然数。可以用for循环语句控制1到100之间数值j的增加,用while循环语句判断数值j是否为质数,并输出。下图所示为对应的N-S流程图。forj=2to100prime=1k=2当k<=(j/2)j%k==0真假prime=0k++prime==1真假输出j的值输出换行符\n1.实例一2.实例二3.实例三3.5C程序举例程序如下:#include<stdio.h>main(){intj;/*定义一个整型变量j,用于外层循环的计数*/

int

k,prime;/*k是内层循环的控制变量,prime作为质数的标志*/

printf("Theprimebetween1and100are:\n");/*for循环控制1到100之间数值的变化,如果是质数则输出*/

for(j=2;j<=100;j++)/*从2开始循环*/{prime=1;k=2;/*用while语句判断是否是质数*/

while(k<=(j/2))/*内循环while*/1.实例一2.实例二3.实例三3.5C程序举例{if(j%k==0)/*判断是否可以整除*/prime=0;/*当j不是质数则给prime赋值0*/k++;}

if(prime==1)/*从2开始*/ printf("%4d",j);}

printf("\n");}程序的运行结果为:Theprimebetween1and100are:↙2357111317192329313741434753596167711.实例一2.实例二3.实例三3.5C程序举例请为“百鸡问题”编写程序。百鸡问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几只”。思路:由题意知:(1)鸡翁+鸡母+鸡雏=100(2)鸡翁*5+鸡母*3+鸡雏*1/3=100由上述两个公式推出:鸡翁*7+鸡母*4=100从而得出:鸡母=(100-鸡翁*7)/4因此只要对鸡翁的只数进行穷举,采用单循环,利用公式即可求出鸡母和鸡雏的只数。1.实例一2.实例二3.实例三3.5C程序举例下图所示为对应的N-S流程图。for

cock=0

to

20hen=(100-7*cock)/4chick=100-hen-cockcock*5+hen*3+chick*1/3==100&&

chick%3==0&&hen>=0&&chick>=0真假依次输出cock、hen、chick的值1.实例一2.实例二3.实例三3.5C程序举例程序如下:#include<stdio.h>voidmain(){int

cock,hen,chick;

for(cock=0;co

温馨提示

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

最新文档

评论

0/150

提交评论