鱼C论坛

 找回密码
 立即注册
查看: 606|回复: 7

[已解决]新手求助!!

[复制链接]
发表于 2020-4-11 20:47:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
疑问:输出结果不对,代码哪里错了呢?
题目:写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
#include<stdio.h>
void inverse(char str[]);
char news[20];
void main()
{
char str[20];
  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[i]=='\0')
                   break;
      
   }
            count=count-1;//count比i多加了一次,所以减一才对把?
   for(i=0;i<count;i++)//把倒序后的数据存在new数组里
   {
     news[i]=str[count];
         count=count-1;
         
   }
   news[count]='\0';
}
最佳答案
2020-4-11 22:32:00
#include<stdio.h>
void inverse(char str[]);
char news[20] ;
void main()
{
        char str[20];
        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[i] == '\0')
                        break;

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

        }
        news[num] = '\0';
}
还是计数上的问题,需要梳理下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-11 20:58:41 | 显示全部楼层
把 news[count]='\0'放到赋值前去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-11 21:58:59 | 显示全部楼层
BngThea 发表于 2020-4-11 20:58
把 news[count]='\0'放到赋值前去

赋值前是哪里?
结束符不是要放在最后的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 22:32:00 | 显示全部楼层    本楼为最佳答案   
#include<stdio.h>
void inverse(char str[]);
char news[20] ;
void main()
{
        char str[20];
        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[i] == '\0')
                        break;

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

        }
        news[num] = '\0';
}
还是计数上的问题,需要梳理下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 22:39:17 | 显示全部楼层
本帖最后由 入门者 于 2020-4-11 23:04 编辑

//
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-11 23:34:26 | 显示全部楼层
4goodworld 发表于 2020-4-11 22:32
还是计数上的问题,需要梳理下

明白了,谢谢你啦!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[20];
int main()
{
    char str[20];
    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[i] == '\0')
            break;
        count = count + 1;//count放到后面增加就不会比i多一了,为了简便,可以写成--> ++count;
    }
    /*count = count - 1;*///count比i多加了一次,所以减一才对把?(如上,即可不必减一)
    for (i = 0; i < count; i++)//把倒序后的数据存在new数组里
    {
        news[ i ] = str[count - 1 - i];//如果在这里更改count,会造成for循环的count减少
                                     //,所以应该这样,减一是为了避免引进 "\0"
    }
    news[count] = '\0';
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 06:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表