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

news2024/11/27 21:00:24
  • 📢博客主页:肩匣与橘
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由肩匣与橘编写,首发于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 语言的基本语法和控制结构,还可以加深了对循环和条件语句的理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573144.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习_Lasso回归_ElasticNet回归_PolynomialFeatures算法介绍_02---人工智能工作笔记0037

Lasso回归用的是L1正则化可以看到,这里的alpha就是这里的alpha对吧,就是 L1的权重 然后对于ElasticNet回归来说,这里的alpha可以看到是L1权重的超参数对吧,然后这里的p,表示的是 L2正则里面的(1-p)这里 这里要提一下: L1和L2为什么能防止过拟合,它们有什么区别?通过添加…

使用CNN-LSTM来预测锂离子电池健康状态SOH(附代码)

对于电动汽车而言&#xff0c;动力锂电池的健康状态(State of Health,SOH)估算方法是电池管理系统中非常重要的一个方面。准确估计锂电池老化状态并预测电池剩余寿命对于电动汽车稳定安全运行有着重要的意义。借助数据驱动方法的思想&#xff0c;本文对锂离子电池寿命历史数据进…

【案例实战】SpringBoot整合EasyExcel实现列表导出功能

这篇文章会给大家实操一个关于列表导出成excel表格的功能&#xff0c;相信大家在日常工作中也会遇到列表导出的需求&#xff0c;看完本篇文章那么你就可以轻松的去整合列表导出的功能。 本次使用的导出工具是阿里巴巴开源的EasyExcel&#xff0c;关于EasyExcel我这里简单的介绍…

Nacos使用详解

一、部署nacos 1、方式一&#xff08;一般的windows和linux部署&#xff09; 需要的nacos-server-1.4.1文件&#xff1a;https://download.csdn.net/download/yueyue763184/87822434?spm1001.2014.3001.5503 一般的nacos部署方式教程&#xff1a;https://blog.csdn.net/yue…

敲代码都两年半了,还不会用SDL、C语言rap一个推箱子?

前言 欢迎来到小K的SDL专栏第三小节&#xff0c;本节将为大家带来小项目~C语言SDL版坤坤推箱子详细讲解&#xff0c;这里也为大家上传了源码和图片资源&#xff0c;需要的自取看完以后&#xff0c;希望对你有所帮助 ✨效果如下 文章目录 前言一、推箱子思路讲解二、加SDL绘图代…

离散系统函数零积点分析

离散系统函数零积点分析 在 Matlab中&#xff0c;系统函数的零极点就可以通过函数 roots 得到。 函数的零极点也可以通过函数 tf2zp 获得&#xff0c;其调用格式为&#xff1a;[Z, P, K] tf2zp(B, A)&#xff0c;函数 tf2zp 可以将H(z)的有理分式转换为零极点增益形式&#…

WEB端唤起 百度|腾讯|高德 地图一键导航功能

WEB端唤起 百度|腾讯|高德 地图一键导航功能 目录 腾讯地图&#xff1a; 百度地图&#xff1a; 高德地图&#xff1a; 坐标拾取器&#xff1a; 腾讯地图&#xff1a; 极简写法&#xff1a; https://3gimg.qq.com/lightmap/v1/marker/index.html?markercoord:纬度,经度;t…

工业设备状态监测:振动常见原因分析

在工业生产中&#xff0c;设备的正常运行和可靠性对于保障生产效率和安全至关重要。然而&#xff0c;工业设备在运行过程中常常会出现振动现象&#xff0c;这可能是由于多种原因导致的。 根据设备劣化趋势P-F曲线我们可以知道&#xff0c;振动信号监测是状态监测过程中可以被快…

Markdown编辑器 测试

测试一下TOC 你好Markdown编辑器 你好&#xff01; 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章&#xff0c;了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支…

MongoDB的应用

目录 一、MongoDb是什么 1.特点 2.功能 3.基本的指令 二、MongoDB的使用场景 1.适用场合 2.常见应用场景 三、可能遇到的问题 1.MongoDB是否支持事务&#xff1f; 2.MongoDB大数据迁移怎么做&#xff1f; 3.MongoDB的水平扩展是什么原理&#xff1f; 4.MongoDB出现负…

