您的位置:首页 > 其它

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;
}
第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;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: