#include<stdio.h>
void main()
{
int a,b,c,d,t;
scanf(“%d,%d,%d,%d,%d”,&a,&b,&c,&d,&t);
if(a>b)
t=a;
a=b;
b=t;
else
printf(“%d,%d”,a,b);
if(b>c)
t=b;
b=c;
c=t;
else
printf(“%d,%d”,a,b,c);
if(c>d)
t=c;
c=d;
d=t;
else
printf(“%d,%d”,a,b,c,d);
}
它让4个数字从小到大排列。。。我真不知道我错哪里了。。。
>> 本文固定链接: http://www.vcgood.com/archives/3139
>> 转载请注明: nerissa999 2009年04月07日 于 C语言帝国 发表
你可以使用数组,再用数组排列 会比较简单 ,
你的程序的算法思想是错的哦!你看看!
#include<stdio.h>
void main()
{
int a,b,c,d,t;
scanf(“%d,%d,%d,%d,%d”,&a,&b,&c,&d,&t);/*格式中带,号,输入时候
也要,号隔开哦*/
if(a>b)
{
t=a;
a=b;
b=t;
}
else
{
printf(“%d,%d”,a,b);
i}
f(b>c)/*b>c,那你考虑到了b和a的大小吗?下面情况类似*/
{
t=b;
b=c;
c=t;
}
else
{
printf(“%d,%d”,a,b,c);
}
if(c>d)
{
t=c;
c=d;
d=t;
}
else
{
printf(“%d,%d”,a,b,c,d);
}
}
2楼说的那个方法我没有学过。。。三楼。。。我第一个情况就是考虑的ab的大小啊~~然后如果是a>b那么就两个交换值
你的算法真的有问题;用数组来实现你的目的:
#include <stdio.h>
void main()
{
int n,j,i;
long a[100],t;
printf(“enter n :”);
scanf(“%d”,&n);
printf(“enter %d number:\n”,n);
for(j=0;j<n;j++)
{
scanf(“%ld”,&a[j]);
}
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(i=0;i<n;i++)
{
printf(“%ld “,a[i]);
}
printf(“\n”);
}
呃 我也是个菜鸟 也来凑凑热闹哈
我感觉3楼说的对
假设4个数为a,b,c,d且a>b>c>d,那么你只是通过交换排了序而
已没有使用printf()输出
假设a<b<c<d,那么输出值为a,ba,b,ca,b,c,d
其他情况类似
我个人认为如果使用if的话可以使用if的嵌套,至于其他方
法,呵呵,我很菜想不出来~可以交流下
注意,那个if 控制的代码段,如果是多行的话,就必须使用
{ }括起来,否则,只执行if后的第一个;前的语句。
#include<stdio.h>
void main()
{
int a,b,c,d,t;
scanf(“%d,%d,%d,%d,%d”,&a,&b,&c,&d,&t);/*格式中带,号,输入时候
也要,号隔开哦*/
if(a>b)
{
t=a;
a=b;
b=t;
}
else
{
printf(“%d,%d”,a,b);
i}
f(b>c)/*b>c,那你考虑到了b和a的大小吗?下面情况类似*/
{
t=b;
b=c;
c=t;
}
else
{
printf(“%d,%d”,a,b,c);
}
if(c>d)
{
t=c;
c=d;
d=t;
}
else
{
printf(“%d,%d”,a,b,c,d);
}
}
我在这里指出你的T只是中间传递变量 没有必要输入数字
还有printf这个函数 输出的时候也是需要把前面的格式转换符写全的 输出四个 写四个