C++代码的问题
我想输入10个数字然后 按照从大到小排列 可是输出的结果却是按照我输入的循序输出了
#include "stdio.h"
void main()
{
int a[10],c;
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(int p=0;p<9;p++)
for(int r=0;r<9;r++)
if(a[i]<a[i+1])
{
c=a[i];
a[i]=a[i+1];
a[i+1]=c;
}
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
}
追问:我不要整理好的代码 我只要您帮我指出哪里错了
答案:#include "stdio.h"
void main()
{
int a[10],c;
for(int i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(int p=0;p<9;p++)
for(int r=p;r<9;r++)
if(a[p]<a[r])
{
c=a[p];
a[p]=a[r];
a[r]=c;
}
for(i=0;i<10;i++)
printf("%4d",a[i]);
printf("\n");
}
#include <stdio.h>
void main() {
int a[10],c;
for(int i = 0;i < 10;i++) scanf("%d",&a[i]);
printf("\n");
for(int p = 0;p < 9;p++)
for(int r = p + 1;r < 10;r++)
if(a[p] < a[r]) {
c = a[p];
a[p] = a[r];
a[r] = c;
}
for(i = 0;i < 10;i++) printf("%4d",a[i]);
printf("\n\n");
}
for(int r=0;r<9;r++) ,这句错了,应该是for(int r=p;r<9;r++)
即是:每个数都要与其后面的数比较,如果写成 r=0,那么这个数还要与其前面的数比较,这样的话前面排好顺序的数又要打乱了!
上一个:KMP算法的C++代码
下一个:如下 C++代码为何没用?