比如输入:two one
b数组:
| 下标 | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| 值 | 0 | 4 | 0 | 1 |
| 下标 | 0 | 1 |
|---|---|---|
| 0 | 0 | 4 |
| 1 | 0 | 1 |
|:-:|:-:|:-:| |0|0|1| |1|0|4|
输出结果:104
不是你按照顺序输出获取的字符就完了,需要从小到大排序,我用的冒泡排序
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
bool cmp(char a[],char b[]) {
return (a[0]<b[0])||(a[0]==b[0]&&a[1]<b[1]);
}
int main() {
char a[1000],b[1000]="";
bool flaga=1;
while(cin>>a) {
if(strcmp(a,"one")==0||strcmp(a,"first")==0||strcmp(a,"a")==0) {
strcat(b,"01");
flaga=0;
}
if(strcmp(a,"One")==0||strcmp(a,"First")==0||strcmp(a,"A")==0) {
strcat(b,"01");
flaga=0;
}
if(strcmp(a,"two")==0||strcmp(a,"both")==0||strcmp(a,"second")==0) {
strcat(b,"04");
flaga=0;
}
if(strcmp(a,"Two")==0||strcmp(a,"Both")==0||strcmp(a,"Second")==0) {
strcat(b,"04");
flaga=0;
}
if(strcmp(a,"three")==0||strcmp(a,"third")==0) {
strcat(b,"09");
flaga=0;
}
if(strcmp(a,"Three")==0||strcmp(a,"Third")==0) {
strcat(b,"09");
flaga=0;
}
if(strcmp(a,"four")==0) {
strcat(b,"16");
flaga=0;
}
if(strcmp(a,"Four")==0) {
strcat(b,"16");
flaga=0;
}
if(strcmp(a,"five")==0) {
strcat(b,"25");
flaga=0;
}
if(strcmp(a,"Five")==0) {
strcat(b,"25");
flaga=0;
}
if(strcmp(a,"six")==0) {
strcat(b,"36");
flaga=0;
}
if(strcmp(a,"Six")==0) {
strcat(b,"36");
flaga=0;
}
if(strcmp(a,"seven")==0) {
strcat(b,"49");
flaga=0;
}
if(strcmp(a,"Seven")==0) {
strcat(b,"49");
flaga=0;
}
if(strcmp(a,"eight")==0) {
strcat(b,"64");
flaga=0;
}
if(strcmp(a,"Eight")==0) {
strcat(b,"64");
flaga=0;
}
if(strcmp(a,"nine")==0) {
strcat(b,"81");
flaga=0;
}
if(strcmp(a,"Nine")==0) {
strcat(b,"81");
flaga=0;
}
if(strcmp(a,"ten")==0) {
strcat(b,"00");
flaga=0;
}
if(strcmp(a,"Ten")==0) {
strcat(b,"00");
flaga=0;
}
if(strcmp(a,"eleven")==0) {
strcat(b,"21");
flaga=0;
}
if(strcmp(a,"Eleven")==0) {
strcat(b,"21");
flaga=0;
}
if(strcmp(a,"twelve")==0) {
strcat(b,"44");
flaga=0;
}
if(strcmp(a,"Twelve")==0) {
strcat(b,"44");
flaga=0;
}
if(strcmp(a,"thirteen")==0) {
strcat(b,"69");
flaga=0;
}
if(strcmp(a,"Thirteen")==0) {
strcat(b,"69");
flaga=0;
}
if(strcmp(a,"fourteen")==0) {
strcat(b,"96");
flaga=0;
}
if(strcmp(a,"Fourteen")==0) {
strcat(b,"96");
flaga=0;
}
if(strcmp(a,"fifteen")==0) {
strcat(b,"25");
flaga=0;
}
if(strcmp(a,"Fifteen")==0) {
strcat(b,"25");
flaga=0;
}
if(strcmp(a,"sixteen")==0) {
strcat(b,"56");
flaga=0;
}
if(strcmp(a,"Sixteen")==0) {
strcat(b,"56");
flaga=0;
}
if(strcmp(a,"seventeen")==0) {
strcat(b,"89");
flaga=0;
}
if(strcmp(a,"Seventeen")==0) {
strcat(b,"89");
}
if(strcmp(a,"eighteen")==0) {
strcat(b,"24");
flaga=0;
}
if(strcmp(a,"Eighteen")==0) {
strcat(b,"24");
flaga=0;
}
if(strcmp(a,"nineteen")==0) {
strcat(b,"61");
flaga=0;
}
if(strcmp(a,"Nineteen")==0) {
strcat(b,"61");
flaga=0;
}
if(strcmp(a,"twenty")==0) {
strcat(b,"00");
flaga=0;
}
if(strcmp(a,"Twenty")==0) {
strcat(b,"00");
flaga=0;
}
if(strcmp(a,"another")==0) {
strcat(b,"01");
flaga=0;
}
if(strcmp(a,"Another")==0) {
strcat(b,"01");
flaga=0;
}
}
if(flaga){
cout<<0;
return 0;
}
int lb=strlen(b);
bool flag=1;
int lt=lb/2;
char temp[100][10];
int x=0,y=0;
for(int i=0; i<lb; i++) {
if(y<=1) {
temp[x][y++]=b[i];
} else {
x++;
y=0;
temp[x][y++]=b[i];
}
}
for(int i=0; i<lb; i++) {
temp[i][2]='\0';
}
//冒泡排序
for(int i=0; i<lt-1; i++) {
for(int j=0; j<lt-i-1; j++) {
if(temp[j][0]>temp[j+1][0]||temp[j][0]==temp[j+1][0]&&temp[j][1]>temp[j+1][1]) {
char tt[100]="\0";
strcpy(tt,temp[j]);
strcpy(temp[j],temp[j+1]);
strcpy(temp[j+1],tt);
}
}
}
bool rt=1;
for(int i=0; i<lt; i++) {
for(int j=0; j<2; j++) {
if(temp[i][j]=='0'&&rt) {
continue;
}else{
rt=0;
cout<<temp[i][j];
}
}
}
return 0;
}