一个郁闷的C语言程序

来源:百度知道 编辑:UC知道 时间:2024/06/13 09:43:04
以下是我晚上编写的从大到小输出三个数字的程序。

问题是,当我没有加入循环的时候,一切都正常的,可是加入循环之后,程序运行的就怪怪的,很郁闷啊。

也就是,我想让这个程序一直执行,直到你按退出才退出。

总之,把主程序里的最后一句,执行循环的那个语句去掉就正常了,加入就不正常了,循环写的感觉也没错啊。郁闷!

/* Note:Your choice is C IDE */
#include "stdio.h"
max(a,b,c)
{
int i;
i=a;
if(b>i)
i=b;
if(c>i)
i=c;
printf("三个数从大到小是:%d ",i);
return i;
}
max1(a,b,c,i)
{
if(i==a)
{
if(b>c)
printf("%d %d\n",b,a);
else
printf("%d %d\n",c,b);
}

}
wrong(a,b,c)
{
if(a==b||a==c||b==c)
{
printf("输入错误,请重新输入不同的三个数字\n");
scanf("%d%d%d",&a,&b,&c);
wrong(a,b,c);
}
}

xunhuan(p)
{
char k;
printf(" 继续输入Y,退出按任意键\n");
scanf("%c",&k);
if(k=='Y'||k=='y')

没太看懂你程序的意图,这么写法哪里精彩了??明显效率很低这样做,
wrong这个函数没必要写成递归的形式,不太好,不如在外面加个循环来的好些,
当然这个写也可以,再有就是你的max1这个函数,应该问题在这个函数里,
你的i是从max得出来的最大的数,但是,if(i == a)这也就是说明a已经被打印输出过了,
下面你判断if(b>c)printf("%d %d\n",b,a);这里明显就应该是b,c而不应该是b,a,还有就算是这样写的话,
感觉上也不用三个max1吧,最多在max1里用if else if else就OK了。没必要多加几次函数的调用。
max1(a,b,c,i)
{
if(i==a)
{
if(b>c)
printf("%d %d\n",b,a);
else
printf("%d %d\n",c,b);
}

}
=========================================
#include "stdio.h"
int max(int a,int b,int c)
{
int i;
i=a;
if(b>i)
i=b;
if(c>i)
i=c;
printf("三个数从大到小是:%d ",i);
return i;
}
void max1(int a,int b,int c,int i)
{
if(i==a)
{
if(b>c)
printf("%d %d\n",b,a);
else
printf("%d %d\n",c,b);
}

}
voi