用冒泡法对字符排序,我哪里错了

#include
#define N 10
char str[N];
int main(void)
{ int i,flag=1;
while(i!=0 )
{printf("\n输入字符串,长度为10:\n");
scanf("%s",&str);
if (strlen(str)>N)
printf("超过长度,请重输!");
else
flag = 0;
}
sort(str[i]);
printf("\n排序结果:");
for (i=0;i printf("%c",str[i]);
}
sort(char str[N])
{int i,j;
char t;
for (j=1;j for (i=0; i if (str[i]>str[i+1])
{ t=str[i]; str[i]=str[i+1]; str[i+1]=t;
}
}
是while那里吗,如果是的话应该怎么解决...

你的while代码是接收用户输入数据的,条件是i非零,但是又没有设置i=0的地方。
应该是判断用户输入是否为某个值时,输入结束才对。

.......首先把头文件写全了,还有你的for语句,不是这么用的吧....还有写的好乱,你先看看for语句再改改

你的while语句是不是判定输入为10个字符,那应该先把i赋值,不为0即可,再在else语句下将i值改为0,退出其循环,这样子就赋值成功。

冒泡排序法:
for(int i=0,i<9,i++){
for(int j=i+1,j<10,j++){
if(str[i]>str[j]){
int num;
num=str[j];
str[j]=str[i];
str[i]=num;
}
}
}

这是基本的冒泡排序法,你自己参照下,还有你那往数组输入数据应该使用for语句来输入。

 #include<stdio.h>
#include<string.h>
#define N 10
char str[N];
void sort(char str[N]);

int main(void)
 { 
   int i,flag=1;
   while(flag)
     {
         printf("\n输入字符串,长度为10:\n");
         scanf("%s",&str);
         if (strlen(str)>N)
           printf("超过长度,请重输!");
         else
           flag = 0;
      }
 sort(str);
 printf("\n排序结果:");
 printf("%s",str);
} 

 void sort(char str[N])
 {
     int i,j;
     char t;
     for (i=0;i<N;i++) 
       for (j=i+1;j<N;j++) 
         if (str[i]>str[j]) 
         { 
             t=str[i]; 
             str[i]=str[j]; 
             str[j]=t; 
         } 
 }



我也是刚注册的,刚会粘贴代码,最后一个是正确的,你看一下