PAT 1002. 写出这个数 (20)
2018-01-16 16:54
197 查看
题目概述
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:
在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
思路:
先读取自然数n,边读取边计算各位数字的和,只需一个字符和一个整型。
构建一个0-9拼音的字符串数组,不低于100的输出百位,不低于10的输出十位,最后输出个位即可。
一个数组count[100]记录输入的数值
尝试用get获得count的取值
这道题刚开始的时候也是没有思路,主要是对于数组和字符串都不怎么熟悉,不知道如何获取字符串的值,这里主要了解了gets个getchar的基本用法,但对于它们的区别并不是特别清楚。
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
输入格式:
每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:
在一行内输出n的各位数字之和的每一位,拼音数字间有1空格,但一行中最后一个拼音数字后没有空格。
输入样例:
1234567890987654321123456789
输出样例:
yi san wu
思路:
先读取自然数n,边读取边计算各位数字的和,只需一个字符和一个整型。
构建一个0-9拼音的字符串数组,不低于100的输出百位,不低于10的输出十位,最后输出个位即可。
一个数组count[100]记录输入的数值
尝试用get获得count的取值
#include<stdio.h> #include<string.h> int main() { //char n; char count[100]; //记录输入的数值 char num[11]; //转换位数,从低到高 int sum=0; //记录答案大小 int length = 0; //记录输入数组的长度 int anslength=0; //记录答案的长度 char *ans[] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" }; //字符数组赋值 /* 先输入数据,之后getchar()的返回值一个接一个赋给c, 然后比较c是不是不等于回车键, 如果不等于回车键就会执行循环。如果等于就会结束。 */ /* 这种方法也可以,个人感觉更方便,此方法也是转载 作者:OliverLew 链接:https://www.jianshu.com/p/2700af335690 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 while ((n = getchar()) != '\n') sum += n - '0'; //减去0是为了转成正常的0-9而不是ASCII码 if (sum / 100) //hundreds printf("%s ", ans[sum / 100]); if (sum / 10) //tens printf("%s ", ans[sum / 10 % 10]); printf("%s", ans[sum % 10]); */ /* 下面方法主要是使用了get获得字符串内容 然后通过数组进行存储和转换 注意: 两个常用的小技巧 “/”用于去掉最后一位 “%”用于获得最后一位 */ gets(count); length = strlen(count); for (int i = 0; i < length; i++) { sum += count[i] - '0'; } while (sum != 0) { num[anslength] = sum % 10; sum /= 10; anslength++; } if (anslength != 0) { anslength--; printf("%s", ans[num[anslength]]); int temp = --anslength; 98ee for (int i = temp; i >= 0; i--) { printf(" %s", ans[num[i]]); } } else { printf("%s", ans[anslength]); } return 0; }
这道题刚开始的时候也是没有思路,主要是对于数组和字符串都不怎么熟悉,不知道如何获取字符串的值,这里主要了解了gets个getchar的基本用法,但对于它们的区别并不是特别清楚。
相关文章推荐
- 1002. 写出这个数 (20)PAT乙级真题
- PAT乙级1002. 写出这个数 (20)
- PAT 1002. 写出这个数 (20)
- PAT 乙级题:1002. 写出这个数 (20)
- PAT-1002. 写出这个数 (20)
- pat 1002. 写出这个数 (20)
- PAT (Basic Level)1002. 写出这个数 (20)
- PAT---B1002. 写出这个数 (20)
- PAT (Basic Level) Practise (中文)1002. 写出这个数 (20)
- PAT——B1002. 写出这个数 (20)
- PAT 乙 1002. 写出这个数 (20)
- 【PAT】1002. 写出这个数 (20) C++语言
- PAT 1002. 写出这个数 (20)
- 浙江大学PAT乙级试题.1002. 写出这个数 (20)C语言
- PAT-B 1002 写出这个数 (20)
- PAT-1002. 写出这个数 (20)--java
- PAT 1002. 写出这个数 (20) —— Java
- PAT乙级1002. 写出这个数 (20)
- pat 乙级 1002. 写出这个数 (20)
- PAT(Basic Level) 1002.写出这个数 (20)