标题:新手题,依旧有问题
只看楼主
极客威威
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-12-8
结帖率:100%
已结贴  问题点数:20 回复次数:7 
新手题,依旧有问题
/*编写一程序实现以下功能

从键盘输入一个一百分制成绩,如果不在0~100范围内,则要求重新输入数据,直到输入的数据在0~100范围内。

将输入的数据转换成等级‘A’,‘B’,‘C’,‘D’,‘E’,并输出。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’, 60~69分为‘D’,60分以下为‘E’。
不知道问题出哪了????????
*/
#include<stdio.h>
int main()
{
    int i;
    float n;
    for(i=1;;i++)
    {
        scanf("%f",&n);
        if(n>100||n<0)continue;
        else
        {
            printf("score=%.1f,",n);
            if(n>=90)printf("grade=A");
            else if(n<90&&n>=80)printf("grade=B");
            else if(n<80&&n>=70)printf("grade=c");
            else if(n<70&&n>=60)printf("grade=D");
            else if(n<60)printf("grade=E");
        }
        break;
    }
}
搜索更多相关主题的帖子: 数据 if 输入 printf 范围 
2020-12-08 15:56
clb141914845
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2020-12-8
得分:5 
使用goto语句,输入有误时,返回原来输入的值,而不是跳过执行,这是我的理解,我也只是小白,也不知道对不对,反正能解决你的问题。
程序代码:
#include <stdio.h>
main()
{
    float n;
begin:
    scanf("%f",&n);
    if(n > 100 || n < 0)
    {
        printf("你输入有误,请重新输入\n");
        goto begin;
    }
    else
    {
        printf("score=%.1f,",n);
            if(n>=90)printf("grade=A");
            else if(n<90&&n>=80)printf("grade=B");
            else if(n<80&&n>=70)printf("grade=c");
            else if(n<70&&n>=60)printf("grade=D");
            else if(n<60)printf("grade=E");
    }
    return 0;
}
2020-12-08 23:58
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:0 
回复 楼主 极客威威
程序代码:
#include<stdio.h>
int main()
{
    float n;
    while (1)
    {
        scanf("%f", &n);
        if (n > 100 || n < 0)
        {
            printf("非法输入,请继续\n");  // 加上换行符,以便再次输入(下同)
            continue;
        }
        else
        {
            if (n >= 90)
                printf("grade = A\n");
            else if (n < 90 && n >= 80)
                printf("grade = B\n");
            else if (n < 80 && n >= 70)
                printf("grade = c\n");
            else if (n < 70 && n >= 60)
                printf("grade = D\n");
            else
                printf("grade = E\n");
        }
    }
}
2020-12-09 00:16
极客威威
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-12-8
得分:0 
不行啊
2020-12-09 14:05
极客威威
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-12-8
得分:0 
回复 2楼 clb141914845
我把你的方法试了试,还是一样的错误
2020-12-09 14:06
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:5 
程序代码:
#include<stdio.h>
#include<stdlib.h>

int main()
{
    float n;
    char c[30];
    while (1)
    {
        scanf("%s", c);
        n=atof(c);
        
        if (n > 100 || n < 0 || (c[0]!='0' && n ==0))
        {
            printf("非法输入,请继续\n"); 
            continue;
        }
        else
        {
            if (n >= 90)
                printf("grade = A\n");
            else if (n < 90 && n >= 80)
                printf("grade = B\n");
            else if (n < 80 && n >= 70)
                printf("grade = c\n");
            else if (n < 70 && n >= 60)
                printf("grade = D\n");
            else
                printf("grade = E\n");
        }
    }
}
2020-12-09 19:51
clb141914845
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2020-12-8
得分:5 
现在这样就可以了,套用while循环,如果输入-1,则跳出循环,输入别的不是1-100的数则重新输入
程序代码:
#include<stdio.h>
main()
{
    int n;
    while( n != -1){
        scanf("%d",&n);
        if( n == -1){
            printf("输入完毕!\n");
        }
        else {
        if(n>100||n<0){
            printf("请重新输入1-100:"); 
        }else if(n>=90)printf("grade=A\n");
         else if(n<90&&n>=80)printf("grade=B\n");
         else if(n<80&&n>=70)printf("grade=c\n");
         else if(n<70&&n>=60)printf("grade=D\n");
         else if(n<60)printf("grade=E\n");
        } 
    }
    return 0;
}
2020-12-13 16:02
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:5 
回复 4楼 极客威威
怎么就不行?
2020-12-13 19:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504177-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030017 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved