简单排序,可是老出问题 请大家帮忙检查一下
#include<stdio.h>
#include<stdlib.h>
char num[10];
//简单排序
main()
{
for(int i=1;i<=10;i++)
{
scanf("%d",&num[i]);
}
int i = 1;
int temp;
for(int u=1;u<=10;u++)
{
if(num[i]>=num[i+1])
{
temp=num[i];
num[i]=num[i+1];
num[i+1]=temp;
i++;
}
else
i++;
}
printf("从小到大打印顺序如下\n");
for(int i=1;i<=10;i++)
{
printf("%d\n",num[i]);
}
system("pause");
}
问题点数:10、回复次数:9Top
1 楼llf_hust()回复于 2006-03-04 17:44:29 得分 3
#include<stdio.h>
#include<stdlib.h>
void Sort(int a[], int n)
{
int i,j,temp,k;
for( i = 0; i < n - 1 ; i ++)
{
k = i;
for( j = i + 1; j < n; j ++ )
if( a[j] < a[k])
k = j;
if(k != i )
{
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}
int num[10];
//简单排序
main()
{
for(int i=0;i<3;i++)
{
scanf("%d",&num[i]);
}
/*
int j = 1;
int temp;
for(int u=1;u<=3;u++)
{
if(num[j]>=num[j+1])
{
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
j++;
}
else
j++;
}
printf("从小到大打印顺序如下\n");*/
Sort(num,3);
for(int i1=0;i1<3;i1++)
{
printf("%d\n",num[i1]);
}
// system("pause");
return 0;
}
Top
2 楼duduhaha(三人行必有我师)回复于 2006-03-04 18:01:24 得分 1
楼主是想用冒泡排序吧?
其实你只是完成了一趟,将数组中最大的数放到了最后.
试想2,3,1三个数.
用你的方法为2,1,3而不是应该的1,2,3.
另外,
for(int u=1;u<=10;u++)
这样不对.
应该for(int u = 0; u < 10; u++)
Top
3 楼ckp(surge)回复于 2006-03-04 18:19:24 得分 1
char num[10];
//简单排序
main()
{
for(int i=1;i<=10;i++)//另外,这里有错,前面定义的char num[10],说明有效下标为0-9
Top
4 楼iambic()回复于 2006-03-04 18:19:52 得分 1
我觉得你排得完全不对,至少要两个嵌套着的循环吧。Top
5 楼wucunfu(因为楼主你吝啬,所以我还是一个三角裤衩!)回复于 2006-03-04 18:45:48 得分 2
变量要先定义再使用!!!!!!!! 你怎么出来了一个u呢?
楼主想做冒泡,你还少了一重循环
看下面这个冒泡
#include "stdio.h"
main()
{ int i,j,t,a[11];
printf("\nPlease input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{for(j=10;j>i;j--)
if(a[j]<a[j-1])
{ t=a[j];a[j]=a[j-1];a[j-1]=t;}
}
for(i=0;i<10;i++)
printf("%d,", a[i]);}
另外:
to: duduhaha(三人行必有我师)
for(int u=1;u<=10;u++)
这样不对.
应该for(int u = 0; u < 10; u++)
这个没必要改,因为他定义的时候就是从1开始的。Top
6 楼cody416(學.net)回复于 2006-03-04 21:05:33 得分 2
编译过了,好像可以,你试试。
#include "stdio.h"
main()
{
int i,j,tmp,num[10];
printf("please input 10 number:\n");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(num[i]>num[j])
{
tmp=num[i];
num[i]=num[j];
num[j]=tmp;
}
}
}
printf("The sorted number is:\n");
for(i=0;i<10;i++)
printf(" %d",num[i]);
}Top
7 楼Tangxiang(来,让我们一起跳舞吧。)回复于 2006-03-04 22:29:26 得分 0
呵呵 谢谢大家
知道自己错在哪里了
真的感谢大家Top
8 楼Tangxiang(来,让我们一起跳舞吧。)回复于 2006-03-04 22:33:54 得分 0
还有 我想问一下 怎样给你们分啊
Top
9 楼iambic()回复于 2006-03-05 12:38:23 得分 0
呵呵,每个人分点就行了。给我一分够了。Top




