输入4个整数,要求从小到大的顺序输出。

#include <stdio.h>
int main()
{
int a,b,c,d,t;
printf("请输入四个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a>b)
{
a=t;
a=b;
b=t;
}
if(b>c)
{
b=t;
b=c;
c=t;
}
if(c>d)
{
c=t;
c=d;
d=t;
}
if(a>b)
{
a=t;
a=b;
b=t;
}
if(b>c)
{
b=t;
b=c;
c=t;
}
if(a>b)
{
a=t;
a=b;
b=t;
}
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}
大家看看我这个代码哪里错了?为什么输入4个数字之后,输出的不是我输入的数字?

你这个中间的if选择语句有问题,是把a的值赋给t,即t=a;

其实你这样太麻烦了,给你一个简单的思路。这四个数可以看做是四个个头不同的人,你只要从左到右两两比较,个头小的人左移,个头高的人右移,最后从左到右输出就好。

四个整数在a[0]到a[3]中:

for(i=0;i<3;i++)

{

k=i;

for(j=i+1;j<4;j++)

if(a[j]>a[k])

k=j;

t=a[k];

a[k]=a[i];

a[i]=t;

}
如此,a[0]到a[3]中就是从小到大排好序的了。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-26
每次比较完是先把值赋给t而不是把t赋给大的数字
请看下边
#include <stdio.h>
int main()
{
int a,b,c,d,t;
printf("请输入四个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(c>d)
{
t=c;
c=d;
d=t;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}本回答被提问者采纳
第2个回答  2021-05-11
你这个方法是对的,但是乍一看不容易理解,再一看是照编的冒泡排序法,就那个a(j)>a(j+1),然后翻译成if语句。只是一定是t=a,不是a=t。这样最后是ab换位。
解释一下:这么多if都是嵌套的,最好用几个空格好看一点,ab换位之后,后面又出现的ab比较,可能是也可能不是原来的ab了,

输入4个整数,要求按由小到大顺序输出.
printf("输入4个整数,要求按由小到大的书序输出。请输入4个整数,中间用空格隔开\\n");scanf("%d%d%d",&a,&b,&c,&d);\/*从键盘获取4个整数,复制给a,b,c,d*\/ if(a>b){ t=a;a=b;b=t;}\/*例如输入4321这个4个整数,这句处理完输出abcd的结果是:3421。以后依次类推*\/ if(a>c)...

输入四个整数,要求按从小到的顺序输出。(用for语句)麻烦了
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Test { public static void main(String args[]) { System.out.println("请输入三个数,使用','分隔:");BufferedReader br = new BufferedReader(new InputStreamReader(System.in));try { ...

编程,任意输入4个整数,要求按从小到大的次序输出。
就是排序这是用C语言写的 #include "stdio.h"main(){ int i=0; int j=0;int size; int num[size];printf("请输入你要排序的个数:\\n",size);scanf("%d",&size);printf("请输入你要排序的%d个数:\\n",size);for(i=0;i<size;i++){ scanf("%d",&num[i]);} for(i...

输入4个整数,要求从小到大的顺序输出。
其实你这样太麻烦了,给你一个简单的思路。这四个数可以看做是四个个头不同的人,你只要从左到右两两比较,个头小的人左移,个头高的人右移,最后从左到右输出就好。四个整数在a[0]到a[3]中:for(i=0;i<3;i++){ k=i;for(j=i+1;j<4;j++)if(a[j]>a[k])k=j;t=a[k];a...

输入4个整数,要求按从小到大顺序输出
我给你详细解释一下你这个程序里每一步,我用一种最坏的假设来给你说明,比如a =4 b=3 c=2 d =1 在第一次判断中a>b成立,则a b 互换之后这四个数变为 3 4 2 1 在第二次判断中a>c立,则a c互换之后这四个数变为 2 4 3 1 在第三次判断中a>d立,则a d互换之后这...

输入4个整数,要求按从小到大的顺序输出流程图
任一客户端可以方便地得到服务器上的文件的任意版本(如果有权限的话)。一般还实现了一个重要的功能是版本比较,任一客户端可以利用版本控制工具对某文件的不同版本进行版本比较,它会标记出不同版本的同名文件的不同点,可以轻易地看出版本内容的演化,这一招很常用。作用:生成目标代码,即计算机可以...

一个c语言题; 输入4个整数,按从小到大的顺序输出.
我认为这个程序可以用函数来实现,如过用函数的话,程序会变得更加的简单。函数部分为:int p(int n,int m){ if(n>m)return(n);else return(m);} 就这样再在主函数中调用就行了!

C语言编程题:输入4个整数,要求按由小到大顺序输出怎么编啊?_百度知 ...
利用函数的模块化设计。1、完成整体函数格局,输入、排序、输出。2、输入函数代码如下:3、排序函数代码如下:4、输出函数代码如下:5、执行结果:

C语言编程,输入4个整数,按从小到大顺序输出
include<stdio.h>int main( ){ int num[4]; for(int i = 0 ; i < 4 ; i++){ scanf("%d", num+i); } for(int i = 0 ; i < 4 ; i++){ int k = i; for(int j = i+1 ; j < 4 ; j++){ if(num[k] > num[j]){ k = j; ...

Java从键盘上输入4个整数将这4个数按从小到大输出。
public static void main(String[] args) {int wait_inputs[] = new int[4];for (int i = 0; i < wait_inputs.length; i++) {System.out.println("输入第" + (i + 1) + "个数,并回车:")wait_inputs[i] = new Scanner(System.in).nextInt();}Arrays.sort(wait_inputs);...

相似回答