C语言打印各种图案合集

2023-11-08

1.C语言打印菱形图案

题目描述:​

输入一个正整数 n,并输出一个菱形,这个菱形有 2n−1 行,第一行有 2 个字母 A,之后的 n−1 行每行字母 A 的数量会递增 2 个,后面的 n+1 行至 2n−1 行,每行字母 A 的数量会递减 2 个,同时,我们需要在每行前输出一定数量的空格,以保证菱形居中,注意末尾不要有多余的输出。

输入格式:

		输入一个正整数 n。(0<n<40)

输出格式:

样例输入:2

样例输出: 
				AA
			   AAAA
			    AA
样例输入:3

样例输出:
				  AA
				 AAAA
				AAAAAA
				 AAAA
				  AA

案例分析:

首先菱形有2n-1行,在这里我们先只看前n行,先实现前n行的打印,然后后面对称输出即可。
分析:第1行有2个字母A,第2行4个,第3行6个,第j行就有2j个,仔细观察会发现第j行会先打印 n - j 个空格,然后在打印2j个字母 A ,最后换行,这样这一行的输出就完成了。

前n行输出打印实现:

#include<stdio.h>
int main(){
	int n;
	int i,j,k; 
	scanf("%d",&n);//输入n
	for(i = 1; i <= n; i++){//表示从第1行到第n行
		for(j = 1; j <= n-i; j++){//从第1列开始,这一行需要打印 n-i 个空格 
			printf(" ");
		}
		for(k = 1; k <= 2*i; k++){//实现打印每一行需要打印的字符数量
			printf("A");
		}
		printf("\n");//每打印完成一行则换行
	}
	return 0;
}

运行结果:

在这里插入图片描述

n+1–2*n-1行的打印实现:

我们会发现第k行打印的空格数量为 k - n,每一行需要打印的字符数量则为 2*n - 2*(i - n)个//这里是从第n+1行开始,每一行都比第n行少了2*(i-n)个字符。

n+1行—2*n行打印实现代码:

for(i = n+1; i <= 2*n-1; i++){//表示从第n+1--2*n+1行
	for(j = 1; j <= i-n; j++){//从第一列开始,打印 i - n 个空格	
		printf(" ");
	}
	for(k = 1; k <= 4*n-2*i; k++){//打印每一行的字符数量
		printf("A");
	}
	printf("\n");//每打印一行换行
}

总代码实现:

#include<stdio.h>
int main(){
	int n;
	int i,j,k; 
	scanf("%d",&n);//输入n
	for(i = 1; i <= n; i++){//表示从第1行到第n行
		for(j = 1; j <= n-i; j++){//实现每一行需要打印的空格数量
			printf(" ");
		}
		for(k = 1; k <= 2*i; k++){//实现打印每一行需要打印的字符数量
			printf("A");
		}
		printf("\n");//每打印完成一行则换行
	}
	for(i = n+1; i <= 2*n-1; i++){//表示从第n+1--2*n+1行
		for(j = 1; j <= i-n; j++){//从第一列开始,打印 i - n 个空格	
			printf(" ");
		}
		for(k = 1; k <= 4*n-2*i; k++){//打印每一行的字符数量
			printf("A");
		}
		printf("\n");//每打印一行换行
	}
	return 0;
}

运行结果:

在这里插入图片描述

2.打印沙漏型图案

题目描述:

输入一个正整数 n,并输出一个沙漏形,这个沙漏形有 2n+1 行,第一行有 2n+1 个字母,其中前 n+1 个字符是从 A 开始依次递增的,而后 n 个字符是由第 n+1 个字符开始依次递减的。之后的 n行每行会少头尾两个字母。再之后的 n 行则正好是前 n 行反过来输出的结果。注意末尾不要有多余的输出。

输入: 输入一个正整数 n(0<n<26)

输出:按照样例输出

样例输入:

  2 

样例输出:

 ABCBA  
  BCB  
   C 
  BCB 
 ABCBA

案例分析:

