| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 441 人关注过本帖
标题:新手的一些小问题,求大神们解剖下。
只看楼主 加入收藏
a413873492
Rank: 2
等 级:论坛游民
帖 子:74
专家分:74
注 册:2014-5-12
结帖率:92.31%
收藏
已结贴  问题点数:19 回复次数:5 
新手的一些小问题,求大神们解剖下。
/*用户输入商品价格,如高了,则输出高了,并让用户再次输入
如低了,则输出低了,也让用户再次输入,一直到用户输入正确为止
(限定只能有三次机会)*/
#include<stdio.h>
int main()
{
  int a,i=3;
  scanf("%d",&a);
  while(a!=30&&i>0)
   {

     if(a>30)
     {

       printf("gao");

     }
     else
     {

       printf("di");

     }
     scanf("%d",&a);
     i--;

   }
     if(a==30)
      {

        printf("OK");

      }
     else
      {

        printf("NO");

      }
    return 0;

}
搜索更多相关主题的帖子: include 用户 
2014-06-17 00:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:19 
实际执行一下自己的程序,用各种数据输入来测试对不对。比如,你输入30看看,程序输出什么?然后返回头看看代码,if(a>30),那么当a==30时,这个if()是不是跳到else部分去了?它输出跟你实际运行的一样吗?程序当然是忠实按照的代码执行的,输出不正确,当然是代码逻辑不对。按照这种结果,重新思考一下判断应该如何写。

其实,写代码的时候,在脑中就应该设想,如果我输入这样那样的数据,它将会如何?是否按照预期的正确行为动作?一定要去想的!你写出了if(a>30),就一定要最基本的测试,想象三种不同的可能,即a>30、a==30、a<30,程序的流程如何?a>30是这样,那么a<=30是不是else的逻辑?else该处理a<30还是a<=30呢?a==30时,程序怎么了?如果没把握,就编译了程序实际执行一下,看猜想对不对,把一小块代码测试好了、符合预期了,再接着写下面的,否则前面的没通过,后面的等于白写,因为实际结果根本就不是那样,后面写得越多,只能错得越多、改得越多。

写每一行代码,每一个语句,都要前前后后想清楚。用程序语言说话,不像QQ聊天,靠快、不假思索是不行的,就当你要发表论文申请诺贝尔奖,不严谨严肃对待,就不要写程序。

[ 本帖最后由 TonyDeng 于 2014-6-17 01:00 编辑 ]

授人以渔,不授人以鱼。
2014-06-17 00:41
a413873492
Rank: 2
等 级:论坛游民
帖 子:74
专家分:74
注 册:2014-5-12
收藏
得分:0 
- -我是还在想着前面的一题,所以还没有反应过来
  大概的意思我还是懂,就是不知道怎么注释好。

欢迎新手还大神一起来讨论qq群;264711626
2014-06-17 01:14
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
怎么注释?你的代码逻辑就不对。

授人以渔,不授人以鱼。
2014-06-17 21:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
#include <cstdio>
#include <cstdlib>
#include <conio.h>

int main(void)
{
    const int price = 30;            // 设定的正确价格
    const int max_count = 3;        // 允许用户尝试的最大次数

    bool ok = false;
    for (int counter = 0; counter < max_count; ++counter)
    {
        printf_s("Please input the price: ");
        int x;
        fflush(stdin);
        if (scanf_s("%d", &x) == 1)
        {
            int result = x - price;
            if (result == 0)
            {
                ok = true;
                break;
            }
            else
            {
                printf_s("Your input is %s.\n", (result > 0) ? "upper" : "lower");
            }
        }
    }
    printf_s("%s!\n", ok ? "ok" : "failure");

    printf_s("\nPress any key to continue...");
    _getch();
    return EXIT_SUCCESS;
}

授人以渔,不授人以鱼。
2014-06-17 22:04
a413873492
Rank: 2
等 级:论坛游民
帖 子:74
专家分:74
注 册:2014-5-12
收藏
得分:0 
回复 5 楼 TonyDeng
高,呵呵

欢迎新手还大神一起来讨论qq群;264711626
2014-06-17 23:56
快速回复:新手的一些小问题,求大神们解剖下。
数据加载中...
 
   



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

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