c语言刷题——输出图案

news2024/11/17 16:01:10

1.输出用“*”组成的X形图案

题目:请打印用“*”组成的X形图案

描述:

多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。

输出描述:

针对每行输入,输出用“*”组成的X形图案。

示例1

输入:

5

输出:

*   *
 * * 
  *  
 * * 
*   *

 示例2

输入:

6

输出:

*    *
 *  * 
  **  
  ** 
 *  * 
*    *

1.题目分析 

在该题中需要输出用“*”构成的x型图案,我们先在表格*图案上画在表格上以便于分析其中的规律

例如以下是当n为8时在表格里的图案

在以上表格中我们可以看出在紫色线所包围的*横坐标都等于纵坐标 

而在在以上表格中我们可以看出在绿色线所包围的*横坐标+纵坐标=n-1

通过以上分析我们就找出了这个图案的规律,接下来就是代码的实现

2. 代码实现

要输出一个多行多列的项目时我们可以想到使用for循环里面再嵌套一个for循环的方式来实现
1.第一个for循环实现输出行,第二个for循环来实现输出列
2.使用if语句来实现当位置满足以上输出*时在屏幕上打印*
3.使用else语句来实现当不满足输出*时在屏幕上打印空格

以下便是完整的代码

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;
	while(scanf("%d", &n)!=EOF)
	{
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
			{
				if (i == j)
				{
					printf("*");
				}
				else if (i + j == n - 1)
				{
					printf("*");
				}
				else
				{
					printf(" ");
				}
			}
			printf("\n");
		}
	}

	return 0;
}

我们来输入几个不同的n值来程序测试

2.输出用“*”组成的空心正方形图案 

输入描述:

多组输入,一个整数(3~20),表示输出的行数,也表示组成正方形边的“*”的数量。

输出描述:

针对每行输入,输出用“*”组成的“空心”正方形,每个“*”后面有一个空格。

示例1

输入:

4

输出:

* * * * 
*     * 
*     * 
* * * * 

示例2

输入:

5

输出:

* * * * * 
*       * 
*       * 
*       * 
* * * * * 

1.题目分析 

在该题中需要输出用“*”构成的正方形型图案,我们先在表格*图案上画在表格上以便于分析其中的规律

以下是当n等于5时的表格

从以上n=5时的图案可以看出在第一行,第四行,第一列,第四列都有*

所以可以得出该题的规律:当输入n时,在第1行,第n-1行,第1列,第n-列都打印*
其余位置打印空格

2.代码实现

要输出一个多行多列的项目时我们可以想到使用for循环里面再嵌套一个for循环的方式来实现

1.当第1行或者第n-1行或者第1列或者第n-列都打印*
2.其余其他位置打印空格
 

以下是完整的代码

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;
	while(scanf("%d", &n)!=EOF)
	{
		for (int i = 0; i < n; i++)
		{
			for (int j = 0; j < n; j++)
			{
				if (i == 0 || i == n - 1 || j == 0 || j == n - 1)
				{
					printf("* ");
				}
				else
				{
					printf("  ");
				}
			}
			printf("\n");
		}
	}

	return 0;
}

我们来输入几个不同的n值来测试程序

3.输出用“*”组成的菱形图案

 

1.题目分析 

要求输入一个数n(要求n为奇数),输出菱形图案,例如当输入n为13时可以看出这个菱形有13行,13列将这个图形可以将其分成上下两个部分来实现 

1.上部分图案 

 将上半部分放入表格中便于观察,透过以上表格可以发现上半部分图形有7行,若令行为i,列为j,每行前部分空格为7-i,每行*数为2i-1

通过以上分析可以得出上半部分的图案代码

 

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);//输入图案总行数
    int s = (n / 2)+1;
	for (int i = 1; i <= s; i++)
	{
		int j = 0;
		for(j=1;j<=s-i;j++)
		{
			printf(" ");
		}
		for (j = 1; j <= 2 * i - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}

	return 0;
}

1.下部分图案  

 将上半部分放入表格中便于观察,透过以上表格可以发现下半部分图形有6行,若令行为i,列为j,每行前部分空格为i,每行*数为13-2i

