<C语言程序实例>C语言实现菱形输出

article/2025/9/18 1:52:57

<C语言程序实例>C语言实现菱形输出


前言

      这一问题无论是在C语言还是别的编程语言的入门学习中都会遇到,还是比较常见的,要学一下的。


一、菱形

    我们先要看一下我们要输出的菱形是什么样子的。这里举一个例子简单说明一下:
在这里插入图片描述
    大家首先要知道一点的是,我们要输出的菱形,星号的总行数一定是奇数。
偶数的话,输出的样子根本就不是标准菱形的样子。
    其次就是,我们在编写程序时,是将这个菱形拆分为上下两个部分进行输出的,即上层的正三角和下层的倒三角。并且我看到有些人会讨论中间最长的星号行,应该属于上层,还是下层,但其实这都不影响。
    我们就拿如图的菱形进行举例,我们可以发现,每一层星号距离左边的空格的个数都等于:5-行号(即5-1;5-2;…);而星号的个数则为:2*行号-1;这样我们就发现了输出的规律。下层在实用此规律的基础上,只不过是上层的逆输出。这是我的一种简单的思维方式。
        还有一种思维方式,可以向大家介绍:

设菱形的总行数为line,总列数为column,当前行为i,当前列为j。上半部分与下半部分的规律不一样,应该分开讨论。

我们着眼于星号,思考什么条件下输出星号,总结出如下的规律。

1) 对于上半部分(包括中间一行),当前行与当前列满足如下关系输出星号:
j>=(column+1)/2-(i-1) (column+1)/2-(i-1)为第i行最左边的星号
j<=(column+1)/2+(i-1) (column+1)/2+(i-1)为第i行最右边的星号

2) 对于下半部分,当前行与当前列满足如下关系输出星号:
j>=(column+1)/2-(line-i) (column+1)/2-(line-i)为第i行最左边的星号
j<=(column+1)/2+(line-i) (column+1)/2+(line-i)为第i行最右边的星号

不满足上述条件,则输出空格。

二、代码实现

1.简单化实现方法

代码如下(不适用于长多行的菱形输出):

/* 这里输出的就是我们上面图中的菱形,上层为5,下层为4*/
#include "stdio.h"
void main()
{int i,j;for(i=1;i<=5;i++)//这里的5是指上层行数,根据具体题目要求可进行改变{for(j=1;j<=5-i;j++){printf(" ");}for(j=1;j<=2*i-1;j++){printf("*");}	printf("\n");}/*****************************************************************/for(i=4;i>=1;i--)//这里的4是指下层行数,根据具体题目要求可进行改变{for(j=1;j<=5-i;j++){printf(" ");}for(j=1;j<=2*i-1;j++){printf("*");}printf("\n");}
}

2.通用性实现方法

代码如下,可根据所要的行数进行打印:

#include <stdio.h>
#include <stdlib.h>int main(){int line;  // 菱形总行数int column;  // 菱形总列数int i;  // 当前行int j;  // 当前列printf("请输入菱形的行数(奇数):");scanf("%d", &line);if(line%2==0){  // 判断是否是奇数printf("必须输入奇数!\n");exit(1);}column = line;  // 总行数和总列数相同for(i=1; i<=line; i++){  // 遍历所有行if(i<(line+1)/2+1){  // 上半部分(包括中间一行)for(j=1; j<=column; j++){  // 遍历上半部分的所有列if( (column+1)/2-(i-1)<=j && j<=(column+1)/2+(i-1) ){printf("*");}else{printf(" ");}}}else{  // 下半部分for(j=1; j<=column; j++){  // 遍历下半部分的所有列if( (column+1)/2-(line-i)<=j && j<=(column+1)/2+(line-i) ){printf("*");}else{printf(" ");}}}printf("\n");}return 0;
}

总结

欢迎大家交流,大家共同学习进步!0.o

