[C++]PAT乙级1002.写出这个数(20/20)
/*
1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10^100。 输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。 输入样例:
1234567890987654321123456789
输出样例:
yi san wu
*/
/*
思路:
1.字符串存储长达100位的"数字",解决空间放不下问题;
2.对各位数字累加求和,注意char转int,ASCII表中48:'0';65:'A';97:'a'
3.输出时,对最后一个数字拼音字符串的多余空格,可以用比较巧妙的办法解决:字符串数组的该位置为'\0';
4.运用好头文件<string.h>中常用的【字符串数组】的处理函数:
strcpy(字符串数组1,字符串数组2);
strncpy(字符串数组1,字符串数组2, len); strcmp(字符串数组1,字符串数组2);//0:相等;1:字符串数组1>字符串数组2;-1:字符串数组1<字符串数组2;
strncmp(字符串数组1,字符串2, len); strcat((字符串数组1,字符串2)); strupr(字符串数组数组);//转大写
strlwr(字符串数组);//转小写 strlen(字符串数组);//求字符串长度
*/
#include <iostream>
#include <string.h>
using namespace std; const int MAX_LENGTH = 100;
char str[1000]; int calculate(char chs[], int len){
int num = 0;
for(int i=0;i<len;i++){
num += ((int)chs[i]) - 48;
}
return num;
} void print(int x){
static int tmp;
static char pinyin[1000];
for(;x != 0;){
tmp = x%10;
x /= 10;
switch(tmp){
case 1: strcpy(pinyin, "yi ");break;
case 2: strcpy(pinyin, "er ");break;
case 3: strcpy(pinyin, "san ");break;
case 4: strcpy(pinyin, "si ");break;
case 5: strcpy(pinyin, "wu ");break;
case 6: strcpy(pinyin, "liu ");break;
case 7: strcpy(pinyin, "qi ");break;
case 8: strcpy(pinyin, "ba ");break;
case 9: strcpy(pinyin, "jiu ");break;
case 0: strcpy(pinyin, "ling ");break;
}
strcat(pinyin, str);
strcpy(str, pinyin);
}
} int main(){
char number_str[MAX_LENGTH];
int position;
char tmp;
for(position=0;position<MAX_LENGTH;){
scanf("%c", &tmp);
if(tmp != '\n'){
number_str[position++] = tmp;
} else
break;
}
print(calculate(number_str, position));
str[strlen(str) - 1] = '\0';//经典:删除末尾空格
printf("%s", str);
}
[C++]PAT乙级1002.写出这个数(20/20)的更多相关文章
- PAT乙级 1002. 写出这个数 (20)
1002. 写出这个数 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 读入一个自然数n,计算其各位数字 ...
- PAT 乙级 1002.写出这个数 C++/Java
1002 写出这个数 (20 分) 题目来源 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n ...
- PAT乙级1002. 写出这个数 (20)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每 ...
- PAT 乙级 -- 1002 -- 写出这个数
题目: 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字 ...
- PAT 乙级 1002. 写出这个数 (20)(C语言描述)
读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每 ...
- 【PAT】1002. 写出这个数 (20)
1002. 写出这个数 (20) 读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式 ...
- PAT Basic 1002 写出这个数 (20 分)
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1. 输出格式: 在一行内输出 n 的 ...
- PAT (Basic Level) Practice 1002 写出这个数 分数 20
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10100. 输出格式: 在一行内输出 ...
- PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)
题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805324509200384 #include <iost ...
随机推荐
- Vim保存时权限不足
保存时权限不足,由于打开时忘记在命令前添加sudo.我们并不需要放弃修改,从新以root权限打开 解决方案 命令模式使用:w !sudo tee %提权,保存
- 【CF600E】Lomsat gelral
题目大意:给定一棵 N 个节点的有根树,1 号节点是树的根节点,每个节点有一个颜色.求对于每个节点来说,能够支配整棵子树的颜色之和是多少.支配的定义为对于以 i 为根的子树,该颜色出现的次数不小于任何 ...
- react-native中的图片
静态图片资源 React Native 提供了一个统一的方式来管理 iOS 和 Android 应用中的图片.要往 App 中添加一个静态图片, 只需把图片文件放在代码文件夹中某处,然后像下面这样去引 ...
- 第二十四篇-用VideoView制作一个简单的视频播放器
使用VideoView播放视频,视频路径有三种: 1. SD卡中 2. Android的资源文件中 3. 网络视频 第一种,SD卡中的方法. 路径写绝对路径,如果不能播放,可以赋予读取权限. 效果图: ...
- Mysql中INSERT ... ON DUPLICATE KEY UPDATE的实践
转: Mysql中INSERT ... ON DUPLICATE KEY UPDATE的实践 阿里加多 0.1 2018.03.23 17:19* 字数 492 阅读 2613评论 2喜欢 1 一.前 ...
- template specifiers not specified in declaration of ‘template<class Key> class hash’
尝试写显示特化样例的时候,写了如下代码 #include <iostream> #include <cstddef> using namespace std; #define ...
- POJ 3349 Snowflake Snow Snowflakes (Hash)
Snowflake Snow Snowflakes Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 48646 Accep ...
- Oracle提权
1.创建JAVA包 select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION;begin execute immed ...
- Linux系统下DNS主从配置详解
一.DNS概述DNS(Domain Name System),即域名系统.因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串. ...
- 为什么wait()和notify()属于Object类
关于wait()暂停的是持有锁的对象,所以想调用wait()必须为:对象.wait(); notify()唤醒的是等待锁的对象,调用:对象.notify(); 如下: Object obj = new ...