C语言程序设计第3版何钦铭颜晖第4章循环结构

合集下载

C语言循环结构ppt课件

C语言循环结构ppt课件

do-while的下一条语句
while的下一条语句
12:56
第27页
循环语句的选择
if(循环次数已知)
使用for语句
else
/* 循环次数未知 */
if (循环条件在进入循环时明确)
使用while语句
else /* 循环条件需要在循环体中明确 */ 使用do-while语句
12:56
第28页
§5.4 用于循环中的break和continue语句
12:56
第5页
③ <循环表达式>亦可省略,但在循环语句体中必须有 语句来修改循环变量,以使条件表达式的值在某一时 刻为0,从而能正常结束循环。 如:for(sum=0, i=1; i<=100;)
{ sum = sum +i; i++;
}
④ 三个表达式均省略,即for(;;),为无限循环,程序 中要避免这种情况的发生。
printf(“Grade average is %.2f\n", (total+1)/(num-1));
return 0;
}
12:56
第23页
【 例 5 - 8 】 求 sin(x)=x-x3/3!+x5/5!-x7/7!+… 直 到 最后一项绝对值小于le-7(即10-7)为止。 分析:
多项式从第二项起,每一项都是前一项乘以一个因子,
do_while语句是另一种用于产生循环动作的语句。 一般形式为:
do { <循环体语句> }while(<表达式>);
do_while语句的流程图 :
功能:先执行一次<循环体语句>,然后计算<表达式>的值, 若该值为“真”,则重复以上的操作,直到该值为“假”, 则退出循环语句,执行下一条语句。

C语言新教材PPT课堂课件-4(2)-循环结构

