int i,j,k,t,n;
char sak[N];
printf(" ");
for(i=0;i<N;i++)
scanf("%d",&sak[N]);
for(i=0;i<N-1;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(sak[j]<sak[k]) k=j;
if(k!=i)
{
t=sak[i];
sak[i]=sak[k];
sak[k]=t;
}
}
printf("排序结果为: ");
for(i=0;i<N;i++)
printf("%4d",sak[N]);
#define N 5
int main()
{
int i,j,k,n;
char sak[N],t;
for(i=0;i<N;i++)
scanf("%c",&sak[i]);
for(i=0;i<N-1;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(sak[j]<sak[k]) k=j;
if(k!=i)
{
t=sak[i];
sak[i]=sak[k];
sak[k]=t;
}
}
printf("排序结果为: ");
for(i=0;i<N;i++)
printf("%4c",sak[i]);
}
scanf("%d",&sak[N]);
改为
scanf("%d",&sak[i]);
话说,排不出个结果来,你不最先打印看看数组里是什么吗
你的问题挺多的,我给你修改了并打上了注释
望采纳
#include<stdio.h>
#include<string.h>
int main() {
int i, j, k, t, n;
char sak[10];
printf(" ");
scanf("%s", sak);
n = strlen(sak);
for (i = 0; i < n - 1; i++) {
// 保存现在的位置
k = i;
// 循环读取后面的
for (j = i + 1; j < n; j++)
// 如果现在的位置 大于 后面某个地方就记录进 k
if (sak[j] < sak[k]) k = j;
// 现在 k 是 后面的最小值
// 如果最小值不是现在的位置的话
if (k != i) {
// 现在的位置和最小值换位置
t = sak[i];
sak[i] = sak[k];
sak[k] = t;
}
}
printf("排序结果为: ");
for (i = 0; i < n; i++)
printf("%4c", sak[i]);
}