资源描述
实验三 循环结构程序设计
一、实验准备
实验项目名称
循环结构程序设计
实验类型
基础性实验
实验时间
2015.5.14
学生姓名
学号+姓名
实验目的及要求:
1、熟练while、do…while和for语句实现循环的方法;
2、掌握循环语句与分支语句结合使用;
3、理解循环语句中的break和continue的区别。
实验重难点:
1、熟练while、do…while和for语句实现循环的方法;
2、掌握循环语句与分支语句结合使用。
实验设备与环境:
PC、Windows XP、Visual C++6.0
实验内容:
(1)由用户输入平时成绩所占比例a1,自动输出期末成绩所占比例(用百分制整数表示)。
(2)依次输入全班学生人数n,输入每个学生的学号number,平时成绩score1,期末成绩score2,计算每个学生的总评成绩score=平时成绩所占比例*平时成绩+期末成绩所占比例*期末成绩。
(3)根据每个学生的总评成绩,判定并输出其分数等级。[90,100]为A等,[80,89]为B等,[70,79]为C等,[60,69]为D等,[0,60]为E等。
(4)计算全班学生总评成绩的总分和平均分(保留2位小数)。
使用while、do…while或for循环中的一种实现上面的计算,并会转换成其它两种循环语句实现。
实验方案设计:
提示:按照给定的实验内容,进行算法设计(算法形式不限)。
设平时成绩所占比例a1(整型)、全班人数n(整型),循环变量i(表示第几个学生,为整型),学号number(整型)、平时成绩score1(实型)和期末成绩score2(实型),计算出全班总评成绩总和sum(整型)、全班总评成绩平均分avg(实型,保留两位小数)和每个学生的总评成绩score(整型),并根据总评成绩判别学生成绩的等级。
S1:i=1, sum=0.0
S2:输入全班人数n
S3:输入平时成绩所占比例a1的值
S4:自动算出期末成绩所占比例(100-a1)
S5:判断i<=n,如果为真,执行S6,否则执行S15
S6:输入学号number
S7:输入学号平时成绩score1和期末成绩score2
S8:score=(int)(1.0*a1/100*score1+1.0*(1-a1)/100*score2)
S9:输出以一行星号标记开始和以一行星号标记结束的提示语 “以下为第i个学生(学号为number)的成绩信息”
S10:输出number, score1, score2和score
S11:sum=sum+score
S12:输出学生成绩等级情况的提示语“该学生成绩等级:”
S13:用switch语句判断该生的成绩等级,并输出等级情况
S14:i=i+1,执行S5
S15:输出全班n个学生总评成绩的总分sum
S16:输出全班n个学生总评成绩的平均分avg=sum/n
S17:结束
二、实验过程
实验步骤:
提示:按照实验内容顺序写出对应内容的实现
#include <stdio.h>
void main()
{
float score1,score2,avg;
int i,n,number,a1,score,sum;
sum=0;
i=1;
printf("请输入全班总人数:");
scanf("%d",&n); //输入全班人数
printf("请输入平时成绩所占比例用整数表示:");
scanf("%d",&a1); //输入平时成绩所占比例
printf("可得期末成绩比例为:%d\n",100-a1); //自动计算期末成绩所占比例
/*使用循环输入n个学生的成绩并计算得出等级情况,要求学生能用do…while和for语句实现以下循环*/
while(i<=n)
{
printf("**************************************************************\n");
printf("请输入学号:");
scanf("%d",&number); //输入学号
printf("请输入学生的平时成绩和期末成绩:");
scanf("%f%f",&score1,&score2); //输入两个成绩
score=(int)(1.0*a1/100*score1+1.0*(100-a1)/100*score2); //计算总评成绩
sum=sum+score; //累加全班学生总成绩
printf("/以下为第%d个学生(学号为%d)的成绩信息/\n",i,number);
printf("学号:%d\n",number);
printf("平时成绩:%.2f\n期末成绩:%.2f\n总成绩:%d\n",score1,score2,score); //输出3个成绩
printf("该学生成绩等级:");
/* 使用switch语句根据总成绩判断等级情况。90~100为A等,80~89为B等,70~79为C等,60~69为D等,<60为不及格。当然可以使用if条件语句进行以上判断*/
switch(score/10)
{
case 10:
case 9: printf("A等,优秀");break;
case 8: printf("B等,良好");break;
case 7: printf("C等,一般");break;
case 6: printf("D等,及格");break;
case 5:printf("不及格");break;
default:printf(“输入成绩有误。”);
}
printf("**************************************************************\n");
printf("\n\n");
i++;
}
avg=1.0*sum/n;
printf("====================================================\n");
printf("全班%d个学生总评成绩的总分为:%d\n",n,sum);
printf("全班%d个学生总评成绩的平均分为:%.2f\n",n,avg);
printf("====================================================\n");
}
若n=2,
运行效果:
实验结果分析与讨论:
提示:写出程序运行结果,并总结在实验过程中发现的问题、难点或关键点。
展开阅读全文