编程论坛's Archiver

都都 发表于 2008-7-18 00:12

求大家帮忙

quxiao(int x,int y)
{
    int z;
    z=x<y? x:y;
    return(z);
}
main()
{
    int i;
    int a[2];

    scanf("%d,%d",&a[0],&a[1]);
    a[0]=quxiao(a[1],a[0]);
    printf("%d,%d",a[0],a[1]);
    getch();
}
刚刚写了一个编辑取数组元素中较小的元素,并将a[0]赋值为较小元素的函数。
可是在运行时,比如输入2 3, 输出的结果是2 12803,我到底是哪里弄错了。。。,望高人指点

独孤小梦 发表于 2008-7-18 00:27

#include"stdio.h"
quxiao(int x,int y)
{
    int z;
        if(x>y)
                z=y;
                else
                z=x;
    return(z);
}
main()
{
    int i;
    int a[2];
        for(i=0;i<2;i++)
    scanf("%d",&a[i]);
    a[0]=quxiao(a[0],a[1]);
    printf("%d,%d",a[0],a[1]);
    getchar();
}

这里的IF你可以自己改为条件表达式!
输入
1
2
你自己编译出来看下!
还有你的程序最后一行的getch应该是getchar!

[[it] 本帖最后由 独孤小梦 于 2008-7-18 00:28 编辑 [/it]]

qxykzx 发表于 2008-7-18 00:52

我觉得应该是这样的

楼主程序并没有问题,我在turboc2下运行没有问题,楼主的程序估计是用别人的.
仔细看下这一句     scanf("%d,%d",&a[0],&a[1]);
它要求输入格式为   2,3   而不是 2 3
否则应该少一个逗号   scanf("%d %d",&a[0],&a[1]);
我试过了用加逗号的格式输入没有任何问题,而不加逗号就会出现楼主所说的问题.
至于最后一行的getch()是用来进行回显用的,所以程序无需做任何更改
请大家指教^_^

独孤小梦 发表于 2008-7-18 22:09

的确是粗心大意^没看到那个,……
最后的那个,getch我没法在VC里编译正确,需要改为:getchar才能编译成功!
LZ的问题还在出现!
LS的回答的确不错!
但是    printf("%d,%d",a[0],a[1]);这里,我觉得是鸡肋!把这个去了,还能清晰的看到最小的数字
如果还要把所有的东西输出来,那么建议:  putchar(10);然后在使用这个printf语句!
我使用的是VC6,如果有什么错的,请高手指教!

coming 发表于 2008-7-18 22:16

恩 是那个小逗号的错误 楼主用的函数不错 虽然不怎么推荐 不过至少说明你理解了三目运算符和赋值运算符优先级的问题

都都 发表于 2008-7-19 01:26

谢谢大家,就如qxykzx所说,问题果然出在scanf("%d,%d",&a[0],&a[1])中的"%d,%d"中的逗号身上,如果输入数据时的格式要和scanf函数里的格式保持一致。
谢谢qxykzx,谢谢独孤小梦,谢谢coming。
祝大家周末愉快

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.