首页 > 其他分享 >c语言菱形代码(附解析)

c语言菱形代码(附解析)

时间:2024-08-24 16:52:57浏览次数:12  
标签:int 代码 打印 菱形 printf 解析 我们 循环

一些新手对打印菱形还是有点问题。

接下来我就详细讲解一下如何打印菱形。

源代码为
#include <stdio.h>
int main(void) {
    int n,a=0,b=0,k=0;
    int i[100] = {0};//这里我们默认边长小于等于50
    printf("请输入菱形的边长");
    scanf("%d", &n);

首先先定义一个数组,通过数组里的数字判断该位置应该打印空白还是星号。
首先我们先输入菱形的边长。

    for (int c = 0; c < n; c++,b++) {
        i[n - 1] = { 1 };
        i[n - 1 + b] = { 1 };
        i[n - 1 - b] = { 1 };
        for (int k = 0; k < (n * 2 - 1); k++) {
            if (i[k] == 0)
                printf(" ");
            else
                printf("*");
        }
        printf("\n");
    }
我们首先打印上半部分。

这里我们使用了两个循环

第一个循环是用来改变数组的值,这里b变量是为了在左右两侧都能成功打印。

第二个循环是用来打印我们的菱形,在这里当数组里的数为1时就打印星号,数组里的数为0就打印空格。

当退出第二个循环的时候,我们选择换行,打印下一行的内容。

这里用n-1是因为我们要确保i[0]到i[n-2]不能有多出来的空位,就比如如果我们不用n-1,那么i[0]就可能一直为0,从而可能导致我们打印出问题。

    b -= 1;
    for (int c = 0; c < n-1; c++, b--) {
        i[n - 1 + b] = { 0 };
        i[n - 1 - b] = { 0 };
        for (int k = 0; k < (n * 2 - 1); k++) {
            if (i[k] == 0)
                printf(" ");
            else
                printf("*");
        }
        printf("\n");
    }
    return 0;
}

接下来我们打印下半部分。

这里将b变量减1的目的是为了不重复打印,比如说我们选择打印3边长的菱形,那么第三行就是五个星号,如果不将b减去1,那么第四行也会打印五个星号,所以我们在这里将b减去1。

接下来我们任然用两个循环。

第一个循环我们用来改变数组的值。

第二个循环我们用来进行打印。

最后在结束一次第二个循环时我们进行换行键的打印。

至此,程序结束。

标签:int,代码,打印,菱形,printf,解析,我们,循环
From: https://blog.csdn.net/2401_85637543/article/details/141501241

相关文章

  • Android开发 - (适配器)Adapter类中(蓝牙适配器)BluetoothAdapter实现类解析
    什么是BluetoothAdapterBluetoothAdapter是一个重要的类,用于管理和操作蓝牙功能。它提供了与蓝牙设备进行交互的能力,它代表了本地蓝牙适配器的功能。简单来说,它是你与设备上的蓝牙硬件进行交互的接口。通过BluetoothAdapter,你可以控制蓝牙的开启和关闭,发现附近的蓝牙设备,管理......
  • Android开发 - IBinder 类与 Binder 类的关系解析
    IBinder类IBinder类说明:IBinder是一个接口,它是AndroidIPC机制的基础。它定义了一组用于进程间通信的基本操作,但不提供实际的实现。IBinder主要用于描述一个可以被远程调用的对象主要特点:接口定义:IBinder是一个接口,定义了如何进行进程间通信的基本方法,如trans......
  • 精美进度条的简易实现·附完整代码
    1.activity_main<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="......
  • Android开发 - Binder 类进程间通信(IPC)的机制解析
    什么是BinderBinder是一种用于进程间通信(IPC)的机制,允许不同的进程(或者不同的组件)相互交互,提供了跨进程通信(IPC)的基础。它允许一个进程中的对象(如服务)被另一个进程中的代码(如应用组件)调用。Binder是一种特殊的对象,它能够在不同进程之间传递数据和调用方法Binder的作用进......
  • Android开发 - IBinder 类实现跨进程通信(IPC)解析
    什么是IBinderIBinder类是一个重要的接口,常用于实现跨进程通信(IPC);IBinder允许不同的进程或组件之间相互传递数据和调用方法。主要用于实现进程间通信。它是Android中的一个底层机制,允许不同的应用或组件(即使它们在不同的进程中)通过IBinder对象进行数据交换和方法调用IB......
  • CSP 2023 提高级第一轮 CSP-S 2023初试题 程序阅读第三题解析
    一、程序阅读#include<vector>#include<algorithm>#include<iostream>usingnamespacestd;boolf0(vector<int>&a,intm,intk){ints=0;for(inti=0,j=0;i<a.size();i++){while(a[i]-a[j]>......
  • Steam共享库被锁怎么办?Steam共享库锁定问题全面解析与解锁指南
    当Steam共享库被锁定时,玩家可能会遇到无法访问或共享游戏库的问题。以下是对Steam共享库锁定问题的全面解析与解锁指南:一、理解Steam共享库锁定的原因同步问题:可能是由于Steam客户端的同步问题导致的,例如账户状态未及时更新。账户使用冲突:如果其他家庭成员或朋友正在使用共......
  • Java面试题--JVM大厂篇之JVM 大厂面试题及答案解析(2)
           ......
  • catvod、TVBox源的格式解析及合并多个源的内容(Python脚本)
    文章目录TVBox官网核心代码分析源内容的结构定义源内容的主体结构解析直播的结构解析ApiConfig其他处理代码核心类分析完整代码参考合并多个catvod、TVBox源的内容(Python脚本)可用catvod、TVBox源参考(最新接口)更新:解决Spider参数覆盖问题TVBox官网TVBox项目索引:htt......
  • Android Kotlin优化代码整洁:with、applay以及run是什么,作用,区别
    目录为什么需要使用with、applay以及runwith、applay以及run是什么、作用以及三者区别一、为什么需要使用with、applay以及run我们在开发项目的过程当中,不可避免,一个界面的内容会有很多,如下initivew方法,会有Recyclerview的初始化,长按以及触摸事件设置,以及生命周期的注册,主......