寒假作业3

这个作业属于哪个课程 2020面向对象程序设计张栋班
这个作业要求在哪里 面向对象程序设计寒假作业3
这个作业的目标 1.继续完成作业二的编程题。2.优化架构,思考代码的拓展性,比如我需要增加其他功能,如选择,循环语句怎么办。3.思考:可以参考现有的编程语言,把这些语言的内容加入。如选择、循环语句、函数、或者扩大数字范围,支持负数等。
作业正文
其它参考文献

编程题

优化

终于把那一长串字符串改掉了,替换为如下函数(emmmmmmmm好像更长了)

void NumberToChn(int numIn, char* buffer)
{
	char* numbers[] = { "零","一","二","三","四","五","六","七", "八", "九" };
	char* units[] = { "","十","百","千" };
	int index = 0;
	int digits[10] = {};
	if (numIn < 0)
	{
		numIn = -numIn;
		strcat(buffer, "负");
	}


	if (numIn == 0)
	{
		strcat(buffer, "零");
	}

	while (numIn != 0)
	{
		digits[index] = numIn % 10;
		numIn /= 10;
		index++;
	}

	int zeroCount = 0;
	for (int i = index - 1; i >= 0; i--)
	{
		if (digits[i] == 0)
		{
			zeroCount++;
		}
		else if (digits[i] == 1)
		{
			if (zeroCount >= 1)
			{
				strcat(buffer, "零");
			}
			if (i == index - 1 && i != 0 || zeroCount >= 1)
			{
				if (index <= 2)
				{
					strcat(buffer, units[i]);
				}
				else
				{
					strcat(buffer, numbers[digits[i]]);
					strcat(buffer, units[i]);
				}
			}
			else
			{
				if (i == 0)
					strcat(buffer, "一");
				else
				{
					strcat(buffer, "一");
					strcat(buffer, units[i]);
				}
			}
			zeroCount = 0;
		}
		else
		{
			if (zeroCount >= 1)
			{
				strcat(buffer, "零");
			}
			strcat(buffer, numbers[digits[i]]);
			strcat(buffer, units[i]);
			zeroCount = 0;
		}
	}
}

拓展

现在支持负数了,且支持运算数字上升到千位了

以下是完整代码

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

struct Var {
	char Name[20] = {};
	int Value = 0;
};

void NumberToChn(int numIn, char* buffer)
{
	char* numbers[] = { "零","一","二","三","四","五","六","七", "八", "九" };
	char* units[] = { "","十","百","千" };
	int index = 0;
	int digits[10] = {};
	if (numIn < 0)
	{
		numIn = -numIn;
		strcat(buffer, "负");
	}


	if (numIn == 0)
	{
		strcat(buffer, "零");
	}

	while (numIn != 0)
	{
		digits[index] = numIn % 10;
		numIn /= 10;
		index++;
	}

	int zeroCount = 0;
	for (int i = index - 1; i >= 0; i--)
	{
		if (digits[i] == 0)
		{
			zeroCount++;
		}
		else if (digits[i] == 1)
		{
			if (zeroCount >= 1)
			{
				strcat(buffer, "零");
			}
			if (i == index - 1 && i != 0 || zeroCount >= 1)
			{
				if (index <= 2)
				{
					strcat(buffer, units[i]);
				}
				else
				{
					strcat(buffer, numbers[digits[i]]);
					strcat(buffer, units[i]);
				}
			}
			else
			{
				if (i == 0)
					strcat(buffer, "一");
				else
				{
					strcat(buffer, "一");
					strcat(buffer, units[i]);
				}
			}
			zeroCount = 0;
		}
		else
		{
			if (zeroCount >= 1)
			{
				strcat(buffer, "零");
			}
			strcat(buffer, numbers[digits[i]]);
			strcat(buffer, units[i]);
			zeroCount = 0;
		}
	}
}

int ChnToNumber(char str[20])
{

	for (int i = -9999; i < 10000; i++)
	{
		char buffer[20] = {};
		NumberToChn(i, buffer);
		if (strcmp(str, buffer) == 0)
		{
			return i;
		}
	}
	return -1;
}


Var Vars[1000] = {};
int VarCount = 0;

int main()
{
	char symbol[30] = {};

	while (scanf("%s", symbol) != EOF)
	{
		if (strcmp(symbol, "整数") == 0)
		{
			char name[20] = {}, op[20] = {}, value[20] = {};
			scanf("%s %s %s", name, op, value);
			VarCount++;
			int val = ChnToNumber(value);
			strcpy(Vars[VarCount - 1].Name, name);
			Vars[VarCount - 1].Value = val;
			printf("创建新变量: %s\n", name);
		}
		else if (strcmp(symbol, "看看") == 0)
		{
			char name[20] = {};
			scanf("%s", name);
			for (int i = 0; i < VarCount; i++)
			{
				if (strcmp(name, Vars[i].Name) == 0)
				{
					char buffer[20] = {};
					NumberToChn(Vars[i].Value, buffer);
					printf("%s 的值为: %s(%d)\n", name, buffer, Vars[i].Value);
					break;
				}
			}
		}
		else
		{
			char op[20] = {}, value[20] = {};
			scanf("%s %s", op, value);
			for (int i = 0; i < VarCount; i++)
			{
				if (strcmp(symbol, Vars[i].Name) == 0)
				{
					if (strcmp(op, "增加") == 0)
					{
						int val = ChnToNumber(value);
						Vars[i].Value += val;
						printf("%s 的值增加了 %s(%d)\n", symbol, value, val);
					}
					else if (strcmp(op, "减少") == 0)
					{

						int val = ChnToNumber(value);
						Vars[i].Value -= val;
						printf("%s 的值减少了 %s(%d)\n", symbol, value, val);
					}
					break;
				}
				if (i == VarCount - 1) printf("错误的输入!请重新输入!\n");
			}
		}
	}

}

posted @ 2020-02-16 20:24  取名难啊  阅读(214)  评论(0)    收藏  举报