注册 登录
编程论坛 C++教室

不知为什么程序总是无法执行

haosiyuan 发布于 2010-04-25 19:12, 445 次点击
我是新手正在学C++,今天我们老师给我们留了道题是这样的:“编写程序,从键盘输入一个字符串放在字符数组a中,用选择法将a中的有效字符按降序排列。”
#include <stdio.h>
main()
{    int i,k,j,temp;
    char a[100]="";
    gets(a);
    for(i=0;i<99;i++);
        for(j=i+1;j<100;j++)
            if(a[j]>a[i])
            {    temp=a[j];a[j]=a[i];a[i]=temp;
            }
    puts(a);
}
不是我懒让各位高手帮我做作业,而是我便出来后实在搞不懂哪里错了,有会的请帮我一下,谢谢
9 回复
#2
hahayezhe2010-04-25 19:22
循环退出条件为 '\0' 而不是<100
#3
haosiyuan2010-04-25 19:23
回复 2楼 hahayezhe
那该怎么改?
#4
hahayezhe2010-04-25 19:27
int m=stelen(a);
然后将m作为最大上线
或者for(i=0;a[i]!='\0';i++)方法很多了

动态实现也可以

#5
haosiyuan2010-04-25 19:32
这是我改后的#include <stdio.h>
main()
{    int i,k,j,temp;
    char a[100]="";
    gets(a);
    for(i=0;a[i]='\0';i++);
        for(j=i+1;j<100;j++)
            if(a[j]>a[i])
            {    temp=a[j];a[j]=a[i];a[i]=temp;
            }
    puts(a);
}
可是改完了还是不能实现
#6
haosiyuan2010-04-25 19:41
#include <stdio.h>
#include <string.h>
main()
{    int i,k,j,temp;
    char a[100]="";
    gets(a);k=strlen(a);
    for(i=0;i<k;i++);
        for(j=i+1;j<k;j++)
            if(a[j]>a[i])
            {    temp=a[j];a[j]=a[i];a[i]=temp;
            }
    puts(a);
}
我用strlen改了也没用
#7
hahayezhe2010-04-25 19:47

gets(a);
int m=strlen(a);
for(i=0;i<m;i++)
for(j=i+1;j<m;j++)
if(a[j]>a[i])
{    temp=a[j];a[j]=a[i];a[i]=temp;
}
#8
hahayezhe2010-04-25 19:48
   for(i=0;i<k;i++);
多了个分号...............
#9
haosiyuan2010-04-25 19:51
谢谢大大,我终于知道问题出在哪了
我在第一个for语句后加了个“;”这使得后边的循环都不能用了
你的for后边没有,看了你的我才明白
#10
haosiyuan2010-04-25 19:52
额,我发慢了
1