当前位置: 首页 > article >正文

P3-3.【结构化程序设计】第三节——知识要点:while语句、do-while语句和for语句

视频:

P3-3.【结构化程序设计】第三节——知识要点:while语句、do-while语句和for语句

知识要点:while语句、do-while语句和for语句

目录

一、任务分析

二、必备知识与理论

三、任务实施


一、任务分析

输出某班若干学生的成绩,输出其中的高分、低分和平均分。

本任务要输入全班学生的成绩,并且每输入一个成绩都需要和已输入的成绩比较大小,以便确定最高分和最低分。在设计程序时,人们也总是把复杂的、不易理解的求解过程转换为易于理解的、操作简单的多次重复过程。在许多实际问题中都需要用到循环控制,循环是计算机解决问题的一个重要特征。例如,输入全校学生成绩;求若干个数之和。绝大多数的应用程序都包含循环。而循环结构又是结构化程序设计的基本结构之一,它和顺序结构、 选择结构共同作为各种复杂程序的基本构造单元。因此熟练掌握循环结构的概念及使用是程序设计的最基本的要求。

二、必备知识与理论

循环结构是根据给定的条件是否满足来决定是否重复执行某一模块的结构,反复执行的程序段称为循环体。

1. while语句

while语句用来实现“当型”循环结构,其一般格式如下:

 while(表达式)

循环体;

【例3.5】求1+2+3+…+99+100的和。程序代码如下:

#include <stdio.h>

main()

{

int i,sum=0;

i=1;

while(i<=100)

{  sum=sum+i;

 i++;

}

 printf("1+2+3+...+99+100=%d\n",sum);

}

运行结果:

1+2+3+…+99+100=5050

说明:

(1)这个程序是常见的累加算法。sum用来存放累加和,通常初值为0,因为0不会影响累加结果。

(2)i为循环控制变量, 因为从1加到100,所以i初值为1。执行while语句时先判断循环条件i<=100是否为真,为真就执行sum=sum+i,然后i++。i++语句是使循环趋于结束的语句,实现i值增加1以供下一次判断和累加使用。只有当循环条件i<=100为假即i=101时退出循环语句。退出循环语句时sum中已经计算出1到100的累加和。

2.do…whlie语句

do…while语句用来实现“直到型”循环结构,其特点是先执行循环体,然后判断循环条件是否成立。其一般格式如下:

do{

循环体

}while (达式);

do…while语句的执行过程如图3.11所示。先执行循环体,再判断表达式的值是否为真(非0),若为真,则继续执行循环体,若为假就结束循环,转去执行do…while循环的下一条语句。

例如:利用do…while语句求1+2+3+…+99+100的和。程序代码如下:

#include <stdio.h>

main()

{ int i,sum=0;

i=1;

  do

  { sum=sum+i; i++; }

  while(i<=100);

  printf("sum=%d\n",sum);    

}

3.for语句

在三种循环语句中,for语句最为灵活,不仅可以用于循环次数已经确定的情况,也可以用于循环次数虽不确定但给出了循环结束条件的情况,所以for语句也是最为常用的循环语句。

for语句的一般格式

for(达式1;达式2;达式3)

循环体;

例如:用for语句求1~100的和。

前面已经用while语句和do…while语句来做此题,下面用for语句实现

#include <stdio.h>

main()

{ int i,sum;

for(i=1,sum=0;i<=100; i++)

  sum=sum+i;

  printf("sum=%d\n",sum);

}

【例3.7】编写一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。

代码如下:

#include <stdio.h>

main()

{ int m,n,num1,num2,num3;

  num1=num2=num3=0;

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

{ printf("Please input No.%d:", n);

scanf("%d",&m);

 if(m>0)

       num1++;

    else if(m==0)

       num2++ ;

else

num3++;

}

printf("%d,%d,%d\n",num1,num2,num3);

} 

三、任务实施

现在我们来完成本节任务。输入某班学生的计算机成绩,输出其中的最高分和最低分,以及班级的平均成绩。

分析:

(1)考虑到班级人数的不确定性,可以通过键盘输入学生人数给变量n。

(2)用循环语句输入n个学生的成绩,把输入语句放在循环体内。

(3)在百分制中学生成绩在0~100之间,为求出成绩的最高和最低值,赋初值min=100,max=0;每输入一个成绩,与min和max比较,如果比min小,或者比max大,则置换它们的值。

程序代码如下:

#include <stdio.h>

main()

{ int i,n,score,max,min,sum;

float ave;

max=0;min=100;

sum=0;

printf("please input how many student:");

scanf("%d",&n);

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

{  printf("input %d students scores:\n",i);

      scanf("%d",&score);

      sum=sum+score;

   if(score>max)

  max=score;

   if(score<min)

  min=score;

}

ave=(float)sum/n;

printf("the max is:%d\n",max);

printf("the min is:%d\n",min);

printf("the average is:%.2f\n",ave);

}

运行结果:

please input how many student:4↙

input 1 students scores:

60↙

input 2 students scores:

80↙

input 3 students scores:

90↙

input 4 students scores:

95↙

the max is:95

the min is:60

the average is:81.25


http://www.kler.cn/a/396365.html

相关文章:

  • ES6更新的内容中什么是proxy
  • ElementUI的日期组件中禁止选择小时、分钟、秒
  • 生成式GPT商品推荐:精准满足用户需求
  • 释放高级功能:Nexusflows Athene-V2-Agent在工具使用和代理用例方面超越 GPT-4o
  • python makedirs() 详解
  • 【数据分享】全国农产品成本收益资料汇编(1953-2024)
  • 移植LVGL8.2以及移植过程的理解
  • Element表格show-overflow-tooltip属性
  • C#入门 023 什么是类(Class)
  • java 操作Mongodb
  • vue3项目【黑马大事件】笔记
  • MySQL技巧之跨服务器数据查询:基础篇-动态参数
  • c++入门--引用与指针,const与引用,NULL与nullptr
  • T6识别好莱坞明星
  • maven手动上传jar到私服仓库:mvn deploy:deploy-file命令
  • linux rsync 同步拉取上传文件
  • 【SpringBoot】使用过滤器进行XSS防御
  • 在uniapp中使用canvas封装组件遇到的坑,数据被后面设备覆盖,导致数据和前面的设备一样
  • 编译原理(手绘)
  • 2024年【A特种设备相关管理(A4电梯)】新版试题及A特种设备相关管理(A4电梯)找解析
  • 【AlphaFold3】开源本地的安装及使用
  • [Mysql] Mysql的多表查询----多表关系(下)
  • 精华帖分享|浅谈金融时间序列分析与股价随机游走
  • Maven配置元素详解
  • MATLAB中的绘图技巧
  • 高并发下如何保障系统的正确性?性能与一致性博弈的技术探索