C语言—九九乘法表中文版

文章目录

  • 前言
  • 一、实现方案


前言

这是C语言—九九乘法表中文版,本来不想写这篇的,但是全网搜索,关于中文版的实在太少了,且不全面,所以就有了这篇博客。

`

一、实现方案

两种方法——字符数组与指针数组

/*法一:用俩相邻字符数组里的元素表示一个字*/
#include <stdio.h>
int main(void)
{
	char num[] = { "十一二三四五六七八九" };
	printf("%c%c", num[2 * 5], num[2 * 5 + 1]);
	printf("%c%c", num[2 * 1], num[2 * 1 + 1]);
	return 0;
}

/*法二:定义指针数组*/
char *p[10] = {"十", "一", "二", "三", "四", "五", "六", "七", "八", "九"};//定义指针数组,存放十个数字
printf("%s%s", p[n], p[m]);

代码实现

/*法一*/
#include<stdio.h>

void print_num(int m, int n)
{
	char num[] = { "十一二三四五六七八九" };
	printf("%c%c", num[2 * m], num[2 * m + 1]);
	printf("%c%c", num[2 * n], num[2 * n + 1]);
	if (m * n < 10) 
	{//一位
		printf("得");
		printf("%c%c", num[2 * m * n], num[2 * m * n + 1]);
	}
	else if (m* n >= 10 && m * n < 100)
	{//两位
		printf("%c%c", num[2 * (m * n / 10)], num[2 * (m * n / 10) + 1]);
		printf("%c%c", num[0], num[1]);//十
		if (m * n % 10 != 0)
		{
			printf("%c%c", num[2 * (m * n % 10)], num[2 * (m * n % 10) + 1]);
		}
	}
	printf(" ");
}

void test1()
{
	int i, j;
	for (i = 1; i < 10; i++)
	{
		for (j = 1; j <= i; j++) 
		{
			print_num(j, i);
		}
		printf("\n");
	}
}

int main() 
{
	test1();
	return 0;
}

---------------------------------------------------------------------------


```/*法二*/
#include <stdio.h>

void print_num(int n, int m)
{
	char *p[10] = {"十", "一", "二", "三", "四", "五", "六", "七", "八", "九"};//定义指针数组,存放十个数字
	printf("%s%s", p[n], p[m]);
	if (m * n < 10)//如果乘积小于十,那么就为**得*
	{
		printf("得");
		printf("%s", p[m * n]);
	}
	else if (m * n >= 10 && m * n < 100)//如果乘积大于十,那就为**一十或者是*****(九九八十一)
	{
		printf("%s", p[m * n / 10]);
		printf("%s", p[0]);
		if (0 != m * n % 10)//区分**一十还是*****(九九八十一)的情况
		{
			printf("%s", p[m * n % 10]);
		}
	}

	printf(" ");//本来想用水平制表符,但是在比较窄的黑框上可能会出现被迫换行的情况,不好看,就作罢了

}

int main(void)
{
	for (int i = 1; i < 10; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			print_num(j, i);//一二得二,二二得四,固定第二个数字不动,变化第一个数字
		}

		printf("\n");//每写完一行便换行
	}
	return 0;
}


我是小桃子,我爱这个世界。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值