PTA第二个编程题总结
7-1 币值转换 (20 分)
输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。
输入格式:
输入在一行中给出一个不超过9位的非负整数。
输出格式:
在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。
输入样例1:
813227345
输出样例1:
iYbQdBcScWhQdBeSf
输入样例2:
6900
输出样例2:
gQjB
实验代码:
#include <stdio.h>
int main(void)
{
int a,b,c,d,e,n,i,j,m,N,k;
scanf("%d",&N);
a=b=N;
if(a==0){
printf("a");
}
for(i=0;a>0;i++){
a=a/10;
}
c=i;
for(i;i>0;i--){
n=1;
e=0;
for(m=i-1;m>0;m--){
n=n*10;
}
a=b/n;
b=b-a*n;
switch(a){
case 0: printf("a"); break; case 1: printf("b"); break; case 2: printf("c"); break;
case 3: printf("d"); break; case 4: printf("e"); break; case 5: printf("f"); break;
case 6: printf("g"); break; case 7: printf("h"); break; case 8: printf("i"); break;
case 9: printf("j"); break;
}
switch (i) {
case 2: printf("S"); break; case 3: printf("B"); break; case 4: printf("Q"); break;
case 5: printf("W"); break; case 6: printf("S"); break; case 7: printf("B"); break;
case 8: printf("Q"); break; case 9: printf("Y"); break;
}
j=0;
for(d=b;d>0;j++){
d=d/10;
}
j=i-j-1;
if(c<9&&i>5&&j>2){
printf("W");
}
j=0;
for(d=b;d>0;j++){
d=d/10;
}
if(j!=0){
e=i-j-1;
}else{
i=0;
}
if(e>3&&i>4||e==2&&i<4){
printf("a");
i=j+1;
}else if(e==2&&i>1){
printf("a");
i=i-2;
}else if(j<4&&c<9&&j!=0&&e!=1&&e!=0){
printf("a");
i=j+1;
}else if(e==1){
printf("a");
i=j+1;
}else{
i=j+1;
}
}
return 0;
}
实验思路:
先记录输出的数的位数,利用位数来确定输出的大写字母,运用循环来进行从高位数到低位数
进行判断要输出的小写字母,用条件语句来判断特殊情况。
实验错误:

当时没有想到位数小于9的情况下中间位数存在连续多个0的输入的考虑。
实验正确:
PTA第二个编程题总结的更多相关文章
- 面向对象程序设计--Java语言第二周编程题:有秒计时的数字时钟
有秒计时的数字时钟 题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成.但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做 ...
- 数据结构与算法分析C++表述第二章编程题
把昨天看的第二章巩固一下,做一做编程习题. 2.6: 第一天交2元罚金,以后每一天都是前一天的平方,第N天罚金将是多少? 这个题目和2.4.4-3介绍的幂运算基本一致.若按相同的递归思路分析,比那个问 ...
- 『CUDA C编程权威指南』第二章编程题选做
第一题 设置线程块中线程数为1024效果优于设置为1023,且提升明显,不过原因未知,以后章节看看能不能回答. 第二题 参考文件sumArraysOnGPUtimer.cu,设置block=256,新 ...
- 慕课零基础学java语言翁恺老师——第二周编程题
1.时间换算(5分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果 ...
- 《python语言程序设计》_第二章编程题
2.1 程序: Celsius=eval(input("Enter a degree in Celsius:"))#输入摄氏度的值Celsiusfahrenheit =(9/5)* ...
- PTA第一个编程题总结
7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数 ...
- Java程序设计(2021春)——第二章课后题(选择题+编程题)答案与详解
Java程序设计(2021春)--第二章课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第二章课后题(选择题+编程题)答案与详解 第二章选择题 2.1 面向对象方法的特性 ...
- 京东校招笔试(C++方向)编程题
这次笔试是今年校招我参加的第一次笔试..出了很多状况,基础知识不扎实,导致选择题耽误了太多时间,导致后面的题目没做完,编程题也没有在 时间内写出来,基本没有面试机会了.不过我继续研究第二个编程题,在1 ...
- pta 编程题20 旅游规划
其它pta数据结构编程题请参见:pta 题目 这个最短路径问题只需要求两点之间的最短路径,因而在Dijikstra算法中当求出目标点的最短路径之后跳出循环即可. #include <iostre ...
随机推荐
- java.lang.NoClassDefFoundError: javax/annotation/Priority
异常内容: 2017-09-25-15-02 [localhost-startStop-1] [org.springframework.web.context.ContextLoader] [ERRO ...
- ocelot配置
动态配置 { "ReRoutes": [], "Aggregates": [], "GlobalConfiguration": { &quo ...
- windows 端口被占用,并杀死进程的方法
netstat -ano | findstr 8081 查询端口 被什么进程占用 tasklist | findstr 2184 根据进程号 查询任务名称 taskkill /f /t /im jav ...
- 超简单C#获取带汉字的字符串真实长度(单个英文长度为1,单个中文长度为2)
https://blog.csdn.net/u014732824/article/details/84952848 int i = System.Text.Encoding.Default.GetBy ...
- 语法的二义性和token的超前扫描
语法的二义性 JavaCC不能分析所有EBNF描述的语法,因为EBNF描述的语法本质上具有二义性的情况.C语言中if语句用JavaCC的EBNF可以是如下描述: "if" &quo ...
- opencv3 图像处理(一)图像缩放( python与c++ 实现)
opencv3 图像处理 之 图像缩放( python与c++实现 ) 一. 主要函数介绍 1) 图像大小变换 Resize () 原型: void Resize(const CvArr* src,C ...
- 理解vue之element-ui中的 <template slot-scope="scope">
https://blog.csdn.net/tg928600774/article/details/81945140?utm_source=blogxgwz1
- VUE组件的学习
参考:https://blog.csdn.net/baidu_23142899/article/details/79130225
- Nestjs 身份验证
文档 yarn add @nestjs/passport passport passport-http-bearer @nestjs/jwt passport-jwt auth.service.ts ...
- hibernate11--Criteria查询
public class EmpTest { Session session =null; Transaction transaction=null; @Before public void befo ...