PTA编程总结2—币值转换

7-1 币值转换 (20 分)
输入一个整数(位数不超过9位)代表一个人民币值(单位为元),请转换成财务要求的大写中文格式。如23108元,转换后变成“贰万叁仟壹百零捌”元。为了简化输出,用小写英文字母a-j顺序代表大写数字0-9,用S、B、Q、W、Y分别代表拾、百、仟、万、亿。于是23108元应被转换输出为“cWdQbBai”元。

实验代码:


   #include <stdio.h>
#include <string.h>

int main(void)
{
	char date[11];
	int digit = 0;

	gets_s(date,11);
	for (int i = 0; i < 11; i++)
	{
		if (date[i] == '\0') break;
		digit++;
	}
	const int length = digit;
	for (int i = 0; i < length; i++, digit--)
	{
		char c = date[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 (digit == 5)
				printf("W");
			else
			{
				for (i++, digit--; i < length; i++, digit--)
				{
					if (date[i] == '0')
						if (digit == 5)
							printf("W"); 
					else
					{
						printf("a");
						i--;
						digit++;
						break;
					}
				}
			}
		}
		else
		{
			printf("%c", c);
			switch (digit)
			{
			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;
}

设计思路:

本题调试过程碰到问题及解决办法:

遇到的问题:部分正确
解决的办法:通过观察代码,找助教帮忙检查,发现应该先判断0条件。

运行结果截图:

posted @ 2019-02-20 14:44  LILI6  阅读(725)  评论(0编辑  收藏  举报