读书人

字符串倒序输出有关问题

发布时间: 2013-06-26 14:29:32 作者: rapoo

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

#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--位置调整即可.

读书人网 >C语言

热点推荐