一.用for循环实现
#include<stdio.h>
int main()
{
int x, y, i = 0, z, a = 0;//i是for外部变量意义为总人数
int num1, num2, num3;//num1是不及格的数量,num2是及格人数,num3是总人数
int sum1 = 0;//sum1是总成绩
float sum2 = 0;//sum2是平均成绩
printf("请输入学生成绩:\n");
for (z = 1; z > 0;)//循环输入x的值
{
scanf_s("%d", &x);
if (x >= 0 && x <= 100)
{
i++;//总人数
}//这个if语句是用自增算出学生总人数
if (x >= 0 && x < 60)
{
a++;//不及格人数
}//这一步是为了用自增算出不及格学生人数
z = x;//将x和z关联起来,当x小于0时结束外部for循环
for (num1 = 0, num2 = 0, num3 = 0; x >= 0;)//循环判断
{
if (x >= 0 && x < 60)
{
printf("打印不及格成绩%d\n", x);
num1++;
}
if (x >= 60 && x <= 100)
{
printf("打印及格成绩%d\n", x);
num2++;
}
if (x >= 0 && x <= 100)
{
num3++;
}
for (y = 0; y < num3; y++)
{
sum1 = sum1 + x;//总成绩
}
x = -1;//跳出for循环,就是题目中给出的输出一个小于0也就是负数的时候,运行程序。
}
}
if (x < 0)
{
sum2 = (sum1 / i);//平均成绩
}
printf("平均成绩%.2f\n", sum2);
printf("总成绩%d\n", sum1);
printf("总人数%d\n", i);
printf("不及格人数%d\n", a);
return 0;
}
用数组实现:
#include <stdio.h>
int main()
{
int b,c,d=0,e,i,a[20];//b是总人数,c是不及格人数,d是总成绩;e是及格人数
float sum1=0,sum2=0;//sum1是平均成绩;sum2是总成绩
printf("请输入学生成绩:\n");
while(i>=0)
{
scanf("%d",&a[i]);
if(a[i]<0)
break;
if(a[i]>=0&&a[i]<60)
{
c++;
printf("不及格成绩为:%d\n",a[i]);
}
if(a[i]>=60&&a[i]<=100)
{
e++;
printf("及格成绩为:%d\n",a[i]);
}
b++;
sum2+=a[i];
sum1=(sum2/b);
}
if(i<0)
{
printf("总人数为0\n");
}
printf("不及格人数为%d\n",c);
printf("平均成绩为:%0.2f\n",sum1);
return 0;
}