从键盘输入十个正整数,并且在屏幕显示该十个数。要求:当键盘输入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");
}
scanf("%s",&letter);应该用%c
t=array[k];array[k]=array[i];array[i]=t; 这一堆要放在 if(array[j]>array[k])内部,只有满足这个条件才需要交换
#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]);
getchar();
printf("\n");
printf("请输入字母A或者B :\n");
scanf("%c",&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++)
{
for(j=0;j<n-i-1;j++)
if(array[j]<array[j+1])
{
t=array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
printf("10个数从大到小的顺序 :\n");
}
void sortB(int array[],int n)
{ int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
if(array[j]>array[j+1])
{
t=array[j];
array[j]=array[j+1];
array[j+1]=t;
}
}
printf("10个数从小到大的顺序 :\n");
}
我测试了没什么问题,题主遇到什么问题,欢迎交流
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m