首先我们分析每一行的字符数 ,第一行有2n+1个字符,之后每一行都会比自己所在行的上一行少两个字符,所以第k行比第一行少了 (k-1) * 2 个字符,第k行就会有2n-1-2*(k-1) 个字符;
然后,第一行打印了0个空格,第二行1个,三行2个,…第k行就是k-1个;
其次就是打印的字符从什么开始,第一行从‘A’,第二行‘B’,…第k行就是 A+(k-1); ( k < 27)

代码实现:

for(i = 0; i <= n; i++){
		for(j = 1; j <= k-1; j++){
			printf(" ");
		}//打印每一行的空格数量
		for(j = k-1; j <= n; j++){
			printf("%c",symbol+j);
		}//打印每一行前n个字符
		for(j = n-1; j >= k-1; j-- ){
			printf("%c",symbol+j);
		}//打印每一行(n+1)-(2*n+1)个字符
		printf("\n");//打印一行换行
		k++;
	}

运行结果:

在这里插入图片描述

(n+1)-(2*n+1)行代码实现:

k = n;
for(i = 2; i <= n+1; i++){//后面只有n-1行代码,把第n+1行看成第2行,从这一行开始
	for(j = 1; j <= k-1; j++){
		printf(" ");//k=n,第k行比第n行少机就打印几个空格
	}
	for(j = k-1; j <= n; j++){
		printf("%c",symbol+j);//打印每一行的前n个字符
	}
	for(j = n-1; j >= k-1; j--){
		printf("%c",symbol+j);//打印每一行(n+1)-(2*n+1)个字符
	}
	printf("\n");
	k--;
}

总代码:

#include<stdio.h>
int main(int argc,char *argv[]){
	int n;
	int i,j,k = 1;
	char symbol = 'A';
	scanf("%d",&n);
	for(i = 0; i <= n; i++){
		for(j = 1; j <= k-1; j++){
			printf(" ");
		}
		for(j = k-1; j <= n; j++){
			printf("%c",symbol+j);
		}
		for(j = n-1; j >= k-1; j-- ){
			printf("%c",symbol+j);
		}
		printf("\n");
		k++;
	}
	k = n;
	for(i = 2; i <= n+1; i++){
		for(j = 1; j <= k-1; j++){
			printf(" ");
		}
		for(j = k-1; j <= n; j++){
			printf("%c",symbol+j);
		}
		for(j = n-1; j >= k-1; j--){
			printf("%c",symbol+j);
		}
		printf("\n");
		k--;
	}
	return 0;
}

运行结果:
在这里插入图片描述
最后创作不易,记得点赞收藏哦!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言打印各种图案合集 的相关文章

