文章目录
- 前言
- 一、实现方案
前言
这是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;
}
我是小桃子,我爱这个世界。