C语言新教材PPT课堂课件-4(2)-循环结构
件跳转到循环语句后面执行。 可用于switch语句和循环结构中。
continue语句
格式: continue; 功能: 结束本轮循环,即在本轮循环中,不
再执行循环体中continue后面的语句。 只能用于循环结构。
24
break语句和continue语句的比较(P105举例)
void main( ) { int n;
例:求1~100之间的整数之和
#include <stdio.h> void main( ) { int i,sum;
sum=0; i=1;
for( i=1 ; i<=100;
表达式1、表达式3可同时 缺省,但表达式2前后的 分号都不能省略。
i++ )
while(i<=100)
sum=sum+i;
i++;
✓ 累加算法之累加通式: 累加和变量=累加和变量+累加项
如 sum = sum + i ; (i为循环变量) sum = sum + x ; (x为输入值或某计算结果) num = num + 1; 即 num++; (计数)
✓ 连乘算法之连乘通式: 连乘积变量=连乘积变量*连乘项
如 fac = fac * i ; (i为循环变量) fac = fac * x ; (x为输入值或某计算结果)
sum=sum+i
while( i<=100)
i = i +1
{ sum=sum+i; i++;
输出sum的值
}
printf("1+2+3+…+100=%d\n", sum);

C语言程序设计(第3版)何钦铭-颜-晖-第4章-循环结构

C语言程序设计(第3版)何钦铭-颜-晖-第4章-循环结构

第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?解答:如果对 item 赋初值 0,则程序运行结果是 pi=0,因为 item 为 0 时不满足 while 循环的执行条件,即不执行循环,故 pi 值为 0。

如果将精度改为10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得 while 循环次数减少,必然影响到π的值。

【练习 4-2】运行例 4-2 程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。

如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则 while 循环条件不成立,不执行循环体。

【练习 4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数 eps,计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps(保留6位小数)。

试编写相应程序。

解答:#include <stdio.h>#include <math.h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1.0;s = 0;while(fabs (item) >= eps) {item = flag * 1.0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习 4-4】如果将例 4-3 程序中的 do-while 语句改为下列 while 语句,会影响程序的功能吗?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10;count ++;}解答:会有影响,因为当输入数据 number 为 0 时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。

循环结构(课件)-《C语言程序设计》同步教学

循环结构(课件)-《C语言程序设计》同步教学

if (循环条件在进入循环时明确)
使用 while 语句
else /* 循环条件需要在循环体中明确 */
使用 do-while 语句
5、break和continue语句
(1)break关键字 语句格式:break;
例如:编写程序实现,输入一个整数判断此数是否witch结构或者一个 循环体
案例1运行结果:
Input a string:I am a Chinese.↙ Number is: 15
简单循环案例分析
案例2 统计大写字符(do-while) 要求:从键盘输入一串字符(输入回车符时结束),统 计其中大写英文字母的个数。
算法设计:
(1)设置变量ch存放输入的字符;计数器变量 num存放大写英文字母的个数 (2)输入字符ch 若ch是大写英文字母,计数器num+1 重复上述操作,直到输入换行符为止 (3)输出大写英文字母个数
C 语言程序设计
翻转课堂实用教程
循环结构
简单循环结构 嵌套循环结构
简单循环结构
1、while循环
语句格式:
while(表达式) {
循环体(语句块); }
执行描述: (1)计算while后面的表达式值,如
果值为真,则执行步骤(2), 否则跳出循环体,继续执行该结 构后面的语句。 (2)执行循环体语句; (3)重复执行步骤(1)。
案例3程序代码:
int main() {
double mark, max,length; printf("Enter length:"); scanf ("%lf", &length); /* 读入第一个身高值 */ max = length; /* 假设第一个身高值最大 */ while (length >= 0){

C语言程序设计课件教学资源学习手册第4章 循环结构流程及应用

C语言程序设计课件教学资源学习手册第4章 循环结构流程及应用

学习手册(1)循环结构的基本流程及应用了解循环结构的意义和基本实现语句正确利用while语句进行循环程序设计能够根据流程图编写C语言程序while语句在循环结构中的应用循环的三个要素学习方法先完成一个简单实例,求1-100累计和,学习while语句和循环程序设计的算法和结构。

拓展程序求10!,然后以求12个月的煤气费用综合为例,总结循环结构的三个要素。

学习过程1. 回想现实生活中哪些是循环的例子?2.以前面所学的顺序结构为基础,求1至100之间数的累计和。

3.拓展:n! = 1 * 2 * 3 * …n4.计算一个住户一年的煤气费用的总和(每月煤气费由键盘输入)5.讨论:编写程序,计算满足:1+2+3+……..n<1000的最大n值。

学生容易出错的地方循环语句的执行次数写循环语句时不知道怎样选取循环变量问题与讨论循环控制语句有几种实现方式?while循环的一般格式和执行过程。

回顾以下内容1.循环的3个要点循环变量的初始值、循环条件和循环变量的增量。

2.while语句的一般形式while(表达式){循环体语句;}其中表达式为循环条件,循环体语句为要反复执行的操作。

课后任务编写程序,求1!+2!+3! (10)(2):循环结构的嵌套应用Do-While语句的标准格式for语句的标准格式Do-while语句与while语句的区别能够根据流程图编写C语言程序灵活使用三种语句编写C语言程序学习方法每个程序都争取用三种循环方式写出画出流程图教学过程1. 求1至100之间数的累计和。

以do-while语句和for语句的格式实现。

2. 某班同学上体育课,从1开始报数,共有38人,老师要求报数时凡是3的倍数的同学往前一步走,试编程将这些同学的序号打印出来。

在循环体中使用条件语句分别用for语句、while语句、do-while语句实现。

3. 通过读程序理解continue语句与break语句的作用。

4.练一练:两个同学之间通信,但是不想让别人知道通信的内容,于是相互约定:将a转化为c,b转化为d……x转化为z,y转化为a,z转化为b。

C语言程序设计循环结构程序设计

C语言程序设计循环结构程序设计

C语言程序设计循环结构程序设计循环结构是一种重复执行特定任务的程序设计方法,它可以节省代码量,提高代码的复用性和可读性。

C语言提供了多种循环结构,如for循环、while循环和do-while循环。

在本文中,将介绍C语言程序设计中循环结构的应用。

首先,我们来介绍for循环。

for循环是一种在已知循环次数的情况下使用的循环结构。

它的基本语法如下:```for (初始化表达式; 循环条件表达式; 循环后操作表达式)代码块```其中,初始化表达式用于初始化计数器变量,循环条件表达式用于判断是否继续执行循环,循环后操作表达式用于更新计数器变量的值。

具体代码示例如下:```c#include <stdio.h>int maiint i;for (i=0; i<5; i++)printf("Hello, World!\n");}return 0;```上述代码会打印"Hello, World!"五次。

在for循环中,初始化表达式会在循环开始前执行一次,循环条件表达式会在每次循环开始时判断,如果为真则执行循环体中的代码块,然后执行循环后操作表达式,然后再次判断循环条件表达式,依此类推,直到循环条件表达式为假时循环结束。

接下来,我们介绍while循环。

while循环是一种在不知道循环次数的情况下使用的循环结构。

它的基本语法如下:```while (循环条件表达式)代码块```具体代码示例如下:```c#include <stdio.h>int maiint i = 0;while (i < 5)printf("Hello, World!\n");i++;}return 0;```上述代码与前面的示例效果相同,都会打印"Hello, World!"五次。

在while循环中,循环条件表达式会在每次循环开始时判断,如果为真则执行循环体中的代码块,然后再次判断循环条件表达式,依此类推,直到循环条件表达式为假时循环结束。

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第四章 课后答案

C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第四章 课后答案

#include <stdio.h>#include <math.h>void main(){double eps,s,item,flag,denominator;s=0;item=1;flag=1;denominator=1;printf("Enter eps: ");scanf("%lf",&eps);while(fabs(item)>=eps){item=flag/denominator;s=s+item;flag=-flag;denominator=denominator+3;}printf("s=%lf\n",s);}练习4-4#include <stdio.h>void main(){int num,n;float score,total=0;num=0;n=0;printf("Please input score # 1 :");scanf("%f",&score);while(score>=0){if(score<60)num++;total=total+score;n++;printf("Please input score #%d(0~100): ",n+1);scanf("%f",&score);}printf("The average score is %.2f.\n",total/n);printf("The numbers between 0 and 59 is %d.\n",num); }#include <stdio.h>void main(){int i,j,n,num;printf("Enter n : ");scanf("%d",&n);for(i=1;i<=n;i++){printf("Please input an integer : ");scanf("%d",&num);for(j=2;j<=num-1;j++)if(i%j==0)break;if(j>num-1 && num!=1)printf("%d is a prime.\n",num);else printf("%d is not a prime.\n",num);}}练习4-8#include <stdio.h>void main(){int i,j,n;double e,product;e=1;printf("Enter n : ");scanf("%d",&n);for(i=1;i<=n;i++){product=1;for(j=1;j<=i;j++)product=product*j;e=e+1/product;}printf("e=%.2lf\n",e);}练习4-11#include <stdio.h>void main(){int i,n,min,num;printf("Enter n : ");scanf("%d",&n);for(i=1;i<=n;i++){printf("Enter an integer : ");scanf("%d",&num);if(i==1)min=num;else if(num<min)min=num;}printf("The Min number is %d.\n",min); }练习4-12#include <stdio.h>void main(){int num1,num2=0,flag=1;printf("Enter an integer : ");scanf("%d",&num1);if(num1<0){flag=-1;num1=-num1;}while(num1!=0){num2=num2*10+num1%10;num1=num1/10;}num2=flag*num2;printf("The new number is %d.\n",num2); }练习4-13#include <stdio.h>void main(){int i,j,count=0;for(i=100;i<=200;i++){for(j=2;j<=i-1;j++)if(i%j==0)break;if(j>i-1){count++;if(count%8==0)printf("%8d\n",i);else printf("%8d",i);}}printf("\n");}练习4-14#include <stdio.h>void main(){int i,f1=1,f2=1,f;printf("%8d\n",f1);printf("%8d\n",f2); /*输出前两项*/for(i=3;i<=20;i++){f=f2;f2=f1+f2;f1=f;printf("%8d\n",f2);}printf("\n");}习题4-1#include <stdio.h>void main(){int num=1,sum=0;while(num>0){printf("Enter an integer :");scanf("%d",&num);if(num<=0)break;if(num%2==0)sum=sum+num;}printf("The sum is %d.\n",sum); }习题4-2#include <stdio.h>#include <math.h>double fact(int n);void main(){int i=1;double x,item,s=0;printf("Enter x :");scanf("%lf",&x);item=x;while(fabs(item)>=0.00001){s=s+item;i++;item=pow(x,i)/fact(i);}printf("The sum is %lf.\n",s);}double fact(int n){int i;double product=1;for(i=1;i<=n;i++)product=product*i;return product;}习题4-3#include <stdio.h>void main(){int num,sum=0,count=0;printf("Enter an integer :");scanf("%d",&num);if(num<0)num=-num;while(num>0){sum=sum+num%10;num=num/10;count++;}printf("The sum is %d.\n",sum);printf("The count is %d.\n",count);}习题4-4#include <stdio.h>void main(){int i,n;double a,b,x,sum;a=2;b=1;sum=0; /*a为分子,b为分母*/ printf("Enter an integer : "); /*输入项数*/scanf("%d",&n);for(i=1;i<=n;i++) /*求前n项之和*/{sum=sum+a/b;x=a+b;b=a;a=x;}printf("The sum is %lf.\n",sum); /*输出和*/}习题4-5#include <stdio.h>void main(){int i,j,a,n;double item,sum; /*item为项变量,sum为累加和变量*/sum=0;printf("Enter two integers a and n : ");scanf("%d%d",&a,&n);for(i=1;i<=n;i++) /*求前n项之和*/{item=0;for(j=1;j<=i;j++) /*求第i项*/item=item*10+a;sum=sum+item;}printf("The sum is %lf.\n",sum); /*输出和*/}习题4-6#include <stdio.h>void main(){int i,j,k,count; /*count为换法种数,i为1分的硬币数,j为2分的硬币数,k为5分的硬币数*/count=0;for(i=1;i<=100;i++)for(j=1;j<=50;j++)for(k=1;k<=20;k++)if(i+2*j+5*k==100){printf("1分=%d, 2分=%d, 5分=%d\n",i,j,k);count++;}printf("换法种数=%d\n",count);}习题4-7#include <stdio.h>void main(){int i,m,digit,sum; /*sum为各位数字的立方和变量*/for(i=1;i<=10000;i++){/*求整数i中各位数字的立方和*/m=i;sum=0;while(m!=0){digit=m%10;sum=sum+digit*digit*digit;m=m/10;}if(i==sum)printf("%d\n",i); /*输出满足条件的整数i*/}}习题4-8#include <stdio.h>int prime(int n);void main(){int m,i;for(m=6;m<=100;m=m+2)for(i=2;i<=m-1;i++)if(prime(i) && prime(m-i)){printf("%d=%d+%d\n",m,i,m-i);break;}}int prime(int n) /*判定n是否素数的函数,返回1表示素数,返回0表示非素数*/{int i,flag;flag=1; /*初值为1*/for(i=2;i<=n-1;i++)if(n%i==0){flag=0;break;} /*置flag为0,表示非素数*/ return flag;}习题4-9#include <stdio.h>void main(){long int m,n,pow,digit; /*m为长整数变量,pow为m的幂*/printf("Enter a long integer :"); /*输入一个长整数m*/scanf("%ld",&m);/*求长整数m的幂,存放在pow变量中*/n=m;pow=1;while(n!=0){n=n/10;pow=pow*10;}pow=pow/10;/*从m的最高位开始,逐位输出各数位上的数字*/while(m!=0){digit=m/pow; /*求最高位数字*/m=m%pow;pow=pow/10; /*幂pow缩小10倍*/printf("%d ",digit);}printf("\n");}习题4-10#include <stdio.h>void main(){int i,m,n;printf("Enter an integer m :"); /*输入一个正整数m*/ scanf("%d",&m);n=m/2;printf("%d=1",m);for(i=2;i<=n;i++)while(m%i==0){printf("*%d",i);m=m/i;}printf("\n");}习题4-11#include <stdio.h>void main(void){int m, n, j, k; /* j表示最小公倍数,k表示最大公约数*/printf("Input two integer m and n : ");scanf("%d%d",&m,&n);j = m;while(j % n != 0) /* 求最小公倍数,存放在j变量中*/j = j + m;k = (m * n) / j; /* 求最大公约数,存放在k变量中*/printf("最小公倍数是%d \n最大公约数是%d\n ", j, k);}习题4-12#include <stdio.h>void main(void){int i;double h,s; /* h为高度,s为总路程*/h=100;s=100; /* 赋初值*/for(i=1;i<10;i++) /* 循环9次,求出第10次落地的总路程*/{h=0.5*h;s=s+2*h;}h=0.5*h; /* 第10次反弹的高度*/printf("第10次落地的总路程是%lf, 第10次反弹的高度是%lf\n ", s, h); }习题4-13#include <stdio.h>void main(void){int i,j;for(i=1;i<=7;i++){if(i<=4) /* 输出图形的上4行*/{for(j=1;j<=20-2*i;j++)printf(" "); /* 输出行前的空格*/for(j=1;j<=2*i-1;j++)printf("* "); /* 输出一行中的* */ }else /* 输出图形的下3行*/{for(j=1;j<=12+2*(i-4);j++)printf(" "); /* 输出行前的空格*/for(j=1;j<=2*(8-i)-1;j++)printf("* "); /* 输出一行中的* */ }printf("\n"); /* 换行*/}}习题4-14#include <stdio.h>void main(void){int x1,x2,i;x2=1; /* 赋初值:第10天的桃子数*/for(i=1;i<=9;i++) /* 循环9次,求出第1天的桃子数*/{x1=2*(x2+1);x2=x1;}printf("total=%d\n",x2); /* 输出第1天的桃子数*/}。

c语言循环结构ppt课件

c语言循环结构ppt课件

是,继续。
i = i * 2;
i现在为4。
i < n成立吗?
是,继续。
i = i * 2;
i现在为8。
i < n成立吗?
是,继续。
i = i * 2;
i现在为16。
i < n成立吗?
不成立,退出循环。
最新课件
6
while语句
虽然循环体必须是单独的一条语句,但这只是个技术 问题。
如果需要多条语句,那么只要用一对大括号构造成单 独一条复合语句就可以了:
表达式即为控制表达式;语句则是循环体。
最新课件
4
while语句
while语句示例:
while (i < n) /* 控制表达式 */ i = i * 2; /* 循环体 */
执行while语句时,首先计算控制表达式的值。 如果值不为零(真),那么执行循环体,接着再次
判定表达式。 这个过程持续进行直到最终控制表达式的值变为零。
i++; }

printf(″%d\\n″,sum);
}
do语句
do语句的一般格式如下:
do 语句 while ( 表达式 ) ;
执行do语句时,先执行循环体,再计算控制表达式 的值。
如果表达式的值非零,那么再次执行循环体,然后 再次计算表达式的值。
最新课件
17
do语句
使用do语句重写前面的“倒数计数”程序:
#include <stdio.h>
int main(void) {
int i, n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table: "); scanf("%d", &n);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章循环结构【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果就是什么?为什么?如果将精度改为 10-3,运行结果有变化不?为什么?解答:如果对 item 赋初值 0,则程序运行结果就是 pi=0,因为 item 为 0 时不满足 while 循环的执行条件,即不执行循环,故 pi 值为 0。

如果将精度改为10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得 while 循环次数减少,必然影响到π的值。

【练习 4-2】运行例 4-2 程序时,如果将最后一个输入数据改为-2,运行结果有变化不?如果第一个输入数据就是 -1,运行结果就是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数就是一结束标志,不进行统计,故任意一个负数都可以。

如果第一个输入数据就是-1,运行结果就是:Grade averageis 0,因为第一个输入就就是-1,则 while 循环条件不成立,不执行循环体。

【练习 4-3】序列求与(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数 eps,计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps(保留6位小数)。

试编写相应程序。

解答:#include <stdio、h>#include <math、h>int main(void){int denominator, flag;double item, s,eps;printf(“Input eps:”);scanf(“%lf”,&eps);flag = 1;denominator = 1 ;item = 1、0;s = 0;while(fabs (item) >= eps) {item = flag * 1、0 / denominator;s = s + item;flag = -flag;denominator = denominator +3;}printf ( “s = %f\n”, s);return 0;}【练习 4-4】如果将例 4-3 程序中的 do-while 语句改为下列 while 语句,会影响程序的功能不?为什么?再增加一条什么语句,就可以实现同样的功能?while(number != 0){number = number / 10;count ++;}解答:会有影响,因为当输入数据 number 为 0 时,上述 while 循环将不执行,count 值仍为 0,故输出为 0,不符合题目要求。

可增加一条 if 语句来解决上面的问题,在 while 循环前加上语句“if ( number==0) count=1; ”。

【练习 4-5】例 4-4 程序中的第 9~15 行可以用下列 for 语句替代不?为什么?for( i = 2; i <= m/2; i++)if( m%i == 0 ) printf("No!\n");else printf("%d is prime number!\n",m);解答:不能代替,因为只用一个数来除不足以判断该数就是否就是素数。

【练习4-6】猜数字游戏:先输入2个不超过100的正整数,分别就是被猜数mynumber与允许猜测的最大次数n,再输入您所猜的数yournumber,与被猜数mynumber进行比较,若相等,显示猜中,;若不等,显示与被猜数的大小关系,最多允许猜n次。

如果1次就猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但不超过n次猜到该数,则提示“Good Guess!”;如果超过n次都没有猜到,则提示“Game Over”;如果在到达n次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

试编写相应程序。

解答:#include<stdio、h>int main(void){int mynumber,n,yournumber,i;printf("Input mynumber:");scanf("%d",&mynumber);printf("Input n:");scanf("%d",&n);for(i=1;i<=n;i++){printf("Input yournumber:");scanf("%d",&yournumber);if(i==1&&yournumber==mynumber){printf("Bingo!");break; }if((i==2||i==3)&&yournumber==mynumber){printf("Lucky you!");break;}if((i>3&&i<=n)&&yournumber==mynumber){printf("Good Guess!");break;}if((i==n&&mynumber!=yournumber)||mynumber<0||yournumber<0){ printf("Game Over!");break;}}return 0;}【练习 4-7】求e的值:输入 1 个正整数 n,计算下式求出 e 的值(保留 2 位小数),要求使用嵌套循环。

试编写相应程序。

e = 1 + 1/1!+1/ 2!+1/ 3!+…+1/n!解答:#include<stdio、h>int main(void){int i, j, n;double e, t;printf("Input n: ");scanf("%d", &n);e = 1;for (i = 1; i <= n; i++){t=1;for(j=1;j<=i;j++)t = t * j;e = e + 1、0/t;}printf("e = %0、2f\n", e);return 0;}【练习 4-8】运行例 4-8 的源程序 1 时,如果先输入 0,即输入数据个数 n=0,表示不再输入任何成绩,运行结果就是什么?如何修改程序以应对这种情况?解答:当输入数据个数 n=0 时,由于在 for 循环外首先得输入一个成绩,故程序仍将等待输入第一个人的成绩,这与输入个数 n=0 矛盾,可修改如下:#include <stdio、h>int main(void){int i, mark, max, n;printf("Enter n: ");scanf ("%d", &n);if (n>0) {printf("Enter %d marks: ", n);scanf ("%d", &mark); /* 读入第一个成绩 */max = mark; /* 假设第一个成绩就是最高分 */for (i = 1; i < n; i++ ){scanf ("%d", &mark);if (max < mark)max = mark;}printf("Max = %d\n", max);}return 0;}【练习 4-9】运行例 4-8 的源程序 2 时,如果输入的第一个数就就是负数,表示不再输入任何成绩,运行结果就是什么?如何修改程序以应对这种情况?解答:当输入的第一个数就就是负数时,将不执行 while 循环,程序运行结果就就是输出所输入的负数。

【练习 4-10】找出最小的值:输入一个正整数 n, 再输入 n 个整数,输出最小值。

试编写相应程序。

解答:#include <stdio、h>int main(void){int i , min, n, x;printf("inputr n: ");scanf("%d", &n);printf("input numbers: ");scanf("%d", &x);min = x;for (i = 1; i < n; i++){scanf("%d", &x);if (min > x)min = x;}printf("min = %d\n", min);return 0;}【练习 4-11】统计素数并求与:输入2个正整数m与n(1≤m≤n≤500),统计并输出m与n之间素数的个数以及这些素数的与。

素数就就是只能被 1 与自身整除的正整数,1 不就是素数,2 就是素数。

试编写相应程序。

解答:#include<stdio、h>#include<math、h>int main(void){int i,m,n,j,count;double sum;printf("Enter m:");scanf("%d",&m);printf("Enter n:");scanf("%d",&n);count=0;sum=0;for(;m<=n;m++){j=sqrt(m);for(i=2;i<=j;i++)if(m%i==0)break;if(i>j&&m!=1){sum=sum+m;count++;}}printf("count=%d\nsum=%、0lf",count,sum);return 0;}习题4一.选择题1.C 语言中 while 与 do-while 循环的主要区别就是 A 。

A.do-while 的循环体至少无条件执行一次B.while 的循环控制条件比 do-while 的循环控制条件严格C.do-while 允许从外部转到循环体内D.do-while 的循环体不能就是复合语句2.下列叙述中正确的就是 C 。

A.break语句只能用于switch语句体中B.continue语句的作用就是使程序的执行流程跳出包含它的所有循环C.break语句只能用在循环体内与switch语句体内D.在循环体内使用break语句与continue语句的作用相同3.下列叙述中正确的就是 D 。

相关文档
最新文档