输入一个整数,如12336544,或1750,然后从最后一位开始倒过来输出,最后如果是0,则不输出,输出的数字是不带重复数字的,所以上面的输出是456321和571。如果是负数,比如输入-175,输出-571。
#include <iostream> #include <string> using namespace std; //逆序 char * revs(char *s){ int j = strlen(s)-1; int i=0; char t; while(i<j){ t = s[i]; s[i++]=s[j]; s[j--]=t; } return s; } void process(const char *pInputStr, long lInputLen, char *pOutputStr) { bool flag[10] = {0}; int j = 0; int flag_0=0; for(int i = 0;i < lInputLen;i++) { if(flag[pInputStr[i] - '0'] == 0)//pInputStr[i]第一次出现. { if(pInputStr[i] - '0'==0 && flag_0==0); else{ flag_0=1; pOutputStr[j++] = pInputStr[i]; flag[pInputStr[i] - '0'] = 1; } } } pOutputStr[j]='\0'; for(i=0;i<j;i++) cout<<pOutputStr[i]; cout<<endl<<endl; } int main() { char *input=new char[100]; char *output=new char[100]; char *s=new char[100]; char *ss; int k=0; while(cin>>input){ k=0; if(input[0]=='-') { cout<<"-"; for(int i=1;i<strlen(input);i++) s[k++]=input[i]; s[k]='\0'; ss=revs(s); process(ss,strlen(ss),output); } else { ss=revs(input); process(ss,strlen(ss),output); } } delete input; delete output; delete s; return 0; }
原文地址:http://blog.csdn.net/wtyvhreal/article/details/42558229