PTA寒假编程第二题

币值转换

输入一个整数(位数不超过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()

{

int n,initial_n;

scanf("%d",&n);

initial_n=n; //保留初始值

char num[10]={‘a‘,‘b‘,‘c‘,‘d‘,‘e‘,‘f‘,‘g‘,‘h‘,‘i‘,‘j‘};
char unit[10]={0,0,‘S‘,‘B‘,‘Q‘,‘W‘,‘S‘,‘B‘,‘Q‘,‘Y‘};    //舍弃前两位
char result[17]={0};      //9位数最多有17位输出

int i,last_i=n%10;
int j=0;
int count_n=0;
while(n>0){

    i=n%10;
    n/=10;
    count_n++;
    if(i==0&&(count_n%4)>1){      //从十位开始统计(个位 0 永远不输出 )
        if(last_i!=0){       //如果前一位不等于 0 ,那就输出这个 0
            result[j++]=num[i];
        }
    }
    if(count_n==5&&i==0&&initial_n<100000000){
        result[j++]=unit[count_n];      //万 W 是一定要输出的
    }
    if(count_n>1&&i!=0){      //非 0 不输出单位
        result[j++]=unit[count_n];
    }
    if(i!=0){      //处理非0数输出
        result[j++]=num[i];
    }
    last_i=i;      //保留 i 前一位的值用于处理0
}

if(initial_n==0){      //处理特殊值 0
    result[j++]=num[i];
}

for(j=j-1;j>=0;j--){
    printf("%c",result[j]);
}

return 0;

}

正确实验截图:

原文地址:https://www.cnblogs.com/husiyu/p/10361213.html

时间: 2024-08-02 01:42:06

PTA寒假编程第二题的相关文章

PTA寒假编程第一题

7-1 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 * 所谓"沙漏形状",是指每行输出奇数个符号:各行符号中心对齐:相邻两行符号数差2:符号数先从大到小顺序递减到1,再从小到大顺序递增:首尾符号数相等. 给定任意N个符号,不一定能正好组成一个沙漏.要求打印出的沙漏能用掉尽可能多的符号. 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔. 输出格式: 首先打印出由给定符

PTA寒假编程第三题

抓老鼠啊~亏了还是赚了? 某地老鼠成灾,现悬赏抓老鼠,每抓到一只奖励10元,于是开始跟老鼠斗智斗勇:每天在墙角可选择以下三个操作:放置一个带有一块奶酪的捕鼠夹(T),或者放置一块奶酪(C),或者什么也不放(X).捕鼠夹可重复利用,不计成本,奶酪每块3元. 聪明的老鼠呢?它们每天可能会派出一只老鼠到墙角,看看墙角有啥: 若什么也没有(X),老鼠们就不高兴了(Unhappy),会有长达一天(也就是第二天)的不高兴期.在不高兴期间,不派出老鼠.不高兴期结束之后,派出老鼠. 若有捕鼠夹(T),这只老鼠被

2017年中兴武汉秋招在线编程第二题

题目描述: 给出一个只由0和1组成的二进制字符串S,写一个算法来找出:得到只由1组成的最长连续字段的不同方法数目.你可以将K个0改为1. 请注意,如果生成的字符串相同,则视两种方式为同一种方式. 输入: 该函数方法的输入包括三个参数-- size ,表示二进制字符串大小的整数 allowedChanges,表示允许的更改次数的整数(K) str 表示二进制字符串S 输出: 返回一个整数,表示得到由1组成的最长连续字段的不同方法数目. 约束条件:1<= size<=2*10^5         

CSDN挑战编程——《金色十月线上编程比赛第二题:解密》

金色十月线上编程比赛第二题:解密 题目详情: 小强是一名学生, 同时他也是一个黑客. 考试结束后不久,他惊讶的发现自己的高等数学科目居然挂了,于是他果断入侵了学校教务部网站.在入侵的过程中,他发现了与成绩相关的内容是一个加密文件,这个文件由 n 个数构成,经过分析,这个加密文件的密钥为这 n 个数中二进制位数 1 最少的数.但由于数比较多,小强 希望你能帮他得到密钥,好在成绩公布之前将成绩改过来. 输入描述: 输入由多组数据构成,每组数据第一行为一个数 n(1<=n<=10^5),表示数的数量

蓝桥杯省赛编程大题——骰子问题

作为第二道编程大题,难度也没有想象中那么难.只怪我当时没有认真的静下心来仔细的理解题目意思.连样例都没有看懂,高数课闲来无事,便静下来认真想了一下. 大致的题目意思是给你n个骰子,让你堆起来,并且告诉你有一些面是不能靠在一起的.问你总共有多少总方案数.(骰子规定1和4相对,2和5相对,3和6相对) 输入n m 表示骰子的个数和不能靠在一起的个数. 输入m行,每行两个数a b 表示a和b两面不能靠在一起. 输出一行方案数,数据较大请模100000000+7; 样例输入: 2 1 1 2 样例输出:

第二题、第三题、第四题

1.以编程方式操作 HttpCachePolicy 类. HttpCachePolicy.SetExpires HttpCachePolicy.SetCacheability |NoCache|Private|Public|Server|ServerAndNoCache |ServerAndPrivate 2<%@ OutputCache Duration="60" VaryByParam="None" %>Duration 和 VaryByParam

05:统计单词数【NOIP2011复赛普及组第二题】

05:统计单词数 总时间限制:  1000ms 内存限制:  65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置.注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样

“金山杯2007逆向分析挑战赛”第一阶段第二题

注:题目来自于以下链接地址: http://www.pediy.com/kssd/ 目录:第13篇 论坛活动 \ 金山杯2007逆向分析挑战赛 \ 第一阶段 \ 第二题 \ 题目 \ [第一阶段 第二题] 题目描述: 己知是一个 PE 格式 EXE 文件,其三个(section)区块的数据文件依次如下:(详见附件)  _text,_rdata,_data 1. 将 _text, _rdata, _data合并成一个 EXE 文件,重建一个 PE 头,一些关键参数,如 EntryPoint,Imp

codejam round1c第二题

前阵子参加了Google的code jam,没有编程功底的人果然过不了第一关,不过事后重新做做还是挺有意思的,例如第一轮第三场的第二题,题目如下: 小明玩个游戏,一开始有N个火车车厢,每个车厢里都有字母,现在要组装火车,要求把所有车厢连在一起组成字符串,这个字符串要求相同的字母只能相邻,问现在有几种组装的方式.例如有三个车厢a,a,ab,组装的方式就有123,213两种. 题目讲完,现在来分析题目,先来考虑一个简单的情况,各个车厢的字母都是不一样的,相互独立,那么这时可拼装的方式一共有N!种,这