以下是输出下半部分图案代码

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
 int n = 0;
 scanf("%d", &n);//输入图案总行数
 int s = (n / 2)+1;
 for (int i = 1; i <= s - 1; i++)
 {
	int j = 0;
	for (j = 1; j <= i; j++)
	{
		printf(" ");
	}
	for (j = 1; j <= n - 2 * i; j++)
	{
		printf("*");
	}
	printf("\n");
 }
	return 0;
}

2.完整代码实现

题目中要求输入数为奇数,这时我们要用到一个if...else语句,当输入n不为奇数时提示请输入奇数
还需实现多组输入就使用一个while循环,当有输入值时候即scanf返回值不为EOF时进入循环

以下是该程序完整的代码 

#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{   int n = 0;
	while(scanf("%d", &n)!=EOF)//输入图案总行数
	{
        int s = (n / 2)+1;
		if (n % 2 == 1)
		{
			for (int i = 1; i <= s; i++)
			{
				int j = 0;
				for (j = 1; j <= s - i; j++)
				{
					printf(" ");
				}
				for (j = 1; j <= 2 * i - 1; j++)
				{
					printf("*");
				}
				printf("\n");
			}
			for (int i = 1; i <= s - 1; i++)
			{
				int j = 0;
				for (j = 1; j <= i; j++)
				{
					printf(" ");
				}
				for (j = 1; j <= n - 2 * i; j++)
				{
					printf("*");
				}
				printf("\n");
			}
		}
		else
		{
			printf("请输入奇数\n");

		}
	}

	return 0;
}

输入几个值来测试一下程序是否能正常运行

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

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

相关文章

一觉醒来 AI科技圈发生的大小事儿 05月04日

&#x1f4f3;CVPR 2024 Highlight | 基于单曝光压缩成像&#xff0c;不依赖生成模型也能从单张图像中重建三维场景 本文介绍了一种基于单曝光压缩成像&#xff08;SCI&#xff09;系统和神经辐射场&#xff08;NeRF&#xff09;的三维场景拍摄与重建方法&#xff0c;实现了不…

杭电acm2018 母牛的故事 Java解法 经典递归

标准递归题 先模拟 接着找递归出口 再找递归通式 想想看 今天的母牛等于前一天的母牛数加上今天出生的母牛 而三天前的母牛所有母牛都能生一头 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scnew Scanner(System.in);l…

单例、工厂、策略、装饰器设计模式

1. 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a; 单例模式是一种常用的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点。这种模式的特点是类自己负责保存其唯一的实例&#xff0c;并控制其实例化过程。单例模式广泛应用…

(六)SQL系列练习题(下)#CDA学习打卡

目录 三. 查询信息 16&#xff09;检索"1"课程分数小于60&#xff0c;按分数降序排列的学生信息​ 17&#xff09;*按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 18&#xff09;*查询各科成绩最高分、最低分和平均分 19&#xff09;*按各科成绩…

【在线oj系统】02-开发环境版本说明

目录 一、前置环境版本介绍 二、SpringCloud组件停更/替换/更新 服务注册和发现 服务调用和负载均衡 分布式事务 服务熔断和降级 服务链路追踪 服务网关 分布式配置管理 三、客户端版本 一、前置环境版本介绍 使用Cloud的版本决定Boot的版本&#xff0c;SpringCloud的…

【C语言】分支和循环(上)

【C语言】分支和循环&#xff08;上&#xff09; 1、if语句1.2 else1.3分支中包含多条语句1.4嵌套if1.5悬空else问题 2、关系操作符3、条件操作符4、逻辑操作符&#xff1a;与、或、非&#xff08;取反&#xff09;&#xff08;&&&#xff0c;||&#xff0c;&#xff0…

从零开始学AI绘画,万字Stable Diffusion终极教程(五)

【第5期】ControlNet 欢迎来到SD的终极教程&#xff0c;这是我们的第五节课 这套课程分为六节课&#xff0c;会系统性的介绍sd的全部功能&#xff0c;让你打下坚实牢靠的基础 1.SD入门 2.关键词 3.Lora模型 4.图生图 5.controlnet 6.知识补充 在SD里面&#xff0c;想要…

Mysql复习笔记: 基础概念(待补充)

