Anny黄 发表于 2015-4-28 20:57:35

额。。。怎么说呢,自己给自己出的一道题,结果思路是有,但结果错的帮忙指点,谢了

本帖最后由 Anny黄 于 2015-4-28 21:00 编辑

<div class="blockcode"><blockquote>#include<stdio.h>
void main()
{
      int a,b,c;
      printf("请输入价钱A,B,B");
      scanf("%d,%d,%d\n",&a,&b,&c);
      if(a>b>c)
      
                printf("全网最低价%d\n",c);
      
      else if(a>c>b)
      
                printf("全网最低价%d\n",b);
      
      else if(b>a>c)
      
                printf("全网最低价%d\n",c);
      
      else if(b>c>a)
      
                printf("全网最低价%d\n",c);
      
      else if(c>b>a)
      
                printf("全网最低价%d\n",a);
      
      else if(c>a>b)
      
                printf("全网最低价%d\n",b);
      
}</blockquote></div><br />



题目是,请各位供应商给出价钱,价低着得单;然后有3个供应商给价钱。让他自动得出价钱。上面代码是我的思路,我知道还有更加简洁的,但是我不知道怎么做,才想到这种愚蠢的办法。可是结果还是错,到底怎么个回事,帮忙指正下,谢谢各位了!

shorey 发表于 2015-4-28 21:35:07

你这个……:sweat:
C语言中scanf()函数的原型是 scanf("<格式说明字符串>",<变量地址>),第一部分是格式说明,不要加\n这种东西,输入后直接回车代表输入结束。
C语言中没有a>b>c这样的判断,应该是a>b&&b>c
最后建议先找本基础的C语言书看看吧,先学语言规范,别急着写代码

Anny黄 发表于 2015-4-28 21:47:25

shorey 发表于 2015-4-28 21:35
你这个……
C语言中scanf()函数的原型是 scanf("",),第一部分是格式说明,不要加\n这种东西,输 ...

欧!我明白了,很高兴得到指点。多谢指教!

myqicq 发表于 2015-4-28 22:55:05

我会一直学下去的

angel2015 发表于 2015-4-29 00:18:17

kissingfire 发表于 2015-4-30 22:02:39

a>b>c,假设a=3,b=1,c=2
那么a>b=1,也就是1>c,所以不行啊。

qlw319 发表于 2015-4-30 23:40:00

我也是菜鸟,希望有所帮助

#include <iostream>
using namespace std;

#define MIN(a, b) (a) < (b) ? (a) : (b)

int main()
{
    int nFirst, nSecond, nThird;
    cin >> nFirst >> nSecond >> nThird;
    int nResult = MIN(nFirst, MIN(nSecond, nThird));
    cout << "The lowest price is : " << nResult << endl;

    return 0;
}

Anny黄 发表于 2015-5-1 15:21:23

qlw319 发表于 2015-4-30 23:40
我也是菜鸟,希望有所帮助

#include


额。。。说实话有点看不懂,因为我不懂英语,哈哈!不过我还是会上机运行看看的,谢谢你!

Anny黄 发表于 2015-5-1 15:22:34

本帖最后由 Anny黄 于 2015-5-1 15:28 编辑

kissingfire 发表于 2015-4-30 22:02
a>b>c,假设a=3,b=1,c=2
那么a>b=1,也就是1>c,所以不行啊。
我else了所有的可能了哦不过在判断那我写错了

Anny黄 发表于 2015-5-1 15:23:36

shorey 发表于 2015-4-28 21:35
你这个……
C语言中scanf()函数的原型是 scanf("",),第一部分是格式说明,不要加\n这种东西,输 ...

明白了,谢谢指教

Anny黄 发表于 2015-5-1 15:24:22

myqicq 发表于 2015-4-28 22:55
我会一直学下去的

嗯,我也是

Anny黄 发表于 2015-5-1 15:30:38

qlw319 发表于 2015-4-30 23:40
我也是菜鸟,希望有所帮助

#include


运行错误!

凌风破浪 发表于 2015-5-1 17:14:33

我的C++ 版本
#include <vector>
#include <iostream>
#include <algorithm>
int main()
{
        std::cout << "请连续输入商品价格,结束请输入0:" << std::endl;

        //存储商品价格的数组
        std::vector<int> Goods;

        do
        {
                int Value;
                std::cin >> Value; //读取一个价格
                if (Value == 0)
                {
                        //输入0则停止输入
                        break;
                }
                //不是0则把价格输入到数组中
                Goods.push_back(Value);

        } while (true);

        //排序
        std::sort(Goods.begin(), Goods.end());

        std::cout << "最便宜的价格是: " << Goods << std::endl;


        return 0;
}



凌风破浪 发表于 2015-5-1 17:21:27

#include <stdio.h>
int main()
{
        puts("请连续输入商品价格,结束请输入0;");

        int minValue = 0;//用来临时存储当前发现的最便宜的价格
       
        scanf("%d", minValue);
        int Value = minValue;

        while (Value != 0)
        {
                scanf("%d", &Value);

                if (minValue > Value)//发现了更便宜的,则存储起来
                {
                        minValue = Value;
                }
        }
        printf("最便宜的商品是:%d", minValue);

        return 0;
}
C的一个简单版本,

没测试对错,我的电脑上需要设置才能使用scanf

卧龙超俊 发表于 2015-5-1 18:47:34

建议把所有的“else if ”改为“if”,另外楼主没有考虑三个数相等的情况!

Anny黄 发表于 2015-5-1 21:54:59

卧龙超俊 发表于 2015-5-1 18:47
建议把所有的“else if ”改为“if”,另外楼主没有考虑三个数相等的情况!

咦!哎,我怎么没考虑到万一三个价钱都一样的情况呢!为什么else换成if会好点呢?求教!

Anny黄 发表于 2015-5-1 21:56:49

凌风破浪 发表于 2015-5-1 17:21
C的一个简单版本,

没测试对错,我的电脑上需要设置才能使用scanf

嗯。。。运行不了,不过还是得谢谢你!

automation 发表于 2015-5-1 23:58:56

。。。。貌似没有if(a>b>c)这种用法的吧。。。。

qlw319 发表于 2015-5-2 00:25:21

Anny黄 发表于 2015-5-1 15:30
运行错误!

这个是C++版的代码,应该不会运行失败,我之前测试过。保存文件时后缀是.cpp

卧龙超俊 发表于 2015-5-2 09:55:49

Anny黄 发表于 2015-5-1 21:54
咦!哎,我怎么没考虑到万一三个价钱都一样的情况呢!为什么else换成if会好点呢?求教!

你所列举的是六种互不相干的情况,比如if(x<30).........else if(x<60)表达的意思其实是30<=x<60,而如果写成
else if(20<x<60)岂不是矛盾了,不知道你听明白不?
页: [1]
查看完整版本: 额。。。怎么说呢,自己给自己出的一道题,结果思路是有,但结果错的帮忙指点,谢了