http://chatgpt.dhexx.cn/article/4IYoei62.shtml

相关文章

C语言之打印菱形

小编最近在刷题的时候遇到很多使用循环的题目&#xff0c;对于这类题目&#xff0c;小编思维逻辑有时候也会很迷&#xff0c;现在来分享一下经典的案列&#xff0c;帮助大家锻炼一下逻辑 打印如图所示的菱形 通过研究分析&#xff0c;菱形可以分为上三角部分和下三角部分 那我…

c语言:输出一个菱形图案

输出图案样式如下&#xff1a; 方法&#xff1a;运用循环内嵌循环。通过看每一行空格与星号的关系来确定循环&#xff0c;外面加个循环&#xff0c;里面内嵌两个循环。 #include<stdio.h> int main() {int i, j, k;for (i 0; i < 3; i){for (j 0; j < 2 - i; j…

【C语言】利用循环输出菱形

输出菱形的思想主要是用了等差数列 an a1 (n - 1) * d 来求每个循环的约束条件&#xff1b; 一个完整的菱形必须是由空格 、星形 来组成&#xff0c;切分为两部分。 题目效果如下: //要求输出如下图形************* 代码如下: #include "stdio.h" int main(){…

C语言——用“*”输出一个菱形

如何输出如图所示的菱形 先要将菱形分为上下两个三角形&#xff08;例如图示&#xff0c;上为7行的正三角&#xff0c;下为6行的倒三角&#xff09;&#xff0c;接下来通过两个循环分别输出这两部分。首先设置变量line代表上行数&#xff0c;通过键盘输入&#xff0c;接着设置三…

c语言:输出一个菱形图案!

c语言&#xff1a;输出一个菱形图案&#xff01; 给定一个正的奇数n,要求输出一个高为n的正菱形&#xff0c; 如上图所示&#xff0c;是一个11行高的菱形。 怎么设计&#xff1a; 首先把这个图分成三个部分&#xff1a; 1&#xff0c;上半部分 2.中间最长的一部分 3.下半部分…

编写C语言程序 输出一个菱形

用C语言程序实现打印出一个菱形&#xff0c;观察菱形&#xff0c;它的每一行前面会有空格&#xff0c;要打印菱形&#xff0c;首先要算出空格多少的规律&#xff0c;以及每行*的数目&#xff0c;把菱形分为上下两部分打印&#xff0c;上半部分规律&#xff1a;观察最长的一行&a…

C语言输出菱形

咱们输出的是一个13行的菱形&#xff0c;可以分成两部分&#xff0c;第一部分7行星星逐渐增多的&#xff0c;第二部分6行星星逐渐减少&#xff0c;所以代码也可以分成两部分。第一部分是星星最多13个 每次增加两个星星 减少一个空格 &#xff0c;第二部分是星星最多11个&#x…

使用C语言输出菱形详解

// Written by Harry一、思维过程 观察要输出的形状 --- 确定大体思路 --- 转化为数学模型 --- 将问题逐个击破二、完整代码&#xff08;以7*7菱形为例&#xff09; #include <stdio.h>int main() {int i,j,k; //定义菱形行数i、每行输出次数j、每行中输出空格计数器kf…

输出一个菱形(C语言)

输出一个菱形(C语言) 文章目录 输出一个菱形(C语言)说明效果展示代码实现一点说明 说明 当你再键盘上输入一个奇数a时(若输入偶数则自动减1),则会再屏幕上显示腰长为a的菱形(由*组成). 效果展示 代码实现 有兴趣的可以将以下代码复制到自己的编译器当中运行&#xff1a; #i…

【C语言】输出一个菱形

//打印菱形 #include<stdio.h> int main() {int i 0;//i控制第几行int j 0;//j控制每一行空格的循环次数int k 0;//k控制每一行*的循环次数for (i 1; i < 4; i)//将图形分为两部分&#xff0c;前四行(第一部分){for (j 1; j < 4 - i; j)//打印第i行的空格数{p…