一. 基础概念 通用概念: 网络连接必须得分配给一个线程去进行处理&#xff0c;由一个线程来监听请求以及读取请求数据&#xff0c;比如从网络连接中读取和解析出来一条我们的系统发送过去的SQL语句 在数据库中&#xff0c;哪怕执行一条SQL语句&#xff0c;其实也可以是一个独立…

FLIR LEPTON3.5 热像仪wifi 科研实验测温采集仪

点击查看详情!点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情点击查看详情 1、描述 这是一款桌面科研实验测温热成像多功能热像记录仪&#xff0c;小巧轻便…

【C/C++】

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

## 01深度学习介绍与安装PyTorch

文章目录 深度学习的发展历史和基本概念早期历史兴起与发展基本概念 如何安装和设置PyTorch环境系统要求安装步骤验证安装 结语 深度学习的发展历史和基本概念 深度学习&#xff0c;一种通过使用具有多层结构的神经网络来学习数据的复杂模型的机器学习技术&#xff0c;近年来已…

Scikit是什么?

目录 一、Scikit是什么&#xff1f; 二、用Scikit做一个简单房价预测例子 三、sklearn知识点 一、Scikit是什么&#xff1f; Scikit就是scikit-learn&#xff0c;是一个免费软件机器学习库。 https://scikit-learn.org/stable/https://scikit-learn.org/stable/ 用于预测数…

ubuntu20配置深度学习环境

目录 系统环境安装anaconda文件的安装anaconda环境配置anaconda换中科大源常用的anaconda命令 安装显卡驱动安装CUDA下载cudnn安装pytorch更换conda源选择对应的pytorch版本进行安装 系统环境 ubuntu20&#xff0c;安装了ros noetic。 参考博客主要有&#xff1a; https://g…

【Spring】JdbcTemplate

JdbcTemplate 是 Spring 提供的一个 JDBC 模板类&#xff0c;是对 JDBC 的封装&#xff0c;简化 JDBC 代码 也可以让 Spring 集成其它的 ORM 框架&#xff0c;例如&#xff1a;MyBatis、Hibernate 等 使用 JdbcTemplate 完成增删改查 一、环境准备 数据库&#xff1a; 准备…

C++相关概念和易错语法(11)(npos、string的基本使用)

本文主要是分享一些基础的用法和接口&#xff0c;不会涉及迭代器版本&#xff0c;也没有底层概念&#xff0c;主要是保证简单入门和使用。 1.npos string本质上是一个类&#xff0c;里面包含了上百个成员函数&#xff0c;在调用这个头文件后&#xff0c;我们要知道整个类都被…

OpenCV 为轮廓创建边界框和圆(62)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV检测凸包(61) 下一篇 :OpenCV如何为等值线创建边界旋转框和椭圆(62) ​ 目标 在本教程中&#xff0c;您将学习如何&#xff1a; 使用 OpenCV 函数 cv::boundingRect使用 OpenCV 函数 cv::mi…

foobar2000 for Mac:卓越音乐播放器

当您在寻找一款音质卓越、功能丰富的音频播放器时&#xff0c;foobar2000 for Mac无疑是您的首选。它拥有简洁明了的界面设计&#xff0c;易于上手&#xff0c;同时支持多种音频格式&#xff0c;让您无需担心兼容性问题。 foobar2000 for Mac v2.6.4免激活版下载 foobar2000 fo…

P6周人脸识别

一、前期准备 1.设置GPU import torch import torch.nn as nn import torchvision.transforms as transforms import torchvision from torchvision import transforms, datasets import os,PIL,pathlib,warningswarnings.filterwarnings("ignore") #忽…

SQL:NOT IN与NOT EXISTS不等价

在对SQL语句进行性能优化时&#xff0c;经常用到一个技巧是将IN改写成EXISTS&#xff0c;这是等价改写&#xff0c;并没有什么问题。问题在于&#xff0c;将NOT IN改写成NOT EXISTS时&#xff0c;结果未必一样。 目录 一、举例验证二、三值逻辑简述三、附录&#xff1a;用到的S…

SpringBoot自定义定时任务

通常&#xff0c;在我们的项目中需要定时给前台发送一些提示性消息或者我们想要的定时信息&#xff0c;这个时候就需要使用定时任务来实现这一功能&#xff0c;实现也很简单&#xff0c;接下来具体来看看吧~ 简单定时任务 首先&#xff0c;你需要在你的启动类上加上开启定时任…