C语言打印九九乘法表的多种方式&多种形式(完整,左上,左下,右上,右下)

  • 📢博客主页:肩匣与橘
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由肩匣与橘编写,首发于CSDN🙉
  • 📢生活依旧是美好而又温柔的,你也是✨ 

9️⃣9️⃣乘法表

🗨️前言

1️⃣完整型

2️⃣左上三角型

3️⃣左下三角型

3.1 for-for

3.2 while-while

3.3 while-for

3.4 for-while

3.5 定义变量

3.6 递归

4️⃣右上三角型

5️⃣右下三角型


🗨️前言

        九九乘法表是我们从小学就开始学习的基础数学知识,不仅是学习数学时必须要掌握的基础知识之一,也是日常生活中常见的计算方法。而在学习编程的过程中,能够打印九九乘法表同样是必须要掌握的基础知识之一。本文将结合C语言的基础知识,通过多种方式实现打印九九乘法表的多种形式,望大家加深对循环语句的理解的同时,进一步可以提高自己的编程能力。

1️⃣完整型

       完整代码:

#include<stdio.h>
int main()
{
	int i,j;
	
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=9;j++)
		{
			printf("%d*%d=%2d\t",i,j,i*j);
		}
		printf("\n");
	}
	return 0;
}

       这段代码中,我们使用了两层循环语句来实现完整的99乘法表。外层循环控制乘数i的取值范围,从1到9,内层循环控制乘数j的取值范围,从1到9。在每次内层循环中,我们使用printf函数输出乘法表的一项,其中%d表示整数占位符,%d*%d=%2d表示输出的格式。

       %2d表示输出一个整数,占用两个字符的位置,如果该整数不足两个字符,则在前面加上空格进行补齐,\t表示输出一个制表符,用于在控制台中进行对齐。在输出一项乘法表后,我们使用printf函数的转义字符"\n"来输出一个换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

2️⃣左上三角型

       完整代码:

#include<stdio.h>
int main() {
	int i,j;
	for(i=1; i<=9; i++) {
		for(j=1; j<=9; j++) {
			if(j>=i)
				printf("%d*%d=%2d  ",i,j,i*j);
		}
		printf("\n");
	}
	return 0;
}

       这段代码中,我们使用了两层循环语句来实现完整的99乘法表。外层循环控制乘数i的取值范围,从1到9,内层循环控制乘数j的取值范围,从1到9。在每次内层循环中,进行i和j的比较,j大于等于i时,我们使用printf函数输出乘法表的一项,其中%d表示整数占位符,%d*%d=%2d表示输出的格式。

       %2d表示输出一个整数,占用两个字符的位置,如果该整数不足两个字符,则在前面加上空格进行补齐,在输出一项乘法表后,我们使用printf函数的转义字符"\n"来输出一个换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

3️⃣左下三角型

3.1 for-for

       完整代码:

#include <stdio.h>
int main() {
    int i, j;
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= i; j++) {
            printf("%dx%d=%d\t", j, i, i * j);
        }
        printf("\n");
    }
    return 0;
}

       这段代码中,我们使用了两个for循环,外层循环控制被乘数i的取值范围,从1到9;内层循环控制乘数j的取值范围,从1到i。在每次内层循环中,使用printf函数输出当前的乘法表项,其中%d 表示输出整数,\t表示输出制表符,使每个乘法表项都占用固定的宽度;使用 \n输出换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

3.2 while-while

       完整代码:

#include <stdio.h>
int main() {
    int i = 1;
    while (i <= 9) {
        int j = 1;
        while (j <= i) {
            printf("%d*%d=%d\t", i, j, i * j);
            j += 1;
        }
        printf("\n");
        i += 1;
    }
    return 0;
}

       这段代码中,我们使用了两个 while 循环,外层循环控制被乘数 i 的取值范围,从 1 到 9;内层循环控制乘数 j 的取值范围,从 1 到 i。在每次内层循环中,使用 printf 函数输出当前的乘法表项,其中 %d 表示输出整数,\t 表示输出制表符,使每个乘法表项都占用固定的宽度;使用 \n 输出换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

