#include <string.h>
int main(){
int n,ls,la,i;
char str1[] = "ss";
char str2[] = "rd";
char str3[] = "nd";
char str4[] = "st";
char str[100] ;
while(scanf("%d",&n)!=EOF){
if(n<100){
ls=strlen(str);
la=strlen(str1);
for(i=0;i<la;i++){
str[ls+i]=str1[i];}
}else{
ls=strlen(str);
la=strlen(str2);
for(i=0;i<la;i++){
str[ls+i]=str2[i];}
n=n%100;
if((n/10==1||n/10==5||n/10==9)&&n>9){
ls=strlen(str);
la=strlen(str3);
for(i=0;i<la;i++){
str[ls+i]=str3[i];}
}else{
ls=strlen(str);
la=strlen(str1);
for(i=0;i<la;i++){
str[ls+i]=str1[i];}
n=n%10;
}
if(n==3||n==7||n==2){
ls=strlen(str);
la=strlen(str4);
for(i=0;i<la;i++){
str[ls+i]=str4[i];}
}else{
ls=strlen(str);
la=strlen(str1);
for(i=0;i<la;i++){
str[ls+i]=str1[i];}
}
printf("%d",n);
for(i=0;i<ls+la;i++){
printf("%c",str[i]);}
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
string num;
while(cin>>num)
{
int t=num.size();
if(t==3) num+="rd";
else num+="ss";
if(num[t-2]=='1' || num[t-2]=='5' ||num[t-2]=='9') num+="nd";
else num+="ss";
if(num[t-1]=='3' || num[t-1]=='7' ||num[t-1]=='2') num+="st";
else num+="ss";
cout<<num<<endl;
}
return 0;
}
当数字小于100,没有考虑10以内数字
存储到数组没必要,可以直接输出,省下内存空间
int main(){
int n,ls,la,i,j,tmp;
char str1[] = "ss";
char str2[] = "rd";
char str3[] = "nd";
char str4[] = "st";
while(scanf("%d",&n)!=EOF){
printf("%d",n);
tmp = n;
tmp=n%1000/100;
//获取百位
if(tmp>0){//百位
printf("%s",str2);
}else{//最高可能十位
printf("%s",str1);
}
//获取十位
tmp=n%100/10;
//获取百位
if(tmp==1||tmp==5||tmp==9){//十位
printf("%s",str3);
}else{
printf("%s",str1);
}
//获取个位
tmp=n%10;
if(tmp==3||tmp==7||tmp==2){//个位
printf("%s",str4);
}else{
printf("%s",str1);
}
printf("\n");
}
system("pause");
}