额。。。怎么说呢,自己给自己出的一道题,结果思路是有,但结果错的帮忙指点,谢了
本帖最后由 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个供应商给价钱。让他自动得出价钱。上面代码是我的思路,我知道还有更加简洁的,但是我不知道怎么做,才想到这种愚蠢的办法。可是结果还是错,到底怎么个回事,帮忙指正下,谢谢各位了!
你这个……:sweat:
C语言中scanf()函数的原型是 scanf("<格式说明字符串>",<变量地址>),第一部分是格式说明,不要加\n这种东西,输入后直接回车代表输入结束。
C语言中没有a>b>c这样的判断,应该是a>b&&b>c
最后建议先找本基础的C语言书看看吧,先学语言规范,别急着写代码 shorey 发表于 2015-4-28 21:35
你这个……
C语言中scanf()函数的原型是 scanf("",),第一部分是格式说明,不要加\n这种东西,输 ...
欧!我明白了,很高兴得到指点。多谢指教! 我会一直学下去的 a>b>c,假设a=3,b=1,c=2
那么a>b=1,也就是1>c,所以不行啊。 我也是菜鸟,希望有所帮助
#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;
}
qlw319 发表于 2015-4-30 23:40
我也是菜鸟,希望有所帮助
#include
额。。。说实话有点看不懂,因为我不懂英语,哈哈!不过我还是会上机运行看看的,谢谢你! 本帖最后由 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了所有的可能了哦不过在判断那我写错了 shorey 发表于 2015-4-28 21:35
你这个……
C语言中scanf()函数的原型是 scanf("",),第一部分是格式说明,不要加\n这种东西,输 ...
明白了,谢谢指教 myqicq 发表于 2015-4-28 22:55
我会一直学下去的
嗯,我也是 qlw319 发表于 2015-4-30 23:40
我也是菜鸟,希望有所帮助
#include
运行错误! 我的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;
}
#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
建议把所有的“else if ”改为“if”,另外楼主没有考虑三个数相等的情况! 卧龙超俊 发表于 2015-5-1 18:47
建议把所有的“else if ”改为“if”,另外楼主没有考虑三个数相等的情况!
咦!哎,我怎么没考虑到万一三个价钱都一样的情况呢!为什么else换成if会好点呢?求教! 凌风破浪 发表于 2015-5-1 17:21
C的一个简单版本,
没测试对错,我的电脑上需要设置才能使用scanf
嗯。。。运行不了,不过还是得谢谢你! 。。。。貌似没有if(a>b>c)这种用法的吧。。。。 Anny黄 发表于 2015-5-1 15:30
运行错误!
这个是C++版的代码,应该不会运行失败,我之前测试过。保存文件时后缀是.cpp Anny黄 发表于 2015-5-1 21:54
咦!哎,我怎么没考虑到万一三个价钱都一样的情况呢!为什么else换成if会好点呢?求教!
你所列举的是六种互不相干的情况,比如if(x<30).........else if(x<60)表达的意思其实是30<=x<60,而如果写成
else if(20<x<60)岂不是矛盾了,不知道你听明白不?
页:
[1]