3.3 while-for

       完整代码:

#include <stdio.h>
int main() {
    int i = 1;
    while (i <= 9) {
        int j;
        for (j = 1; j <= i; j++) { // for循环中的range()函数等价于range(1, i+1)
            printf("%d*%d=%d ", i, j, i * j);
        }
        printf("\n");
        i += 1;
    }
    return 0;
}

       这段代码中,我们使用了一个 while 循环和一个 for 循环,外层循环控制被乘数 i 的取值范围,从 1 到 9;内层循环控制乘数 j 的取值范围,从 1 到 i。在每次内层循环中,使用 printf 函数输出当前的乘法表项,其中 %d 表示输出整数,空格表示乘法表项之间的分隔符,使用 \n 输出换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

3.4 for-while

       完整代码:

#include <stdio.h>
int main() {
    int i, j;
    for (i = 1; i <= 9; i++) {
        j = 0;
        while (j < i) {
            j += 1;
            printf("%d*%d=%d ", i, j, i * j);
        }
        printf("\n");
    }
    return 0;
}

       这段代码中,我们使用了一个 for 循环和一个 while 循环,外层循环控制被乘数 i 的取值范围,从 1 到 9;内层循环控制乘数 j 的取值范围,从 1 到 i。在每次内层循环中,使用 printf 函数输出当前的乘法表项,其中 %d 表示输出整数,空格表示乘法表项之间的分隔符,使用 \n 输出换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

3.5 定义变量

       完整代码:

#include <stdio.h>
int main() {
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int i, j;
    for (i = 0; i < 9; i++) {
        j = 1;
        while (j <= a[i]) {
            printf("%d*%d=%-3d", a[i], j, a[i] * j);
            j += 1;
        }
        printf("\n");
    }
    return 0;
}

       这段代码中,我们使用了一个 for 循环和一个 while 循环,外层循环控制被乘数 i 的取值范围,从 1 到 9;内层循环控制乘数 j 的取值范围,从 1 到 i。在每次内层循环中,使用 printf 函数输出当前的乘法表项,其中 %d 表示输出整数,%-3d 表示输出整数并占据 3 个字符的宽度,且从左边对齐,\t 表示乘法表项之间的分隔符,使用 \n 输出换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

3.6 递归

       完整代码:

#include <stdio.h>
void multiplication(int n);
int main() {
    multiplication(1);
    return 0;
}
void multiplication(int n) {
    int m;
    if (n < 10) {
        for (m = 1; m <= n; m++) {
            printf("%d*%d=%-3d", m, n, m * n);
        }
        printf("\n");
        multiplication(n + 1);
    }
}

       这段代码中,我们使用了一个递归函数 multiplication,函数中使用了一个 for 循环来输出每一行乘法表中的所有项,并将函数自身递归调用来输出下一行乘法表。在输出乘法表项时,使用 printf 函数输出当前的乘法表项,其中 %d 表示输出整数,%-3d 表示输出整数并占据 3 个字符的宽度,且从左边对齐,\t 表示乘法表项之间的分隔符,使用 \n 输出换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

4️⃣右上三角型

       完整代码:

#include<stdio.h>
int main() {
	int i,j;
	for(i=1; i<=9; i++) {
		for(j=1; j<=9; j++) {
			if(j<i)
				printf("\t");
			else
				printf("%d*%d=%2d  ",i,j,i*j); 
		}
		printf("\n");
	}
	return 0;
}

       这段代码中,我们使用了两个 for 循环来控制输出的行数和列数,并使用了 if 语句来控制输出的格式和内容。在输出乘法表项时,使用 printf 函数输出当前的乘法表项,其中 %d 表示输出整数,%2d 表示输出整数并占据 2 个字符的宽度,且从右边对齐,\t 表示乘法表项之间的分隔符,使用 \n 输出换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:

5️⃣右下三角型

       完整代码:

#include<stdio.h>
int main() {
	int i,j;
	
	for(i=1; i<=9; i++) {
		for(j=1; j<=9-i; j++) {
			printf("\t");
		}
		for(j=1; j<=i; j++)
			printf("%d*%d=%2d  ",i,j,i*j);

		printf("\n");
	}
	return 0;
}

       这段代码中,我们使用了两个 for 循环来控制输出的行数和列数,并使用了 printf 函数来输出每一项乘法表项。在输出乘法表项时,使用 printf 函数输出当前的乘法表项,其中 %d 表示输出整数,%2d 表示输出整数并占据 2 个字符的宽度,且从右边对齐,\t 表示乘法表项之间的分隔符,使用 \n 输出换行符,从而将下一行乘法表的第一个数放在新的一行。

       运行结果:


       总之,九九乘法表主要是使用不同的循环结构、条件语句和输出格式进行实现,多加练习可以更加熟悉C 语言的基本语法和控制结构,还可以加深了对循环和条件语句的理解。

  • 71
    点赞
  • 187
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
好的,您的问题是关于使用C语言实现点击触摸屏四个区域读取坐标并显示不同bmp格式图片,并实现图片切换的花式效果。 以下是一个简单的示例代码,实现了上述功能: ```c #include <stdio.h> #include "bmp.h" // 自定义bmp文件解析库 // 定义触摸屏四个区域的坐标范围 #define LEFT_TOP_X 0 #define LEFT_TOP_Y 0 #define LEFT_BOTTOM_X 0 #define LEFT_BOTTOM_Y 480 #define RIGHT_TOP_X 800 #define RIGHT_TOP_Y 0 #define RIGHT_BOTTOM_X 800 #define RIGHT_BOTTOM_Y 480 // 定义四幅不同的bmp图片路径 #define BMP_PATH_1 "image1.bmp" #define BMP_PATH_2 "image2.bmp" #define BMP_PATH_3 "image3.bmp" #define BMP_PATH_4 "image4.bmp" // 定义图片切换效果类型 typedef enum { DROP, // 掉落效果 SCROLL, // 滚动进入效果 // ... } DisplayEffect; // 显示指定的bmp图片,并使用指定的效果 void display_bmp_with_effect(const char* bmp_path, DisplayEffect effect); int main() { // 初始化触摸屏,读取坐标 int x = read_touch_screen_x(); int y = read_touch_screen_y(); // 判断坐标是否在左上区域 if (x >= LEFT_TOP_X && x <= RIGHT_TOP_X && y >= LEFT_TOP_Y && y <= LEFT_BOTTOM_Y) { // 显示图片1,使用掉落效果 display_bmp_with_effect(BMP_PATH_1, DROP); } // 判断坐标是否在左下区域 else if (x >= LEFT_BOTTOM_X && x <= RIGHT_BOTTOM_X && y >= LEFT_BOTTOM_Y && y <= RIGHT_BOTTOM_Y) { // 显示图片2,使用滚动进入效果 display_bmp_with_effect(BMP_PATH_2, SCROLL); } // 判断坐标是否在右上区域 else if (x >= RIGHT_TOP_X && x <= RIGHT_BOTTOM_X && y >= LEFT_TOP_Y && y <= RIGHT_TOP_Y) { // 显示图片3,使用其他效果 // ... } // 判断坐标是否在右下区域 else if (x >= RIGHT_TOP_X && x <= RIGHT_BOTTOM_X && y >= RIGHT_TOP_Y && y <= RIGHT_BOTTOM_Y) { // 显示图片4,使用其他效果 // ... } return 0; } void display_bmp_with_effect(const char* bmp_path, DisplayEffect effect) { // 解析bmp文件 bmp_t bmp; parse_bmp_file(bmp_path, &bmp); // 根据效果类型进行显示 switch (effect) { case DROP: // 实现掉落效果 // ... break; case SCROLL: // 实现滚动进入效果 // ... break; // ... } // 显示bmp图片 show_bmp(&bmp); // 释放bmp内存 free_bmp(&bmp); } ``` 需要注意的是,以上代码只是一个简单的示例,具体实现需要根据硬件和软件环境进行调整和优化。其中,`bmp.h`是自定义的bmp文件解析库,您需要自己实现或者使用其他现成的库。另外,显示效果的实现也需要根据具体的需求进行选择和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肩匣与橘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值