1044 화성 숫자 (20 분) 테스트 포인트 14

2864 단어 알고리즘PAT B 급
화성 인 은 13 진법 으로 계산 된다. 지구 인의 0 은 화성 인 에 의 해 tret 라 고 불 린 다.지구 인 숫자 1 부터 12 까지 의 화성 문 은 jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec 이다.화성 인 들 은 진입 후 12 개의 높 은 숫자 를 각각 tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou 라 고 부른다.예 를 들 어 지구 인의 숫자 29 를 화성 문 으로 번역 하면 hel mar 이다.화성 문 elo nov 는 지구 숫자 115 에 대응한다.교 류 를 편리 하 게 하기 위해 서 는 지구 와 화성 숫자 간 의 상호 번역 을 실현 하 는 프로그램 을 만들어 보 세 요.입력 형식:
첫 번 째 줄 에 정수 N (< 100) 을 입력 하고 N 줄 에 [0, 169) 구간 의 숫자 나 지구 문 또는 화성 문 을 입력 하 십시오. 출력 형식:
입력 한 줄 마다 번 역 된 다른 언어의 숫자 를 한 줄 에 출력 합 니 다.
4 29 5 elo nov tam 출력 사례:
hel mar may 115 13 테스트 점 1 의 문 제 는 0 을 입력 할 때 번역 하 는 것 입 니 다. 예전 에 제 코드 는 숫자 를 입력 할 때 13 진법 으로 전환 하 는 비트 와 10 비트 를 제어 한 적 이 있 습 니 다. 모두 0 을 경계 로 하고 0 이상 이면 출력 합 니 다. 0 보다 작 으 면 출력 하지 않 습 니 다. 예 를 들 어 (13 130 과 같은 13 의 배수, 한 비트 는 출력 하지 않 습 니 다. 이것 도 테스트 점 4 의 카드 점 입 니 다)그래서 0 이라는 곳 에 서 는 특별히 처리 해 야 합 니 다.
#include
#include
//            ,       。 
char Gewei [13][5]={"tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec"};
char Gaowei [13][4]={"","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou"};
void huoxinhua(char*str)//        ,             
{	char *p=str;
	int gaowei=0;
	int gewei=0; 
	int sum=0;
	while(*p!='\0')	//         
	{
		sum=sum*10+*p-'0';
		p++;//  p   ,     
	}
	gaowei=sum/13;//     sum 13  ,      
	gewei=sum%13;//    
	//                ,     ,     。 
	if(gaowei)//     0
	{
	printf("%s",Gaowei[gaowei]);
	if(!gewei)	printf("
"); else printf(" "); } if(gewei) printf("%s
",Gewei[gewei]); } void shuzihua(char*str)// { int i; int sum=0; char diyi[4]; char dier[5]; if(strlen(str)==3)// tret , 1-12 { for(int i=0;i<3;i++) dier[i]=str[i]; dier[3]='\0'; for(i=1;i<13;i++) { if(!(strcmp(dier,Gewei[i])))// { sum=i; } else if(!(strcmp(dier,Gaowei[i]))) sum=13*i; } printf("%d
",sum); } else// { for(i=0;i<3;i++) diyi[i]=str[i]; diyi[3]='\0'; for(i=4;str[i]!='\0';i++) dier[i-4]=str[i];// dier[i-4]='\0'; for(i=1;i<13;i++) { if(!strcmp(diyi,Gaowei[i])) sum=13*i; } for(i=1;i<13;i++) { if(!strcmp(dier,Gewei[i])) sum+=i; } printf("%d
",sum); } } int main() { char str[9]; int N; int i; scanf("%d",&N); getchar(); for(i=0;i='0'&&str[0]<='9') huoxinhua(str);// else shuzihua(str);// } return 0; }

좋은 웹페이지 즐겨찾기