花费大概四个小时做得一道题 说来是在太菜了。 主要是总结一些自己不会的知识点
#define use _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int sum = 0;
int j = 0;
int flag=0;
char *a[10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
int num[100] = {};
int num1[100] = {};
char string[100] = {};
//fgets(string,100,stdin);
//gets_s(string);
scanf("%s", string);
int len = strlen(string);
for (int i = 0; i < len; i++)
{
num[i] = string[i] - '0';
}
for (int i = 0; i < len; i++)
{
sum += num[i];
}
while (sum)
{
num1[j++] = sum % 10;
sum /= 10;
}
for (int k = j - 1; k >= 0; k--)
{
flag++;
switch (num1[k])
{
case 0: if (flag == 1) printf("%s", a[0]); else printf(" %s", a[0]); break;
case 1: if(flag==1) printf("%s", a[1]); else printf(" %s",a[1]); break;
case 2: if (flag == 1) printf("%s", a[2]); else printf(" %s", a[2]); break;
case 3: if (flag == 1) printf("%s",a[3]); else printf(" %s", a[3]); break;
case 4: if (flag == 1) printf("%s",a[4]); else printf(" %s", a[4]); break;
case 5: if (flag == 1) printf("%s",a[5]); else printf(" %s", a[5]); break;
case 6: if (flag == 1) printf("%s", a[6]); else printf(" %s", a[6]); break;
case 7: if (flag == 1) printf("%s", a[7]); else printf(" %s", a[7]); break;
case 8: if (flag == 1) printf("%s", a[8]); else printf(" %s", a[8]); break;
case 9: if (flag == 1) printf("%s", a[9]); else printf(" %s", a[9]); break;
}
}
getchar();
return 0;
}
1.刚开始我是找如何从键盘上读入这么大的一个数字的办法,int ,long long 普通定义变量的数据类型肯定不行。尝试着字符串输入 这里我忽视了可以使用scanf("%s",xx),这个方法。
2.字符数字转数字 atoi 只能转一定范围的较小的整数。直接使用 字符数字-‘0’较好。
3.取一个未知整数的各个位数和字符串数组的定义。