PAT 1002 解析

article/2025/8/29 18:29:04


一、题目详情


问题描述:写出这个数

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10100。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu

代码长度限制:16 KB

时间限制:400 ms

内存限制:64 MB


二、题目解析


代码:

#include <stdio.h>
#include <string.h>int main()
{/** hzStr[10][4]:用于存储数字0~9对应的汉语拼音* num[100]:用于存储输入的正整数n* sum:用于存储各位数字之和,初始化为0* sumStr:将sum转换为字符串并存储在sumStr中* len:用于存储字符串sumStr的长度* i:循环变量*/char hzStr[10][4] = {"ling", "yi", "er", "san", "si","wu", "liu", "qi", "ba", "jiu"}; char num[100], sumStr[10];int sum = 0, i, len;scanf("%s", num);//读取正整数n//计算正整数n各位数字之和for(i=0;num[i]!='\0';i++){sum += num[i] - '0';}//将数字之和sum转换为字符串sumStrsprintf(sumStr, "%d", sum);//计算字符串sumStr的长度len = strlen(sumStr);//按位输出sumStr对应的汉语拼音for(i=0;i<len;i++){if(i<len-1)//非末位printf("%s ", hzStr[(int)sumStr[i]-48]);else//末位printf("%s", hzStr[(int)sumStr[i]-48]);}return 0;
}

提交结果(分数/满分): 

19分/20分

测试点1:答案错误

表明:您的程序未能对评测系统的数据返回正确的结果。原因不详,高手指点,拜谢!

提示:

1. 正整数n的输入问题

Visual C++ 6.0 开发环境下,int 型数据占 4 个字节:

#include <stdio.h>int main()
{printf("%d", sizeof(int));return 0;
}

输出结果:

4

在Visual C++ 6.0 开发环境下,int 型整数可表示的范围:

可通过一下代码加以验证: 

#include <stdio.h>int main()
{int i,n=1;for(i=1;i<32;i++)//4 Byte = 32 Bit{n *= 2;}printf("可表示的最小整数为:%d\n", n);printf("可表示的最大整数为:%d\n", n-1);return 0;
}

 输出结果:

可表示的最小整数为:-2147483648
可表示的最大整数为:2147483647

因此,在代码中无法通过 int num 读取输入样例 1234567890987654321123456789 如此大的数据,转而通过 char num[100] 读取该值。

2. 计算正整数n各位数字之和问题

关键点:获取字符对应的数字

原理:将每个字符的 ASCII 码值减去字符 '0' 的 ASCII 码值,即可获取其对应的数字

#include <stdio.h>int main()
{/** 功能:获取字符对应的数字* i:循环变量* str[11]:字符数组元素个数>=字符串中字符个数+1*/int i;char str[11] = "0123456789";for(i=0;str[i]!='\0';i++){// str[i]的ASCII码值减去字符'0'的ASCII码值printf("%d ", str[i]-'0');}return 0;
}

输出结果:

0 1 2 3 4 5 6 7 8 9 

3. 按位输出字符串 sumStr 对应的汉语拼音问题

1) 获取字符串长度 len

  • 通过函数 strlen() 获取字符数组 sumStr 的长度,便于后续循环处理
  • 若使用函数 strlen(),需增加头文件 string.h

2) 按位输出汉语拼音

  • 通过 i<len-1 判断是否为字符串 sumStr 的最后一个字符,如果不是,需要在输出对应汉语拼音后补充一个空格符,否则,只需输出对应的汉语拼音即可
  • 通过 (int)sumStr[i]-48 获取字符数组 hzStr[10] 中预留的汉语拼音,其中,字符 '0' 的 ASCII 码值为 48,将字符 sumStr[i] 通过强制类型转换 (int) 转换为其对应的 ASCII 码值,并减去 48,即可得到字符数组 hzStr 的索引值,随即输出最终结果


http://chatgpt.dhexx.cn/article/MUwWjYCG.shtml

相关文章

题1000、1001、1002

第一次使用上交的online judge&#xff0c;都翻译成了中文的&#xff0c;也还不错。只是没有提示使用环境的&#xff0c;我写的程序在VS2010下编译正确&#xff0c;但提交竟然报错&#xff0c;后来限制了一些。 1000题就是计算两个整数的相加&#xff1b; 1001题是判断一个列…

1002 写出这个数

想好好写一下这个题&#xff0c;因为一开始写了一百多行都没有写正确… 如果不想看那么多直接拉到最后看代码&#xff0c;但是也许我的解题过程会对你有帮助。 之前的思路&#xff1a; 用除10取余循环计算得到一个sum也就是各个数字的和&#xff0c;然后把sum倒转回来在除10取…

1002 写出这个数 ——c++实现

1.题目介绍 2. 思路 这道题目较好理解&#xff0c;只是实现起来有几点要注意&#xff1a; &#xff08;1&#xff09;正整数的范围。题目中规定n<10^100&#xff0c;这是个很大的数字。long long类型最大到2^63-1&#xff0c;也远小于这个数。但我最开始没有考虑这一点&am…

1002 写出这个数 (C语言实现)

题目描述&#xff1a; 读入一个正整数 n&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 输入格式&#xff1a; 每个测试输入包含 1 个测试用例&#xff0c;即给出自然数 n 的值。这里保证 n 小于 10^100。 输出格式&#xff1a; 在一行内输出…

算法竞赛入门经典训练指南 pdf

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01; 下载地址&#xff1a;网盘下载 基本介绍 编…

《算法竞赛入门经典》Chap3

