hsk123456 发表于 2020-4-11 20:47:07

新手求助!!

疑问:输出结果不对,代码哪里错了呢?
题目:写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<stdio.h>
void inverse(char str[]);
char news;
void main()
{
char str;
printf("input string:");
scanf("%s",str);
inverse(str);
printf("%s",news);

}
void inverse(char str[])
{
        int count=0,i;

   for(i=0;i<20;i++)//计算str数组的长度
   {
      count=count+1;
           if(str=='\0')
                   break;
      
   }
          count=count-1;//count比i多加了一次,所以减一才对把?
   for(i=0;i<count;i++)//把倒序后的数据存在new数组里
   {
   news=str;
       count=count-1;
       
   }
   news='\0';
}

BngThea 发表于 2020-4-11 20:58:41

把 news='\0'放到赋值前去

hsk123456 发表于 2020-4-11 21:58:59

BngThea 发表于 2020-4-11 20:58
把 news='\0'放到赋值前去

赋值前是哪里?{:5_100:}
结束符不是要放在最后的吗?

4goodworld 发表于 2020-4-11 22:32:00

#include<stdio.h>
void inverse(char str[]);
char news ;
void main()
{
        char str;
        printf("input string:");
        scanf("%s", str);
        inverse(str);
        printf("%s", news);

}
void inverse(char str[])
{
        int count = 0, i;

        for (i = 0; i < 20; i++)//计算str数组的长度
        {
                count = count + 1;
                if (str == '\0')
                        break;

        }
        count = count - 1;
        int num = count;
        for (i = 0; i < num; i++)//把倒序后的数据存在new数组里
        {
                news = str;
                count = count - 1;

        }
        news = '\0';
}
还是计数上的问题,需要梳理下

入门者 发表于 2020-4-11 22:39:17

本帖最后由 入门者 于 2020-4-11 23:04 编辑

//

hsk123456 发表于 2020-4-11 23:34:26

4goodworld 发表于 2020-4-11 22:32
还是计数上的问题,需要梳理下

明白了,谢谢你啦!!

奇宝 发表于 2020-4-11 23:41:29

本帖最后由 奇宝 于 2020-4-12 00:38 编辑

hsk123456 发表于 2020-4-11 21:58
赋值前是哪里?
结束符不是要放在最后的吗?

//疑问:输出结果不对,代码哪里错了呢?
//题目:写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<stdio.h>
#include<iostream>
void inverse(char str[]);
char news;
int main()
{
    char str;
    printf("input string:");
    scanf("%s", str);
    inverse(str);
    printf("%s", news);

}
void inverse(char str[])
{
    int count = 0, i;
    for (i = 0; i < 20; i++)//计算str数组的长度
    {
      if (str == '\0')
            break;
      count = count + 1;//count放到后面增加就不会比i多一了,为了简便,可以写成--> ++count;
    }
    /*count = count - 1;*///count比i多加了一次,所以减一才对把?(如上,即可不必减一)
    for (i = 0; i < count; i++)//把倒序后的数据存在new数组里
    {
      news[ i ] = str;//如果在这里更改count,会造成for循环的count减少
                                     //,所以应该这样,减一是为了避免引进 "\0"
    }
    news = '\0';
}

hsk123456 发表于 2020-4-12 00:06:07

奇宝 发表于 2020-4-11 23:41
//疑问:输出结果不对,代码哪里错了呢?
//题目:写一个函数,使输入的一个字符串按反序存放,在主函 ...

谢谢你让我又熟悉了一下++i和i++,哈哈哈
还有就是我认为
news = str;
也可以写成
news = str;
count = count - 1;
并不会造成count的减少。

页: [1]
查看完整版本: 新手求助!!