7777777-4396 发表于 2020-5-1 10:28:20

选择结构问题

本帖最后由 7777777-4396 于 2020-5-1 10:32 编辑

#include<stdio.h>
int main()
{float a;
int b=0,i=0,c,o,v;
    printf("请输入所有学生的期末成绩:");
    scanf("%.1f",&a);
while(a>=0&&a<=100)
{i++;
o=i++;
   if(a>=60)
   if(a>=80)
       if(a>=90)printf("No.%d 期末成绩:%.1f 考核等级:A\n",o,a);
       else printf("No.%d 期末成绩:%.1f 考核等级:B\n",o,a);
   else printf("No.%d 期末成绩:%.1f 考核成绩:C\n",o,a);
   else printf("No.%d 期末成绩:%.1f 考核成绩:D\n",o,a);
   }
   
while(a>=0&&a<60)
{b++;
v=b++;
c=o-v;
printf("及格人数:%d 不及格人数:%d",c,v);
}

return 0;
}



输入成绩之后 是无限循环例如 :95-1(输入非法成绩停止运行) No.1期末成绩:0.0 考核等级:D

zltzlt 发表于 2020-5-1 11:02:20

输入不能指定浮点数的位数,要把 .1 去掉。

猜你应该是想这样:

#include <stdio.h>
int main()
{
    float a;
    int b = 0, i = 0, c;
    printf("请输入所有学生的期末成绩:");
    scanf("%f", &a);
    while (a >= 0 && a <= 100)
    {
      i++;
      if (a >= 60)
            if (a >= 80)
                if (a >= 90)
                  printf("No.%d 期末成绩:%.1f 考核等级:A\n", i, a);
                else
                  printf("No.%d 期末成绩:%.1f 考核等级:B\n", i, a);
            else
                printf("No.%d 期末成绩:%.1f 考核成绩:C\n", i, a);
      else
            printf("No.%d 期末成绩:%.1f 考核成绩:D\n", i, a);
      if (a >= 0 && a < 60)
      {
            b++;
      }
      scanf("%f", &a);
    }
    c = i - b;
    printf("及格人数:%d 不及格人数:%d", c, b);

    return 0;
}

肥你个橙c 发表于 2020-5-1 11:33:28

首先scanf函数应该在循环内(输入所有同学的期末成绩);
a的值没有发生变化,当然会一直在循环状态下。
页: [1]
查看完整版本: 选择结构问题