当前位置:编程学习 > C/C++ >>

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++代码为何没用?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,