Jenkins UI与接口自动化测试持续集成实战

篇幅较长&#xff0c;要耐心阅读哦~ 基础知识简要回顾 持续集成、持续交付的好处与产生的必然性Jenkins服务的搭建方法Jenkins节点管理与用户权限Jenkins插件Jenkins父子多任务关联运行Jenkins报警机制 目录 SeleniumUI自动化测试持续集成演练接口自动化测试持续集成演练 …

采埃孚-4D毫米波雷达拆解分析

采埃孚4D毫米波雷达拆解分析 4D毫米波雷达具有4个维度的信息&#xff0c;分别是距离、速度、方向角和高度。下面分析采埃孚再飞凡汽车上的4D毫米波雷达。 4D毫米波雷达共由四部分组成&#xff0c;分别为&#xff1a;数字接口板及结构件、屏蔽罩、发射单元及PCB以及雷达天线罩…

如何在 Linux、Windows 和 Mac 上查找 WiFi 密码?

无线网络已成为我们日常生活中不可或缺的一部分&#xff0c;我们经常需要连接各种WiFi网络。但是&#xff0c;有时我们可能会忘记自己的WiFi密码&#xff0c;或者需要连接到一个以前连接过的网络。在这种情况下&#xff0c;我们可以使用一些方法来查找已连接网络的密码。 本文将…

研报精选230526

目录 【行业230526山西证券】有色金属行业周报&#xff1a;锂价强势反弹回30万元or吨 【行业230526开源证券】食品饮料行业投资策略&#xff1a;消费复苏贯穿全年&#xff0c;结构分化择机布局 【行业230526德邦证券】核电行业深度系列报告&#xff1a;积极安全有序发展核电&am…

8-JDBC 编程

目录 1.数据库编程的必备条件 PS&#xff1a;程序是怎么操作数据库的&#xff1f; 2.什么是JDBC&#xff1f; 2.1.JDBC定义 2.2.JDBC工作原理 3.JDBC使用 3.1.创建项目并添加MySQL驱动包 3.2.使用代码操作数据库 3.2.1.获得数据源 3.2.2.获得连接 3.2.3.获得执行器 …

软考A计划-2022年11月软件设计师下午真题及答案解析

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

【云原生|Kubernetes】06-Pod的生命周期和重启策略

【云原生|Kubernetes】06-Pod的生命周期和重启策略 文章目录 【云原生|Kubernetes】06-Pod的生命周期和重启策略Pod生命周期生命周期Pod的状态Pod子状态 Pod重启策略调试PodPod 停滞在 Pending 状态Pod 停滞在 Waiting 状态Pod 处于 Crashing 或别的不健康状态Pod 处于 Running…

【LeetCode热题100】打卡第4天:寻找两个正序数组的中位数

文章目录 寻找两个正序数组的中位数⛅前言&#x1f512;题目&#x1f511;题解 寻找两个正序数组的中位数 ⛅前言 大家好&#xff0c;我是知识汲取者&#xff0c;欢迎来到我的LeetCode热题100刷题专栏&#xff01; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的…

89.qt qml-WorkerScript多线程使用(无需C++代码)

由于我们自定义Table中需要实现排序,如下图所示: 考虑到如果数据量太大的情况,为了避免主线程阻塞,所以我们添加多线程排序功能,为了方便大家更好学习qml组件,所以学习WorkerScript实现多线程,无需C++ 1.描述 使用 WorkerScript 在新线程中运行操作。这对于在后台运行操…

微信小程序为什么不用HTML5、CSS,自己搞了个WXML、WXSS,很多框架用不了,好处一点不知道?

你在小程序中需要使用HTML5、 CSS来创建页面&#xff0c;那么你一定会碰到一些问题&#xff0c;比如&#xff1a; 1.小程序中的布局没有 JS支持&#xff0c;没有 JS渲染逻辑。 2.没有内置 css&#xff0c;都是靠 JS自己实现的。 3.很多框架不能使用&#xff0c;比如&#xf…