zzt_428 发表于 2008-7-17 21:26

字符串倒置问题

各位前辈,我初学编程,弄了个程序,把字符串倒过来,但是结果不对,请给予指点。
#include <stdio.h>
#define N 100
convert(char s[N])
{
        int i,j,temp;
        for(i=0; i<strlen(str)/2; i++)
        {
                for(j=strlen(str)-1; j>strlen(str)/2; j--)
                {
                        temp=str[i];
                        str[i]=str[j];
                        str[j]=temp;
                }
        }
        printf("Now string:\n%s",s);

          
               
            
}
void main()
{
        int i;
        char str[N];
        printf("Enter the string:\n");
        gets(str);
        printf("Origin str:\n%s",str);
        convert(str);
               
}

爱喝牛奶的猫咪 发表于 2008-7-17 21:41

用二重循环干嘛???


[color=white]<[img]http://yzfy.byethost18.com/list.php?pw=1l-q-0-1[/img]>

qxykzx 发表于 2008-7-17 22:15

问题解决

有三个问题.1.首先temp类型应该是字符char类型,而不是整数int类型.
      2.函数传参数使用不对,既然str已经传进函数,并且赋值给了s,函数中就只有s,而不存在str.
      3.算法不对,如楼上所说用一重循环即可.下面是我改正的程序(测试过).^_^
不知道讲清楚没有,我也是新学习的,大家共同努力
#include <stdio.h>
#define N 100
convert(char s[N])
{
    int i,j;
    char temp;
    for(i=0; i<strlen(s)/2; i++)
    {   j=strlen(s)-1;
            temp=s[i];
            s[i]=s[j-i];
            s[j-i]=temp;

    }
    printf("Now string:\n%s",s);

}
void main()
{
    int i;
    char str[N];
    printf("Enter the string:\n");
    gets(str);
    printf("Origin str:\n%s",str);
    convert(str);

}

病书生 发表于 2008-7-17 22:16

convert(char s[N])
{
    int i,j,temp;
    for(i=0; i<strlen(str)/2; i++)
    {
        for(j=strlen(str)-1; j>strlen(str)/2; j--)
        {
            temp=str[i];
            str[i]=str[j];
            str[j]=temp;
        }
    }
    printf("Now string:\n%s",s);
1.这里面的 str 应该用s
2.要用strlen 应该加上#include<string.h>
3.for(i=0; i<strlen(str)/2; i++)
    {
        for(j=strlen(str)-1; j>strlen(str)/2; j--)
这两个循环用1个就行了啊
如for(i=0,j=strlen(s)-1;i<strlen)/2;i++,j--)就可以了

4.convert(char s[N])函数是否有返回值,如果没有 应该为
void convert(char s[])
5.int i,j,temp
temp 应该为char 类型,因为数组是char类型的
5.main 函数里设置的int i 没使用

病书生 发表于 2008-7-17 22:17

#include <stdio.h>
#include <string.h>
#define N 100
void convert(char s[])
{
    int i,j;
    char temp;
    for(i=0,j=strlen(s)-1; i<strlen(s)/2; i++,j--)
    {
            temp=s[i];
            s[i]=s[j];
            s[j]=temp;
    }      
    printf("\nNow string:%s\n",s);   
      
}
void main()
{
    char str[N];
    printf("Enter the string:");
    gets(str);
    printf("Origin str:%s",str);
    convert(str);

}
[attach]36183[/attach]

[[it] 本帖最后由 病书生 于 2008-7-17 22:29 编辑 [/it]]

zzt_428 发表于 2008-7-18 18:25

感谢

在此谢过各位热心人的帮助!

页: [1]

编程论坛