《算法竞赛入门经典&#xff08;第二版&#xff09;》第三章 思考题题目1 必要的存储量题目2 统计字符1的个数 示例程序程序3-1 逆序输出程序3-2 开灯问题程序3-3 蛇形填数程序3-4 竖式问题 例题例题3-1 Tex中的引号 (Tex Quotes, UVa 272)例题3-2 WERTYU (WERTYU, UVa 10082)例…

【算法竞赛从入门到精通】【基础算法】

基础算法 贪心法的基本思想如何判断一个题目能用贪心法&#xff1f;常见问题最少硬币问题活动安排问题&#xff08;区间调度问题&#xff09;区间覆盖问题最优装载问题多机调度问题 Huffman编码[poj 1521"Entropy"](http://poj.org/problem?id1521) 模拟退火 使用分…

算法竞赛入门经典习题

第一章&#xff1a;程序设计入门 总结 1、%.2f 表示保留两位小数 2、const double Piacos(-1.0) //尽量用const声明常量 3、三整数排序&#xff1a; If(a>b) {交换} if(a>c){交换} if(b>c){交换}第二章&#xff1a;循环结构设计 总结 1、重复次数可变、递增&…

《算法竞赛入门经典(第2版)》

《算法竞赛入门经典(第2版)》 基本信息 作者&#xff1a; 刘汝佳 丛书名&#xff1a; 算法艺术与信息学竞赛 出版社&#xff1a;清华大学出版社 ISBN&#xff1a;9787302356288 上架时间&#xff1a;2014-6-5 出版日期&#xff1a;2014 年6月 开本&#xff1a;16开 页码&…

《算法竞赛入门经典》(第二版)代码及详细解释(持续更新!)

笔者中山大学硕士&#xff0c;医学生计科学生的集合体&#xff0c;机器学习爱好者。 现发布【刘汝佳《算法竞赛入门经典》&#xff08;第二版&#xff09;——紫书】的例题和习题的代码和详细解释。 欢迎批评指正&#xff01; 另外欢迎关注本人微信公众号——程序员Yukyin …

算法竞赛入门知识干货

前言&#xff1a;本篇总结一部分来自刘汝佳老师的《算法竞赛入门经典》&#xff0c;一部分是个人竞赛学习中的一些算法知识点总结&#xff0c;是初学算法走了不弯路一点点积累起来的干货&#xff0c;对刚刚参加竞赛的盆友应该会很有帮助&#xff0c;如有不足请提出 一.程序设计…

《算法竞赛入门经典》——刘汝佳

“构造性”和“可行性”是计算机学科的两个最根本特征。 比赛的核心是算法 #1 语言篇 编程不是看会的&#xff0c;也不是听会的&#xff0c;而是练会的&#xff0c;所以应尽量在计算机旁阅读书本&#xff0c;以便把书中的程序输入到计算机中进行调试&#xff0c;顺便再做做上机…

ntoskrnl.exe占用大量cpu解决方法

ntoskrnl.exe 计划任务里面结束关于空闲时段内存自检的任务

ntoskrnl.exe占用cpu高

winr -->control 打开控制面板 还是过高&#xff0c;重启即可 转载于:https://my.oschina.net/u/2425353/blog/3081583

Win10开机提示蓝屏错误ntoskrnl.exe怎么修复?

1、下载bluescreenview软件。 2、下载后解压缩&#xff0c;启动就可以查看蓝屏原因了&#xff01;如下图所示 3、发现问题出在ntoskrnl.exe这个文件上&#xff0c;我重新下载这个文件替换也没用&#xff01; 4、继续解决问题&#xff0c;同时按下winX按键&#xff0c;如下图…

计算机反复蓝屏问题--ntoskrnl.exe

最近电脑反反复复地蓝屏吗&#xff0c;尤其是在电脑开机但又没怎么用的情况下。 使用联想电脑管家分析问题 下载了蓝屏分析诊断工具&#xff0c;提取码&#xff1a;5dti 检测出来问题根源是ntoskrnl.exe 解决方案&#xff1a; ① 参考博客1 控制面板----管理工具----任务计…

ntoskrnl.exe蓝屏

win10装完系统后频繁蓝屏,用bluescreen工具检测后,提示ntoskrnl.exe文件导致; 按照以下步骤处理: 1、在开始菜单上单击右键或按下win+x,点击命令提示符(管理员); 2、在命令提示符中输入: chkdsk c: /f 按下回车键,会弹出如下提示: 3、提示:是否计划在下次系统重…

win10一直蓝屏!一直是这个代码,ntoskrnl.exe导致,要废了。。

几个月了&#xff0c;一直都是这样&#xff0c;刚开始的系统1909&#xff0c;中间用过20H2、21H1&#xff0c;一直到现在的22H2&#xff0c;这个蓝屏问题一直没解决&#xff0c;网上的方式都试了&#xff0c;不行&#xff01;重装了几次系统也没解决&#xff0c;从WIN10 专业版…

Windows内核Shellcode获取ntoskrnl.exe基址

使用NASM编译以下汇编代码 BITS 64 ORG 0section .textglobal _start _start:push rbxmov rax,QWORD [gs:0x38]mov rax,QWORD [rax0x4]shr rax,0xcshl rax,0xc _x64_find_nt_walk_page:mov rbx,QWORD [rax]cmp bx,0x5a4dje _foundsub rax,0x1000jmp _x64_find_nt_walk_page _f…

ERROR: Module load completed but symbols could not be loaded for ntoskrnl.exe Loading Kernel Symbols

电脑蓝屏问题ERROR: Module load completed but symbols could not be loaded for ntoskrnl.exe Loading Kernel Symbols 1.先找出蓝屏日志&#xff1a;C:\Windows\Minidumpc 2.此文件记录了蓝屏的具体原因,由于是dmp文件,这里我是用的是windbg工具进行解析,此工具可以在某讯…