| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 987 人关注过本帖
标题:[已解决]请问我的代码错在哪里?题目:GPA
只看楼主 加入收藏
杭01
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
威 望:1
帖 子:29
专家分:132
注 册:2016-2-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
[已解决]请问我的代码错在哪里?题目:GPA
题目:http://acm.hdu.
链接中的Sample Input, Sample Output均测试通过,但是放上去显示Wrong Answer。
(二楼有中文题目)

我的代码:
程序代码:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
    char line[1000];
    
    while (!feof(stdin))
    {
        gets(line);
        char *p = strtok(line, " ");
        int markSum = 0; /* 分数总数 */
        int markCount = 0; /* 科目总数 */

        while (p)
        {
            char grade = *p; /* 单科分数 */
            char grades[] = "FDCBA"; /* 有效分数集合 */
            char *pos = strchr(grades, grade);

            if (pos == NULL) /* 无效分数 */
            {
                printf("Unknown letter grade in input\n");
                goto nextLoop; /* 这里能不能不用goto? */
            }
            else /* 有效分数 */
            {
                ++markCount; /* 增加科目总数 */
                markSum += pos - grades; /* 加总分 */
            }

            p = strtok(NULL, " ");
        }

        printf("%.2f\n", ((float)markSum)/markCount);

nextLoop:
        ;
    }
    
    return 0;
}


[此贴子已经被作者于2016-2-19 10:09编辑过]

2016-02-18 16:25
杭01
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
威 望:1
帖 子:29
专家分:132
注 册:2016-2-11
收藏
得分:0 
简单翻译一下题目:
GPA就是平均分的意思。A代表4分,B代表3分,C代表2分,D代表1分,F代表0分(没有E)。
输入-输出
每行输入是由空格分隔的英文大写字母,代表每科的分数。请算出平均分,保留小数点两位,各平均分之间用空格分开。
如果某行输入遇到E,输出“Unknown letter grade in input”。
样例输入
A B C D F
B F F C C A
D C E F
样例输出
2.00
1.83
Unknown letter grade in input

怎么计算的呢?
第一行,A B C D F表示总分是4+3+2+1+0=10,总共有5个科目,平均分10/5=2.00
第二行,B F F C C A表示总分是3+0+0+2+2+4=11,总共有6个科目,平均分11/6=1.83333333333333,保留两位是1.83。
第三行,出现了E,直接输出Unknown letter grade in input

准备中考中,有事请Email :)

Email: huihan9 AT qq DOT com
QQ: 2672286148
cnblogs: jt2001
2016-02-18 16:35
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:20 
gets(line);改成if(gets(line)==NULL)break;试下。
楼主简单问题复杂化了,拿需要指针指来指去!

能编个毛线衣吗?
2016-02-18 17:31
杭01
Rank: 3Rank: 3
来 自:广州
等 级:论坛游侠
威 望:1
帖 子:29
专家分:132
注 册:2016-2-11
收藏
得分:0 
回复 3楼 wmf2014
通过了!
您真厉害

准备中考中,有事请Email :)

Email: huihan9 AT qq DOT com
QQ: 2672286148
cnblogs: jt2001
2016-02-19 09:25
快速回复:[已解决]请问我的代码错在哪里?题目:GPA
数据加载中...
 
   



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

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