软件质量保证

测试计划 编者说明&#xff1a; 要想系统性地完成一件事&#xff0c;首先要做好计划&#xff0c;测试工作是十分重要的&#xff0c;因此测试计划也是十分必要的。该文档适用于集成测试、系统测试、验收测试的计划制订&#xff0c;并不适用于单元测试计划。 第1章 引言 1.1 综…

软件质量的特性

软件质量的简单介绍 软件质量是软件的生命&#xff0c;它直接影响着软件的使用和维护。通常软件的质量有下面几个方面来评价质量的优劣&#xff1a; &#xff08;1&#xff09; 软件需求是衡量软件质量的基础&#xff0c;不符合需求的软件就不具备质量。设计的软件应在功能、…

如何衡量软件质量好坏?

作为测试人员肯定会被问如何评价一个软件质量的好坏。一般同学都会回答说&#xff0c;上线没 bug。但是一款软件如果没人用&#xff0c;那肯定没 Bug。所以没 bug 绝对不是一个好的评判标准。 那什么样的标准是好的标准&#xff1f; 1. 功能性:软件能够实现用户和客户期望的功…

【软件质量】软件质量控制与软件质量保证

文章目录 软件质量控制SQC软件质量保证SQASQC和SQA的对比软件质量控制SQC 质量控制为保证行动提供了一种手段,以控制和衡量项目、过程或设施的特征,以满足既定的要求。 维持产品或服务质量以满足特定需求的操作技术和活动,也使用这些技术和活动。 质量控制活动是以工作产…

浅谈软件质量与度量

本文从研发角度探讨下高质量软件应具备哪些特点&#xff0c;以及如何度量软件质量。 软件质量的分类 软件质量通常可以分为&#xff1a;内部质量和外部质量。 内部质量 内部质量是指软件的结构和代码质量&#xff0c;以及其是否适合维护、扩展和重构。它关注的是软件本身的…

如何理解软件的质量

什么是质量&#xff1f; 词典的定义是&#xff1a;① 典型的或本质的特征&#xff1b;② 事物固有的或区别于其他事物的特征或本质&#xff1b;③ 优良或出色的程度。 CMM对质量的定义是&#xff1a;① 一个系统、组件或过程符合特定需求的程度&#xff1b;② 一个系统、组件或…

【软件质量】软件质量分析总结报告

软件质量-----“软件与明确地和隐含地定义的需求相一致的程度” 一、质量的概念 Ⅰ、传统的质量概念:产品性能是否符合技术规范 Ⅱ、质量是一组固有特性满足要求的程度 Ⅲ、适用性质量 Ⅳ、质量不仅指产品质量&#xff0c;也指过程和体系的质量 二、软件质量 Ⅰ、产品质…

软件质量有什么特性?

软件质量有什么特性&#xff1f; 《软件工程—产品质量》&#xff08;GB/T 16260-2006&#xff09;中规定对软件的每个质量特性与子特性都有定义&#xff1a; 一、功能性&#xff1a;是指当软件在指定条件下使用&#xff0c;软件产品满足明确和隐含要求功能的能力。 适合性&a…

1.软件质量

一、软件质量 什么是质量 定义&#xff1a;影响产品或服务满足给定需求的能力的特性和特性的总和。 质量来自&#xff1a; 客户的观点是否适合使用或其他客户需求生产者观点满足要求 软件质量 定义&#xff1a;软件符合质量标准的程度。 Prevention is better than cure…

软件质量的定义及其六大特性(质量模型)

1、软件质量的定义 软件质量是软件特性的综合&#xff0c;指软件满足规定或潜在用户需求的能力&#xff0c;其主要从内部质量、外部质量、使用质量和过程质量这四个方面来衡量。 2、软件质量模型 测度与度量&#xff1a;在软件质量中用于测量的一种量化的标度和方法即为测度…