这个c语言的排序错在哪里
来源:百度知道 编辑:UC知道 时间:2024/05/21 08:44:14
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#define N 20
main(){
int i = 0, temp, n, j, k;
int num[N];
//get 20 rand num between 0 and 100
srand((int)time(0));
for( ; ; ){
n = rand();
if( n >= 0 && n <=100 ){
num[i] = n;
i++;
}
if( i > 19 ) break;
}
//sort the 20 num
for( j = 0; j <= 19; j++ ){
for( k = 0; k < 19 - j; k++ ){
if( num[k] > num[k+1] ){
temp = num[k+1];
num[k] = num[k+1];
num[k+1] = temp;
}
}
}
//output the 20 num
for( i = 0; i <= 19; i++ ){
printf("%d\t",num[i] );
}
getch();
}
如果把排序这部分去掉的话,可以得到我想要的随机数,但是加上排序的话就得不到我想要的了随机数排序了
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#define N 20
main(){
int i = 0, temp, n, j, k;
int num[N];
//get 20 rand num between 0 and 100
srand((int)time(0));
for( ; ; ){
n = rand();
if( n >= 0 && n <=100 ){
num[i] = n;
i++;
}
if( i > 19 ) break;
}
//sort the 20 num
for( j = 0; j <= 19; j++ ){
for( k = 0; k < 19 - j; k++ ){
if( num[k] > num[k+1] ){
temp = num[k+1];
num[k] = num[k+1];
num[k+1] = temp;
}
}
}
//output the 20 num
for( i = 0; i <= 19; i++ ){
printf("%d\t",num[i] );
}
getch();
}
如果把排序这部分去掉的话,可以得到我想要的随机数,但是加上排序的话就得不到我想要的了随机数排序了
temp = num[k+1];
num[k] = num[k+1];
num[k+1] = temp;
改成
temp = num[k];
num[k] = num[k+1];
num[k+1] = temp;
循环的地方写的有点乱,修改了运行正确
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#define N 20
void main(){
int i = 0, temp, n, j, k;
int num[N];
//get 20 rand num between 0 and 100
srand((int)time(0));
for( ; ; ){
n = rand();
if( n >= 0 && n <=100 ){
num[i] = n;
i++;
}
if( i > 19 ) break;
}
//sort the 20 num
for( j = 0; j < 19; j++ ){
for( k = j+1; k <= 19 ; k++ ){
if( num[k] > num[j] ){
temp = num[j];
num[k] = num[j];
num[j] = temp;
}
}
}
//output the 20 num
for( i = 0; i <= 19; i++ ){
printf("%d\t",num[i] );
}
getch();
return ;
}