问题描述
- 用冒泡法对字符排序,我哪里错了
-
#include
#define N 10
char str[N];
int main(void)
{ int i,flag=1;
while(i!=0 )
{printf("
输入字符串,长度为10:
");
scanf("%s",&str);
if (strlen(str)>N)
printf("超过长度,请重输!");
else
flag = 0;
}
sort(str[i]);
printf("
排序结果:");
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语句来输入。
解决方案五:
sorry,昨天回复完有事就走了,刚才看了一下,你应该是想这样写吧
#include
#include
#define N 10
char str[N];
void sort(char str[N]);
int main(void)
{
int i,flag=1;
while(flag)
{
printf("
输入字符串,长度为10:
");
scanf("%s",&str);
if (strlen(str)>N)
printf("超过长度,请重输!");
else
flag = 0;
}
sort(str);
printf("
排序结果:");
printf("%s",str);
}
void sort(char str[N])
{
int i,j;
char t;
for (i=0;i
for (j=i+1;j
if (str[i]>str[j])
{
t=str[i];
str[i]=str[j];
str[j]=t;
}
}
你对应一下
解决方案六:
#include
#include
#define N 10
char str[N];
void sort(char str[N]);
int main(void)
{
int i,flag=1;
while(flag)
{
printf("
输入字符串,长度为10:
");
scanf("%s",&str);
if (strlen(str)>N)
printf("超过长度,请重输!");
else
flag = 0;
}
sort(str);
printf("
排序结果:");
printf("%s",str);
}
void sort(char str[N])
{
int i,j;
char t;
for (i=0;i
for (j=i+1;j
if (str[i]>str[j])
{
t=str[i];
str[i]=str[j];
str[j]=t;
}
}
解决方案七:
#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("
输入字符串,长度为10:
");
scanf("%s",&str);
if (strlen(str)>N)
printf("超过长度,请重输!");
else
flag = 0;
}
sort(str);
printf("
排序结果:");
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;
}
}
解决方案八:
我也是刚注册的,刚会粘贴代码,最后一个是正确的,你看一下
解决方案九:
Java冒泡法排序实例