查看: 7822| 回复: 20
跳转到指定楼层
上一主题 下一主题
收起左侧

小白求助一个简单的C语言程序

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 U.S.A 于 2014-9-14 17:16 编辑

【题目】http://pat.zju.edu.cn/contests/mooc-c/03-0
模拟交通警察的雷达测速仪。输入汽车速度,如果速度超出60 mph,则显示“Speeding”,否则显示“OK”。

输入格式:
输入在一行中给出1个不超过500的非负整数,即雷达测到的车速。
输出格式:
在一行中输出测速仪显示结果,格式为:“Speed: V - S”,其中V是车速,S或者是Speeding、或者是OK。
输入样例1:40
输出样例1:Speed: 40 - OK
输入样例2:75
输出样例2:Speed: 75 - Speeding

【我的代码】
#include <stdio.h>
int main()
{
    int n;
    scanf("%d", &n);
    if(n>60)
    printf("Speed: %d - speeding\n",n);
    else
    printf("Speed: %d - OK\n",n);
    return 0;
}

这个代码运行的结果是部分错误


【一个正确的代码】
#include<stdio.h>
int main()
{
        int speed;
        scanf("%d",&speed);
        if(speed>60)
         {
                printf("Speed: %d - Speeding",speed);
         }
        else
        {
                printf("Speed: %d - OK",speed);
         }
        return 0;
}

【不解之处】
对比后发现,我的代码与正确代码的唯一区别是:正确代码中的printf函数加了“{}”,而我的代码里没有。即:
if(speed>60)   {  printf("Speed: %d - Speeding",speed);}
if(speed>60)   printf("Speed: %d - Speeding",speed);   

实在搞不懂加不加大括号对结果有啥影响。请各位大神指教一下。拜谢!!



上一篇:实现单链表(JAVA)
下一篇:Career Cup 2.4ListPartition我这个一运行Eclpse就崩溃了,咋回事啊
推荐
 楼主| U.S.A 2014-9-14 17:45:33 | 只看该作者
全局:
zh355245849 发表于 2014-9-14 17:34
编译器的问题吧,这道题你写的没问题,大括号可加可不加,除非括号里有2条及以上才必须加

非常感谢
答案找到了,是speeding的首字母大小写问题
应该是:printf("Speed: %d - Speeding",n);
我写的:printf("Speed: %d - speeding",n);
回复

使用道具 举报

推荐
DamienPooh 2014-9-15 00:02:46 | 只看该作者
全局:
插一句
这种online judge的形式只把你的标准输出(stdout,简单点说就是printf打出来的东西)进行比对,即便程序没有逻辑错误,也会因为这种大小写之类的问题直接判错(oj的开发者为什么不先预处理一下呢看来是太懒了
回复

使用道具 举报

全局:
DamienPooh 发表于 2014-9-14 10:02
插一句
这种online judge的形式只把你的标准输出(stdout,简单点说就是printf打出来的东西)进行比对,即 ...

OJ一开始都是为ACM比赛准备的,ACM比赛不允许犯这种细节错误。抠的就是细节。
回复

使用道具 举报

🔗
zh355245849 2014-9-14 17:34:14 | 只看该作者
全局:
编译器的问题吧,这道题你写的没问题,大括号可加可不加,除非括号里有2条及以上才必须加
回复

使用道具 举报

🔗
1guangnian 2014-9-15 00:32:17 | 只看该作者
全局:
没经验的话还真是不好看出来。。都往逻辑和语法上去想了=。=
回复

使用道具 举报

🔗
Linzertorte 2014-9-15 02:12:58 | 只看该作者
全局:
。。。你是因为speeding小写了吧
回复

使用道具 举报

🔗
 楼主| U.S.A 2014-9-15 08:21:41 | 只看该作者
全局:
Linzertorte 发表于 2014-9-15 02:12
。。。你是因为speeding小写了吧

这到底是为什么呢?为什么小写了speed就不行了?
回复

使用道具 举报

🔗
lyk1993 2014-9-15 10:44:37 | 只看该作者
全局:
U.S.A 发表于 2014-9-15 08:21
这到底是为什么呢?为什么小写了speed就不行了?

没事,没有逻辑问题,要钻牛角尖的话那就就是题目里面说是Speeding,你给写成speeding就给你判成有错了。
回复

使用道具 举报

🔗
Linzertorte 2014-9-15 11:44:31 | 只看该作者
全局:
U.S.A 发表于 2014-9-15 08:21
这到底是为什么呢?为什么小写了speed就不行了?

你密码是Speeding.如果你输入speeding能进入吗?
回复

使用道具 举报

🔗
 楼主| U.S.A 2014-9-15 12:55:26 | 只看该作者
全局:
Linzertorte 发表于 2014-9-15 11:44
你密码是Speeding.如果你输入speeding能进入吗?

是这个道理
谢谢指教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表