微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请问一个c语言相关的问题,望高手指导下, 谢谢

请问一个c语言相关的问题,望高手指导下, 谢谢

时间:10-02 整理:3721RD 点击:
题目:完成五个整数的排序(由大到小)
#include<stdio.h>
void main()
{
int a[5];
int i,j,temp;
printf("input 5 numbers:\n");
for(i=0;i<5;i++)
   scanf("%d",&a[i]);
printf("\n");
for(j=0;j<4;j++)           
  for(i=0;i<5-i;i++)     
   if(a[i]<a[i+1])      
   {
     temp=a[i];   
     a[i]=a[i+1];   
     a[i+1]=temp;
   }
    for(i=0;i<5;i++)
printf("%d,",a[i] );
printf("\n");
}
为什么输入的最后一位不能参与到前面的排序

  1. #include<stdio.h>

  2. void main()
  3. {
  4.         int a[5];
  5.         int i,j,temp;

  6.         printf("input 5 numbers:\n");
  7.         for(i=0;i<5;i++)
  8.            scanf("%d",&a[i]);
  9.         printf("\n");

  10.         for(j=0;j<4;j++)           
  11.           for(i=0;i<5-1;i++)  // update....   
  12.            if(a[i]<a[i+1])      
  13.            {
  14.                  temp=a[i];   
  15.                  a[i]=a[i+1];   
  16.                  a[i+1]=temp;
  17.            }

  18.         for(i=0;i<5;i++)
  19.                 printf("%d,",a[i] );
  20.         printf("\n");
  21. }

复制代码

这里是不是这样 for(j=0;j<4;j++)           
              for(i=0;i<5-j;i++)  // update..

再试试 for(i=0;i<5;i++)
scanf("%d",&a);
printf("\n");
for(j=1;j<5;j++)           
  for(i=0;i<5-j;i++)   
   if(a<a[i+1])      
   {
     temp=a;   
    a=a[i+1];   
     a[i+1]=temp;
   }
    for(i=0;i<5;i++)
printf("%d,",a );
printf("\n");

for(i=0;i<5-i;i++)
你i<5-i,才能比到i[2]和i[3],根本就没比到i[4],最后一个能参与比较吗?直接改成
for(i=0;i<4;i++) 试试

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top