pta编程总结
币值转换 (20 分)
输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。
输入格式:
输入在一行中给出一个不超过9位的非负整数。
输出格式:
在一行中输出转换后的结果。注意“零”的用法必须符合中文习惯。
1.实验代码
include<stdio.h>
include<string.h>
int main(void)
{
char s[10];
int l,len,i,j;
gets(s);
len=strlen(s);
l=len;
if(len==1&&s[0]=='0')
printf("a");
for(i=0;i<len;i++,l--)
{
char c=s[i];
switch(c)
{
case '0':c='a';break;
case '1':c='b';break;
case '2':c='c';break;
case '3':c='d';break;
case '4':c='e';break;
case '5':c='f';break;
case '6':c='g';break;
case '7':c='h';break;
case '8':c='i';break;
case '9':c='j';break;
default:break;
}
if(c=='a')
{
if(l==5)
{
if(s[i-1]!='0'||s[i-2]!='0'||s[i-3]!='0')
printf("W");
}
else
{
for(i++,l--;i<len;i++,l--)
{
if(s[i]=='0')
{
if(l==5)
{
if(s[i-1]!='0'||s[i-2]!='0'||s[i-3]!='0')
printf("W");
}
}
else
{
printf("a");
i--;
l++;
break;
}
}
}
}
else
{
printf("%c",c);
switch(l)
{
case 9:printf("Y");break;
case 8:printf("Q");break;
case 7:printf("B");break;
case 6:printf("S");break;
case 5:printf("W");break;
case 4:printf("Q");break;
case 3:printf("B");break;
case 2:printf("S");break;
default:break;
}
}
}
return 0;
}
2.设计思路
第一步:因为题中出现需要把现实中所用的替换成编号,由以前所学调运switch语句。
第二步:由题中出现需要表达的数字,调用字符。
第三步:按题中对0的要求,结合实际,编写代码。
3.遇到的问题
问题一:主要是对于题中0的要求理解不到位,导致编译过程的缺失。
解决方法:不断调试,与同学讨论,请教同学。
问题二:对于数组知识的陌生,导致编译困难。
解决方法:请教同学弄清所要运用的知识点,再上网学习,再编写。
pta编程总结的更多相关文章
- pta 编程题20 旅游规划
其它pta数据结构编程题请参见:pta 题目 这个最短路径问题只需要求两点之间的最短路径,因而在Dijikstra算法中当求出目标点的最短路径之后跳出循环即可. #include <iostre ...
- pta 编程题21 公路村村通
其它pta数据结构编程题请参见:pta 题目 这道题考察最小生成树问题,用的是Prim算法. 和Dijkstra算法相比,没有了collect数组,因为dist[v] == 0就代表v被已收录. #i ...
- pta编程题19 Saving James Bond 2
其它pta数据结构编程题请参见:pta 题目 和简单版本不同的是,简单版本只需判断能否到达岸边,而这个版本要求求出最少跳数的路径. 简单版本用dfs实现,而这道题用BFS实现. 注意: 岛半径为7.5 ...
- pta 编程题16 Saving James Bond - Easy Version
其它pta数据结构编程题请参见:pta 题目 主要用到了深度优先搜索. #include <iostream> using namespace std; struct Vertex { i ...
- pta 编程题15 列出连通集
其它pta数据结构编程题请参见:pta 题目 题目要求分别以深度优先搜索和广度优先搜索输出图的连通集. 广度优先搜索要用到队列,先回顾一下循环队列: struct QNode { int* Data; ...
- pta 编程题14 Huffman Codes
其它pta数据结构编程题请参见:pta 题目 题目给出一组字母和每个字母的频数,因为哈夫曼编码不唯一,然后给出几组编码,因为哈夫曼编码不唯一,所以让你判断这些编码是否符合是哈夫曼编码的一种. 解题思路 ...
- pta 编程题13 File Transfer
其它pta数据结构编程题请参见:pta 这道题考察的是union-find并查集. 开始把数组中每个元素初始化为-1,代表没有父节点.为了使树更加平衡,可以让每一个连通分量的树根的负值代表这个连通分量 ...
- pta 编程题12 堆中的路径
其它pta数据结构编程题请参见:pta 这道题考察的是最小堆. 堆是一个完全二叉树,因此可用数组表示,一个下标为 i 的结点的父节点下标为 i / 2,子结点下标为 2i 和 2i + 1. 插入元素 ...
- pta 编程题10 Root of AVL Tree
其它pta数据结构编程题请参见:pta 这道题考察平衡二叉查找树的插入. 为了保证二叉查找树的平衡,当一个结点的左右子树的高度差大于1时就要进行调整. 分为以下四种情况: 插入新节点后,以及旋转之后, ...
- pta 编程题8 Tree Traversals Again
其它pta数据结构编程题请参见:pta 这次的作业考察的是树的遍历. 题目的输入通过栈的pop给出了树的中序遍历的顺序.根据push和pop的顺序构造树的方法为:定义一个变量father来确定父节点, ...
随机推荐
- 新手入门django本地化服务
自动化安装 #更新依赖库 pip install --upgrade setuptools #安装指定的版本 pip install Django==2.0.4 文 ...
- pyhon 模块 IP/端口 扫描
用到了python-nmap模块(注意是 python-nmap模块 不是nmap模块 且不要安装nmap模块!!!!) windows 中还需要下载一个 nmap 软件: 下载地址: https:/ ...
- vim简单使用教程【转】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- sed追加文本-sed脚本追加文本
input为sed输入文件,内容如下: [root@node1 gitlab-test-]# cat inppu.txt aa bb cc dd 追加文本: 1.匹配 aa 行之后追加文本 We a ...
- vue-cli3.0 项目如何使用sass
执行: npm install node-sass --save-dev npm install sass-loader --save-dev 自动安装sass,vue-cli3.0 不需要在 web ...
- 【easy】27. Remove Element
删除等于n的数,并返回剩余元素个数 Given nums = [3,2,2,3], val = 3, Your function should return length = 2, with the ...
- linux 系统调用sysconf【总结】
1.前言 当前计算机都是多核的,linux2.6提供了进程绑定cpu功能,将进程指定到某个core上执行,方便管理进程.linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数 ...
- Apache JMeter压力测试实例
脚本录制 脚本录制,JMeter启用WEB代理,浏览器把代理上网设置为JMeter所在的IP地址,自己电脑就是127.0.0.1代理端口默认8080.至于浏览器修改代理上网服务器,不做截图. Jmet ...
- canvas图片与img图片的相互转换
最近在一个项目中,遇到了一个问题,需要把生成的canvas形式的二维码转换为图片,可以长按识别,保存等.查找了一些资料归纳总结了一些知识. 默认在jq库里进行,引入jquery.qrcode.min. ...
- 原生javascript实现阻止浏览器默认行为与阻止事件冒泡
不同的浏览器之间存在兼容问题,在IE与标准浏览器之间存在很大的差异,所以在实现阻止浏览器默认行为和阻止事件冒泡就要考虑要它们之间的不同 /** * 取消冒泡 * @param {事件} e */ fu ...