| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1950 人关注过本帖
标题:新手求教, 一个让我很晕的问题
只看楼主 加入收藏
black_boy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-3-25
收藏
 问题点数:0 回复次数:29 
新手求教, 一个让我很晕的问题
这个程序的作用是: 输入三个整数,然后按从小到大的顺序输出。
原代码是:
#include <stdio.h>
int max(int x,int y)
{
int z;
if(x>y) z=x;
else z=y;
return (z);
}
void main()
{
int a,b,c,z,t,p;
int max(int x,int y);
int min(int x,int y);
printf("请输入三个数\n");
scanf("%d,%d,%d",&a,&b,&c);
t=max(a,max(b,c));
z=min(a,max(b,c));
if((a<b&&b<c)||(b<c&&b<a)) p=b;
if((b<a&&a<c)||(c<a&&a<b)) p=a;
if((a<c&&c<b)||(b<c&&c<a)) p=c;
printf("%d,%d,%d",z,p,t);
}
int min(int x,int y)
{
int z;
if(x<y)  z=x;
else z=y;
return (z);
}

但运行时候有很奇怪的问题:
  输入:1,2,3     结果:1,2,3   正确结果
  输入:2,1,3     结果: 2,2,3   错误结果
  输入:3,2,1     结果: 2,187,3 错的离谱
不知道什么````

IDE:WIN-TC
谨请指教
谢谢
搜索更多相关主题的帖子: max void include return 
2008-05-11 23:03
走一圈
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2008-5-9
收藏
得分:0 
用数组和FOR循环来写 
2008-05-11 23:10
black_boy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-3-25
收藏
得分:0 
不好意思,
我只学到数组前面的循环语句,
想用IF语句和逻辑关系来写这个程序
还望指出错误
2008-05-11 23:14
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
这个解题方式也让我很晕
一定是在转换的时候有未转换过的变量,然后输出,就出现很奇怪的格式了。

但排序用到这种方式,我是头一回见到。其实用一种很简单的方法就行了。
2008-05-11 23:15
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************

        根据题意所写,未用到数组与指针,也未用到函数。
********************************************************************/
#include<stdio.h>
int main(void)
{
        int a,b,c,t;
        printf("请输入三个整数,空格格开,enter结束输入:\n");
        scanf("%d %d %d",&a,&b,&c);
        if(a>b)
        {
                t=a;
                a=b;
                b=t;
        }
        if(a>c)
        {
                t=a;
                a=c;
                c=t;
        }
        if(b>c)
        {
                t=b;
                b=c;
                c=t;
        }
        printf("\n转换后为:\n%d,%d,%d\n",a,b,c);


        getch();
}

2008-05-11 23:20
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
PS:
另外,如果函数在main前面,就不用声明了吧?
2008-05-11 23:21
black_boy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-3-25
收藏
得分:0 
谢谢 楼上的兄弟
谢谢 楼上的兄弟
我也知道这个替换t的方法

谭浩强 的书上例题就是用的楼上兄弟的方法,

但是我看到这个题的时候就是想用

想用IF语句和逻辑关系来改写这个程序

结果就发生了这个百思不得其解的问题

望大家指正``
不要说我钻牛角尖呀``
2008-05-11 23:29
走一圈
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2008-5-9
收藏
得分:0 
void main()
{
int a,b,c,Max,Min,Mid;
printf("请输入三个数\n");
scanf("%d%d%d",&a,&b,&c);//这里你又错了 你是不是刚才没输入逗号 原来你是scanf("%d,%d,%d",&a,&b,&c);
Max=max(a,max(b,c));
Min=min(a,min(b,c));//这里出错了
if((a<b&&b<c)||(c<b&&b<a)) Mid=b;
if((b<a&&a<c)||(c<a&&a<b)) Mid=a;
if((a<c&&c<b)||(b<c&&c<a)) Mid=c;
printf("%d%d%d",Max,Min,Mid);
}
你逻辑上没什么问题了  我也糊涂了 我再看看 你写的很乱
我改了你把我的放进去看看

[[it] 本帖最后由 走一圈 于 2008-5-12 00:08 编辑 [/it]]
2008-05-11 23:34
black_boy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:16
专家分:0
注 册:2008-3-25
收藏
得分:0 
回复 9# 的帖子
先谢谢楼上的兄弟了,
我试着去掉 int max(int x,int y); 中的 int
但提示编译失败```  
它说:表达式语法错在 main 函数中
``
不过还是感谢关注

另外
我朋友说这里不是不要int 而是不要int max(int x,int y);整个语句
我按他说的试了下,过然通过了```,但还是会出现1楼的那些错误,我朋友说他也不清楚为什么

还望广大高手赐叫

[[it] 本帖最后由 black_boy 于 2008-5-11 23:45 编辑 [/it]]
2008-05-11 23:42
走一圈
Rank: 1
等 级:新手上路
帖 子:156
专家分:0
注 册:2008-5-9
收藏
得分:0 
我改过了你再试试  我调试不方便
2008-05-11 23:45
快速回复:新手求教, 一个让我很晕的问题
数据加载中...
 
   



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

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