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

要求输入的字符串反向输出解决办法

2012-09-22 
要求输入的字符串反向输出如:abc123输出321cba123输出321abc输出cba回答的都会有分.......才学别笑呵![解

要求输入的字符串反向输出
如:abc123输出321cba
123输出321
abc输出cba


回答的都会有分.......

才学别笑 呵!

[解决办法]
string a[]="abc";
int n=strlen(a);

for(int i=0;i<n;i++)
{
 cout<<a[n-i-1];
}

我很久没写c++了。试试行不行。
[解决办法]
楼上的确实写的有问题,C可没有string这个简单类型给你用。应该是

C/C++ code
char a[] = "abc";[code]而且循环可以[code=C/C++]for( int i = n-1;i>=0;i--){   cout<<a[i];}
[解决办法]
int n = strlen(a);
for(int i = n,a+=n; i>0 ; i--) 
printf("%c",a--)
[解决办法]
int main (void)
{
char *a = "abc123";
char *p = a;
 
while (*p)
{
p++;
}
 
while (p != a)
{
printf ("%c", *p);
}

return 0;
}
[解决办法]
看下面当中的反转字符串
C/C++ code
#include<stdio.h>#include<malloc.h>int len(char*);char* reverseStr(char*);char* deleteSpace(char*);void freeCharPtr(char*);//求长度int len(char* s){int i = 0;if(s == 0)    {        return 0;    }while(*s++)    {        i++;    }return i;}//翻转字符串char* reverseStr(char* s){int strLen = len(s), i = 0;char* sTemp = (char*)malloc(strLen);for(i = 0; i < strLen; i++)    {        sTemp[i] = s[strLen-1-i];        }sTemp[i] = '\0';return sTemp;}//删除串中的空格char* deleteSpace(char* s){int strLen=len(s), i=0;char* sTemp=(char*)malloc(strLen);while(*s)    {        if(*s != ' ')            {                sTemp[i++] = *s;                }    s++;    }sTemp[i] = '\0';return sTemp;}//释放void freeCharPtr(char* p){free(p);p = 0;}int main(){char s[] = "1234 56 78p";char* s1 = reverseStr(s);char* s2 = deleteSpace(s);char* s3=reverseStr(s2);printf("%s\n",s);printf("%s\n",s1);printf("%s\n",s2);printf("%s\n",s3);freeCharPtr(s1);freeCharPtr(s2);freeCharPtr(s3);system("pause");return 0;}
[解决办法]
void f_Reverse()
{
char str[]="abc";
char des[4];
int len=strlen(str);

for(int i=0;i<len;i++)
{
des[i]=str[len-1-i];
}
des[i]='\0';
printf(des);
printf("\n");


}
[解决办法]
#include <stdio.h>
#include <string.h>
main()
{int i,j;
char a1[20],a2[20];
printf("请输入两个字符串!\n");
scanf("%s%s",a1,a2);
printf("\n");
for(i=3;i>=0;i--)
printf("%c",a1[i]);
for(j=3;j>=0;j--)
printf("%c",a2[j]);
printf("\n");
}

[解决办法]
接分,楼上的都已经给的很清楚了,我就不添乱了,楼主记得给分!
[解决办法]
#include <stdio.h>
#include <string.h>
main()
{int i,j;
char a1[20],a2[20];
printf("请输入两个字符串!\n");
scanf("%s%s",a1,a2);
printf("\n");
for(i=3;i>=0;i--)
printf("%c",a1[i]);
for(j=3;j>=0;j--)
printf("%c",a2[j]);
printf("\n");
}
这种方式不错,不过我建议楼主设立一个函数。这样才能体会到调用函数的好处。

[解决办法]
我也建议LZ建一个函数,这样方便,也复合面向对象的思想。
[解决办法]
char *strrev(char *);
[解决办法]
用栈写,先进后出!就反着输出了!
[解决办法]

探讨
char *strrev(char *);

[解决办法]
C/C++ code
#include  <iostream>#include  <string>#include  <algorithm>using namespace std;int   main(){        string  str;        cin >> str;        reverse(str.begin(),   str.end());         cout << str;        return 0;}
[解决办法]
C/C++ code
void prin(char w[]){    char *wPtr = w;    if((*wPtr != '\0')        prin(*wPtr);            printf("%c", *wPtr);}
[解决办法]
C/C++ code
#include <stdio.h>#include <string.h>void reverse(char * strSrc,int len){    while(len--) putchar(*strSrc--);    putchar(10);}void main(){    char str[] = "a bc 123   a45s";    int len = strlen(str);    reverse(str+len-1,len);}
[解决办法]
C/C++ code
#include <iostream>using namespace std;int main(){    char *strSrc = "www.csdn.net";    cout<<"src:"<<strSrc<<endl;    int length = strlen(strSrc);    char *result = new char[length + 1];    result[length] = 0;    for(int i = length-1;i >= 0;i--)    {        result[i] = *(strSrc++);    }    cout<<"result:"<<result<<endl;    delete []result;    system("pause");    return 1;}
[解决办法]
int main()
{
int len=0;
int i=0;
char *str;
printf("input a string:\n");
gets(str);
len=strlen(str);
for(i=len-1;i>=0;i--)
{
printf("%c",*(str+i));
}
printf("\n");
system("pause");
return 0;
}
[解决办法]
C/C++ code
#include <stdio.h>#include <string.h>int main(){ char *str="abc123"; char *p=str+strlen(str)-1; while(p!=str)    printf("%c",*p--);  return 0;}
[解决办法]
其实这类题没难度,就看你咋么想了。我上面提供的3种方法均可实现逆序功能。
下面给你一种忒二的方法:
C/C++ code
#include <stdio.h>void main(char args){    if( (args = getchar()) != '\n')         main(args);    putchar(args);} 

热点排行