首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

字符串倒序输出有关问题

2013-06-26 
字符串倒序输出问题要求:输入一个字符串,然后倒序输出。#include stdio.hint main(){char s[5]char *pp

字符串倒序输出问题
要求:输入一个字符串,然后倒序输出。

#include <stdio.h>

int main(){
char s[5];
char *p;
p=s;

printf("Please input the string:\n");
/*
while(p!='\0')
{
p=getchar();
p++;
}
*/

gets(p);

while(*p!='\0')
p++;

while(p!=s)
{
putchar(*p);
p--;
}

printf("\n");

return 0;

}

      问题1:编译运行之后,输入hello,结果输出olle,少了一个h,不知道怎么修改程序。
      问题2:在gets(s)这个地方,如果用get char()实现,该如何修改?

[解决办法]
 问题1:编译运行之后,输入hello,结果输出olle,少了一个h,不知道怎么修改程序。

#include<stdio.h>
int main()
{
char s[5];
char *p;
p = s;
printf("please input the string:\n");
gets(p);
while(*p != '\0' )
p++;
while(p != s)
{
putchar(*(p-1));
p--;
}
printf("\n");
return 0;
}

[解决办法]
#include<stdio.h>
int main()
{
        char s[64] = {0};
        char *p;
        p = s;
        printf("please input the string:\n");

        *p=getchar();
        while( *p != ' ' && *p != '\n')
        {
                p++;
                *p=getchar();
        }
        *p = '\0';
//      gets(p);
        while(*p != '\0' )
                p++;
        while(p != s)
        {
                putchar(*(p-1));
                p--;
        }
        printf("\n");
        return 0;
}

[解决办法]
对直接对指针值操作感觉很别扭,就按自己意愿改了下使用getchar()输入的

#include <stdio.h>
void Reverse(char s[]);
int main()
{
char s1[1000];
int i(0);
char c;
while ((c=getchar())!='\n')
s1[i++]=c;


s1[i]='\0';
Reverse(s1);
printf("%s\n",s1);

return 0;
}

void Reverse(char s[])
{
int i,n;
n=i=0;
while (s[i]!='\0') ++i;
n = i;
for (i=0;i<n/2;i++)
{
char temp=s[i];
s[i]=s[n-1-i];
s[n-1-i]=temp;
}
}


[解决办法]

#include <stdio.h>

int main(){
char s[5];
char *p;
p=s;

printf("Please input the string:\n");
/*
while(p!='\0')
{
p=getchar();
p++;
}
*/

gets(p);

while(*p!='\0')
p++;
//此时p已经指向了结束字符'\0',所以倒序输出前要首先前移一位。。
--p;
//你之前那样会导致p==s的时候不输出。。所以会少了第一个字符。。改成下边这样就可以了。。
while(1)
{
putchar(*p);
if(p == s) break;
p--;
}

printf("\n");

return 0;
}

[解决办法]
关于你的问题1
这里
while(p指针!=s)
{
putchar(*p指针);
p指针--;
}

要使用 do while 更好控制
do
{
p指针--;
putchar(*p指针);

}while(p指针!=s);

这样就能输出 
olleh





[解决办法]
先根据你写的代码把正确的贴出来,再说原因吧.
void _tmain(int argc, _TCHAR* argv[])
{
char s[10];
char *p;
p=s;

printf("Please input the string:\n");
gets(p);
while(*p!='\0')
{
p++;
}
while(p!=s)
{
p--;
putchar(*p);

}

printf("\n");

首先你存的时候没有什么问题,只不过存了之后没有注意P指针的指向,他p实际指向你输入字符串下一个字符的位置,将你输出的时候P--位置调整即可.

热点排行