要求输入的字符串反向输出
如: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 *);
[解决办法]
用栈写,先进后出!就反着输出了!
[解决办法]
[解决办法]
- 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);}