大一C语言问题,怎样输入多行测试数据再输出多行结果???

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大一C语言问题,怎样输入多行测试数据再输出多行结果???相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
int main()

float x;
while (scanf("%f",&x)!=EOF)

if(x>100||x<0)

printf("Error\n");

else

if(x<=100&&x>=90)

printf("A\n");

else
if(x<90&&x>=80)

printf("B\n");

else
if(x<80&&x>=70)

printf("C\n");

else
if(x<70&&x>=60)

printf("D\n");

else
printf("E\n");


return 0;

怎样做到

输入
99.99
100.7788
81
55
-5.7
输出
A
Error
B
E
Error

我想问一下 你这是OJ里的题吗?如果是OJ 上的题,那我可以明确的告诉你,不用理会例子那种多行输入多行输出的形式。如果你那样做了,那反而会 wrong answer。就正常的输入一个数字,输出一个结果就好。追问

要求就是同时测试多组数据

追答

你现在写的这个程序的题目大概是 成绩评测 之类的东西。要求就是输入一个0——100的数据,然后对应的输出A、B、C之类题目。主要是让你练习对if——else语句的使用。当然也是练习swtich语句很好的题目。
你写的程序肯定是要提交到一个系统,然后由系统评测你程序的正确性。这个系统就做OJ。各个学校可能叫法不太一样,有些学校叫ACM评测系统等等之类的名字。这个系统我可以很确定的告诉你,它根本不要求你先输入所有的数据,再统一出结果。而是要求你输入一个数据,处理之后输出结果。
你说的要求,是你自己或者老师有这个要求,还是评测系统的要求?如果是评测系统,你能把题目的链接上传吗?
如果是你自己或者老师或者什么人的要求,那我能问一下 想达到什么样的效果?多组输入的最大值是多少?

追问

http://oj.hi-hi.cn/JudgeOnline/problem.php?cid=1084&pid=19
几乎所有竞赛题都是这样要求同时输入多组测试数据进行测试,并输出多组测试结果
这道题固定是输入五组数据 还有不限几组的 求解!

追答

我看到了你的题目,但是我没有你们学校OJ的账号,所以没办法给你验证到底我下面的代码能不能AC。五组输入可以用限定次数的方式做,不限定次数的输入就想你写的那样可以用while (scanf("%f",&x)!=EOF) 这种语句来做。当然如果你真的想救助,那可以给我一个账号,我可以保证给你一个AC的答案。可以私信给我账号。
#include
int main()

float x;

//while (scanf("%f",&x)!=EOF)
for(int i=0;i100||x=90)

printf("A\n");

else
if(x=80)

printf("B\n");

else
if(x=70)

printf("C\n");

else
if(x=60)

printf("D\n");

else
printf("E\n");


return 0;

追问

很有帮助!谢谢!!!

追答

不知道到底有没有帮到你,我曾经也在ACM待过,对ACM的题也能做点儿,有什么问题可以私信我一起讨论。我不太了解你们学校评测系统的好坏,你可以用一段时间感觉感觉。我个人向你推荐北大、杭电的OJ评测系统,题量大、题型丰富、测试数据恰当好处,用户数量众多,每一个题目都有好多人跟你一起讨论,而且这两个评测系统都是对外开放的。个人声明我不是北大也不是杭电的学生。绝无做广告的意思,真心想帮助你提高水平。如果你勤学苦练,估计大二的时候就应该可以代表学校参加省赛,如果你最够优秀,那你一定能在亚洲区比赛中获奖!
北大POJ:http://poj.org/
杭电HDUOJ:http://acm.hdu.edu.cn/

参考技术A 可以设置个结束标志,比如!在while中判断输入的值是不是结束标志。追问

可是输出的只是最后一个数据的测试结果

参考技术B #include <stdio.h>
int main()
float x[5];
int n=5,i=0;
while (n--)
scanf("%lf",&x[5-n]);
for(i;i<5;i++)
if(x[i]>100||x[i]<0)
printf("Error\n");
else if(x[i]<=100&&x[i]>=90)
printf("A\n");
else if(x[i]<90&&x[i]>=80)
printf("B\n");
else if(x[i]<80&&x[i]>=70)
printf("C\n");
else if(x[i]<70&&x[i]>=60)
printf("D\n");
else
printf("E\n");

return 0;
追问

用CB运行不出结果

codeup1010,多行(无穷多)输入含空格

题目描述

每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。

输入

有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。

输出

每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。

样例输入 Copy

A B C D F
B F F C C A
D C E F

样例输出 Copy

2.00
1.83
Unknown

#include<stdio.h>
#include <string.h>
 
void process(char str[]);
int main(){
       char str[200] = {};
       while(gets(str) != 0){
            process(str);
            memset(str,0,sizeof(str));
       }
 
    return 0;
}
 
void process(char str[]){
    int n = 0;
    char ch;
    double sum = 0.0;
 
    for(int i = 0; str[i] != ; i++){
        ch = str[i];if(ch ==  ){
            continue;
        }
        if(ch >= A && ch <= D){
             sum += 4-(ch - A);
             n++;
        }
        else if(ch == F){
            sum += 0.0;
            n++;
        }
        else {
            printf("Unknown
");
            return;
        }
    }
 
    if(n != 0){
 
        printf("%.2lf
",sum/(double)n);
    }
 
}

1、多行输入处理

字符串结尾判断,
str[i] != ‘‘
字符串清空原有内容

以上是关于大一C语言问题,怎样输入多行测试数据再输出多行结果???的主要内容,如果未能解决你的问题,请参考以下文章

C语言,输入多组数据,每行两个,然后对应每行一个输出结果

c语言中怎样输入多组数据 每组数据个数不确定 每组数据占一行

C语言试题九十二之输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行 ,每行包括一个由字母和数字组成的字符串

C语言试题九十二之输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行 ,每行包括一个由字母和数字组成的字符串

用c语言怎样实现输入一个数num,用连续的自然数相加的形式输出

c语言中,一次连续输入多组数据,并且最后连续输出多组结果,应该用哪种方法