计算一个学生的单科总评成绩,并根据他的成绩给出相应等级 (90分及以上为A,80—89为
B,70-79为C,60一69为口,60以下为E)
任务描述:一个学生某门课程有平时、期中和终末三个成绩构成,成绩的比例分别是平时成绩占
30%,期中成绩占30%,终末考试成绩占40%。
请编程输入平时、期中和终末的相应成绩,计算
并输出该生这么课程的总评成绩(注:成绩均为
百分制整数)
之前的代码有问题么?有问题留言
#include<stdio.h>
int main()
{int a,b,c;
char g;float s;
while(1) {
printf("请输入学生成绩:格式 平时 期中 期末\n");
fflush(stdin);
scanf("%d %d %d",&a,&b,&c);
s=0.3*a+0.3*b+0.4*c;
if (s>100||s<0)
{
printf("输入有误,请重新输入!\n");
continue;
}
if(s>=90) g='A';
else if(s>=80)g='B';
else if(s>=70)g='C';
else if(s>=60)g='D';
else g='E';
printf("成绩为%.1f分,成绩等级为%c。\n",s,g);
return 0;
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:#include <stdio.h>
int main()
{
int a[10];
int i, count = 0, j, t;
for (i=0; i<10; i++)
{
scanf("%d", &a[i]);//输入数据
}
for (i=0; i<10; i++)//判断及格率
{
if (a[i]>=60)
{
count++;
}
}
if (count >= 7)
{
for (i=0; i<10; i++)
{
for (j=i+1; j<10; j++)
{
if (a[i]<a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for (i=0; i<10; i++)
{
printf ("%d ", a[i]);//输出数据
}
}
else
{
do
{
count = 0;
for (i=0; i<10; i++)//找到第一个小于60的数
{
if (a[i]<60)
{
break;
}
}
for (j=i+1; j<10; j++)//从第i+1个数开始依次与i相比较与60 的差
{
if (a[j]<60 && (60-a[i])>(60-a[j]))
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[i] = 60;
for (i=0; i<10; i++)//判断及格率
{
if (a[i]>=60)
{
count++;
}
}
}while (count<7);
for (i=0; i<10; i++)
{
for (j=i+1; j<10; j++)
{
if (a[i]<a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for (i=0; i<10; i++)
{
printf ("%d ", a[i]);//输出数据
}
}
return 0;
}