patb1002. 写出这个数 2种解法+函数调用
2018-01-08 20:40
141 查看
1002. 写出这个数 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
第一种,直观解法,只考虑一维字符数组:
#include<stdio.h>
#include<string.h>
#define N 105
int main()
{
int n=0,i,x
,len=0;
char str
;
scanf("%s",str);
for(i=0;str[i]!='\0';i++){
n+=str[i]-'0';
}
while(n){
x[len]=n%10;
len++;
n/=10;
}
switch(x[len-1]){
case 0: printf("ling");
break;
case 1: printf("yi");
break;
case 2: printf("er");
break;
case 3: printf("san");
break;
case 4: printf("si");
break;
case 5: printf("wu");
break;
case 6: printf("liu");
break;
case 7: printf("qi");
break;
case 8: printf("ba");
break;
case 9: printf("jiu");
break;
}
for(i=len-2;i>=0;i--){
printf(" ");
switch(x[i]){
case 0: printf("ling");
break;
case 1: printf("yi");
break;
case 2: printf("er");
break;
case 3: printf("san");
break;
case 4: printf("si");
break;
case 5: printf("wu");
break;
case 6: printf("liu");
break;
case 7: printf("qi");
break;
case 8: printf("ba");
break;
case 9: printf("jiu");
break;
}
}
printf("\n");
return 0;
}
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
第一种,直观解法,只考虑一维字符数组:
#include<stdio.h>
#include<string.h>
#define N 105
int main()
{
int n=0,i,x
,len=0;
char str
;
scanf("%s",str);
for(i=0;str[i]!='\0';i++){
n+=str[i]-'0';
}
while(n){
x[len]=n%10;
len++;
n/=10;
}
switch(x[len-1]){
case 0: printf("ling");
break;
case 1: printf("yi");
break;
case 2: printf("er");
break;
case 3: printf("san");
break;
case 4: printf("si");
break;
case 5: printf("wu");
break;
case 6: printf("liu");
break;
case 7: printf("qi");
break;
case 8: printf("ba");
break;
case 9: printf("jiu");
break;
}
for(i=len-2;i>=0;i--){
printf(" ");
switch(x[i]){
case 0: printf("ling");
break;
case 1: printf("yi");
break;
case 2: printf("er");
break;
case 3: printf("san");
break;
case 4: printf("si");
break;
case 5: printf("wu");
break;
case 6: printf("liu");
break;
case 7: printf("qi");
break;
case 8: printf("ba");
break;
case 9: printf("jiu");
break;
}
}
printf("\n");
return 0;
}
第2种,利用结构体:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 6 typedef struct { char data[100]; }STACK; int main() { STACK s; int sum=0,i,j,k=-1,x; int n ; char m[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; scanf("%s",&s.data); for(i=0;i<strlen(s.data);i++) { sum=sum+(s.data[i]-'0'); } while(sum!=0) { j=sum%10; k++; n[k]=j; sum=sum/10; } for(x=k;x>=0;x--) { if(x==0) printf("%s",m[n[x]]); else printf("%s ",m[n[x]]); } return 0; }
//函数调用 #include<stdio.h> #include <stdlib.h> #include<string.h> #define maxn 100 + 10 char s[maxn]; char c[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"}; void print(int n) { int k=0,m[10]; while(n){ m[k]=n%10; k++; n=n/10; } for(int x=k-1;x>=0;x--) { if(x==0) printf("%s\n",c[m[x]]); else printf("%s ",c[m[x]]); } } int main() { while(~scanf("%s", s)){ int sum=0; for(int i = strlen(s)-1; i>=0 ; i--) sum+=s[i]-'0'; print(sum); } return 0; }
相关文章推荐
- PATB1002. 写出这个数(20)
- PATB1002:写出这个数
- 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- pat 1002 写出这个数
- 1002. 写出这个数 (20)
- PAT 1002 写出这个数
- 1002. 写出这个数 (20)
- PAT1002. 写出这个数
- PAT-B 1002. 写出这个数 (20)
- 1002. 写出这个数 (20)
- java_patest乙级真题1002. 写出这个数 (20)
- PAT_乙级 1002 写出这个数
- 1002. 写出这个数 (20)
- 【PAT】B1002. 写出这个数
- PAT 1002. 写出这个数
- 浙江大学PAT乙级试题.1002. 写出这个数 (20)C语言
- Pat——1002.写出这个数(java)
- 1002. 写出这个数 (20)(数学啊 ZJU_PAT)
- 1002. 写出这个数 (20)