weixin_56542819 2021-06-17 18:44 采纳率: 33.3%
浏览 31
已结题

大神们帮个忙,用C语言解决

从键盘输入十个正整数,并且在屏幕显示该十个数。要求:当键盘输入A的时候,该十个数从大到小排列,当键盘输入B的时候,该十个数从小到大排列

自己编的,不知道哪里错了。总是有一个数字被0给替了

#include<stdio.h>
int main()
{ void sortA(int array[],int n);
  void sortB(int array[],int n);
  int a[10],i;
  char letter;
  printf("请输入10个正整数 :\n");
  for(i=0;i<10;i++)
   scanf("%d,",&a[i]);
   printf("\n");
   printf("请输入字母A或者B :\n");
   scanf("%s",&letter);
   switch(letter)
   { case 'A':sortA(a,10);break;
     case 'B':sortB(a,10);break;
   }
   for(i=0;i<10;i++)
     printf("%d,",a[i]);
     printf("\n");
     return 0;
}
void sortA(int array[],int n)
{ int i,j,k,t;
  for(i=0;i<n-1;i++)
  { k=i;
    for(j=i+1;j<n;j++)
     if(array[j]>array[k])
      k=j;
    t=array[k];array[k]=array[i];array[i]=t; 
  } 
  printf("10个数从大到小的顺序 :\n");
}  
void sortB(int array[],int n)
{ int i,j,k,t;
  for(i=0;i<n-1;i++)
  { k=i;
    for(j=i+1;j<n;j++)
     if(array[j]<array[k])
      k=j;
    t=array[k];array[k]=array[i];array[i]=t; 
  }
  printf("10个数从小到大的顺序 :\n");
}

  • 写回答

4条回答 默认 最新

  • CSDN专家-link 2021-06-17 19:02
    关注

    scanf("%s",&letter);应该用%c

     t=array[k];array[k]=array[i];array[i]=t; 这一堆要放在 if(array[j]>array[k])内部,只有满足这个条件才需要交换

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月18日

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波