随机推荐

  • Flutter中神奇的Builder组件

    经常遇到of这样的方法 却怎么都不可用 google之后找到了正确答案 原答案地址 https stackoverflow com questions 52502498 get current tab of defaulttabcontro
  • WPS以及它的两种方式PIN与PBC的理解

    WPS Wi Fi Protected Setup PBC Push ButtonConfiguration 这个是不需要密码的方式 PIN Personal Information Number 这个是要用密码的方式通常用在电子设备的互通
  • vue2 使用 Sortable 库进行拖拽操作

    一 vue 项目使用 文档地址 https www itxst com sortablejs neuinffi html 1 安装依赖 npm i S vuedraggable 2 vue 文件引入组件 import draggable f
  • Verilog抽象和语言功能

    Verilog模型的不同级别抽象 1 系统级 system level 2 算法级 algorithm level 3 RTL级 register transfer level 以上三种属于行为描述 只有 3 才与逻辑电路有明确的对应关系
  • Java 多线程编程学习笔记(7月16号)

    文章目录 作者信息 前言 一 什么是线程 1 1 进程和线程 1 2 并发和并行 1 3 上下文切换 Context Switch 二 创建线程的三种方式 2 1 概述 2 2 继承Thread类 2 3 实现Runnable接口 2 4
  • 你还在跟客户尬聊?这4个话题帮你打开话茬!

    外贸人员了解到 跟进国外客户的过程漫长而无趣 需要具备耐心和必要技巧 才能获得回报 在跟进客户时 很多人容易紧张 因为害怕触及客户底线而放缓沟通节奏 同时缺乏可以与客户交流的话题 导致跟丢客户的风险增加 因为绝大部分海外客户一年下单几次 所
  • 【C++】流操作的基础

    include stdafx h include
  • Vue3 isRef

    isRef 检查一个对象是否为 ref 包装过的对象 实例
  • Mysql之查看数据库表锁、行锁信息

    测试环境数据库突然连接不上 经过排查因为磁盘空间不足导致Mysql服务无法使用 排查过程中没有直接定位到磁盘空间不足问题 查看了当前数据库连接情况 表锁 行锁等 查看当前线程处理情况 如果不使用full关键字 信息字段中只会显示每个语句的前
  • 微信小程序分享图片给微信好友(如二维码)

    目录 前言 一 使用哪种api 二 对图片的处理需要转化为临时路径 三 Windows端兼容性问题 前言 最近在公司开发一个微信小程序项目 用到的uniapp技术 在分享图片时 查看了uniapp的技术文档 写的还是很粗糙的 说得不太清楚
  • c++ 父类子类继承关于是复制还是共用解析

    假如 父类里面private 有一个int num 子类去继承父类以后 想要访问继承的这个num的话 不能直接访问 因为继承的时候 从逻辑上来说 是复制关系 从内存上讲 其实是共用关系 网上一个人的回答 我感觉继承从逻辑上看是复制 你比如子
  • 前端三剑客 - - HTML、CSS、JavaScript

    我是目录 1 HTML 2 CSS 3 JavaScript 1 HTML 1 简介 html 属于 xml 的一种 遵循 xml 格式 html是网页文件 可以通过html提供页面元素 dom元素 html整体结构是一个树形结构 也叫do
  • 【已解决】Keil5点击Debug Setting软件崩溃解决方法

    MDK5 38中 点击Debug Setting软件退解决方法 Nucleo板自带的ST Link 在MDK中点击Debug Setting 软件崩溃 采用删除与工程文件同名的 UVOPTX 问题依旧 应该是买到盗版的硬件了 采用旧版ST
  • Java 面试之前端相关

    前言 这篇文章包括一些前端题目 包括js jquery vue等等 正文 1 javascript与Java的不同 Java代码必须编译才能执行 而JavaScript不需编译 只需由浏览器解释执行 Java多运行于服务器 而JavaScr
  • 尊重原创,我保证这篇文章为原创作品!

    最近确实太忙 目前在研发一款新产品 博客更新有些慢 不过自己还是会坚持来这里写笔记 对自己的要求 每月至少5篇
  • CCF-CSP 202206-3 角色授权 C++满分题解

    题目链接 计算机软件能力认证考试系统 思路见注释 include
  • Mycat+分库分表

    目录 分库分表 垂直分表 垂直分库 水平分库 水平分表 mycat实操场景 mycat配置 mysql读写分离配置 38条消息 mycat 安装与配置 羽之大公公的博客 CSDN博客 mycat 分库分表 众所周知 单表1000w 库500
  • void*(指针)的类型转换-专讲

    指针是一个特殊的变量 它里面存储的数值被解释成为内存里的一个地址 所以不管你存储的是int指针 float指针 long指针 对于存储指针的内存来说都是分配同样大小的内存的 这也为使用void指针可以存储任意类型的指针打下了基础 但是注意在
  • vivado之初步学习同步FIFO-first word fall through类型Common Clock RAM(1)

    一 设置页面 二 查看波形图 上测试代码 timescale 1ns 1ps module fifo study simulation input sysclk reg 7 0 din 0 reg wr en 0 wire almost f
  • C语言打印各种图案合集

    1 C语言打印菱形图案 题目描述 输入一个正整数 n 并输出一个菱形 这个菱形有 2n 1 行 第一行有 2 个字母 A 之后的 n 1 行每行字母 A 的数量会递增 2 个 后面的 n 1 行至 2n 1 行 每行字母 A 的数量会递减