| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1860 人关注过本帖
标题:The C programe language 练习1-19不用指针能解吗?
只看楼主 加入收藏
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
The C programe language 练习1-19不用指针能解吗?
       看了这本书的习题答案,是用指针解答的。我是初学者,能不能用例子1.19的思路解决。我自己试着写了一段程序,最后输出为乱码。估计倒序输出函数编写不正确。如何实现把输入的字符串倒序输出的算法不不懂。请大家帮忙解答,先谢过了!
/*编写函数reverse,倒序输出其输入。并用其编写程序,以行为单位,输出倒序*/
#include<stdio.h>
#define MAXLINE 1000 /*设定最大行数*/

int reverse(char s[], char t[]); //倒序函数

int main(void)
{
    int i, n, c;
    char s[MAXLINE]; /*储存正序输入*/
    char t[MAXLINE]; /*储存倒序输出*/
   
    i = 0;
   
    while ((c = getchar()) != EOF)
    {
        s[MAXLINE] = c;
        ++i;
        if (c == '\n')
        {
            n = reverse(s, t);
            printf("%s\n", n);
        }
    }
    return 0;
}
int reverse(char s[], char t[])
{
    int i, n, c;
    char s[MAXLINE]; /*储存输入*/
    char t[MAXLINE]; /*储存输出*/
   
    i = 0;
   
    while ((c = getchar()) != EOF)
    {
       s[MAXLINE] = c;
       ++i;
    }
    if (c == EOF)
    {
        t[MAXLINE] = s[MAXLINE] = n;
        --i;
    }
    return n;
}   
2016-05-05 09:47
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
收藏
得分:5 
函数完全不对,参考一下:

程序代码:
#include<stdio.h>
#define MAXLINE 1000 /*设定最大行数*/

int reverse(char s[], char t[]); //倒序函数

int main(void)
{
    int i, n, c;
    char s[MAXLINE] = {0}; /*储存正序输入*/
    char t[MAXLINE] = { 0 }; /*储存倒序输出*/

    i = 0;

    while ((c = getchar()) != EOF)
    {        
        if (c == '\n')
        {
            n = reverse(s, t);
            printf("%s\n", t);
            return 0;
        }
        s[i] = c;
        ++i;
    }
    return 0;
}
int reverse(char s[], char t[])
{
    int i;
    //char s[MAXLINE]; /*储存输入*/
    //char t[MAXLINE]; /*储存输出*/

    for (i = 0; i < strlen(s); i++)
    {
        t[i] = s[strlen(s) - i - 1];
    }

    return 0;
}
2016-05-05 10:05
mege
Rank: 2
来 自:湖南株洲
等 级:论坛游民
帖 子:9
专家分:37
注 册:2016-5-4
收藏
得分:10 
在原有的基础上改的

/*编写函数reverse,倒序输出其输入。并用其编写程序,以行为单位,输出倒序*/
#include<stdio.h>
//#include<string.h>
#define MAXLINE 1000 /*设定最大行数*/
int reverse(char *s, char *t); //倒序函数
int main(void)
{
    char s[MAXLINE]; /*储存正序输入*/
    char t[MAXLINE]; /*储存倒序输出*/
     gets(s);
    reverse(s, t);
    printf("%s\n",t);      
    return 0;
}
int reverse(char *s, char *t)
{
    int i=0, n=0;
    for(i=0;s[i]!='\0';i++);//得到字符串的长度   
    //i=strlen(s);也可以用strlen(s),但必须加头文件string.h
    for(n=0;n<i;n++)
        t[n]=s[i-n-1];
    return n;
}  
2016-05-05 10:37
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:5 
倒序函数?是说要把一个字符串倒序输出吗?比如原来abc输出就cba? 你可以另外定义一个数组,把原来的数组从最后一个元素开始赋值给第二个新数组的第一个元素,用循环来做。主要数组下标不要越界就好了。
2016-05-05 10:39
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 2楼 grmmylbs
在手机上用C4droid运行无输出,revers函数不用返回值吗?


C语言自学者(初登殿堂)
2016-05-05 11:45
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
收藏
得分:0 
回复 3楼 mege
先表示感谢,能只用<stdio.h>头文件吗?别的还没学。


C语言自学者(初登殿堂)
2016-05-05 11:46
RNLSoul
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-4
收藏
得分:0 
3楼的运行结果正确,只是注释符号“//”位置错误,我就不把改正的结果贴出来了。相信这样的错误,大家很容易发现。感谢4楼的解题思路,我试着做一下。
说句题外话,《The C programming language》确实不适合初学者阅读。现在转战谭浩强的《C程序设计》。
再次感谢所有回复我帖子的朋友。


C语言自学者(初登殿堂)
2016-05-05 17:41
快速回复:The C programe language 练习1-19不用指针能解吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042726 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved