C语言编程 两种方法打印一个菱形(渐入显示)

<1>第一种方法,利用字符数组定义一个空格数组和一个符号数组,

然后找到数组中间的元素,操作空格字符从中间开始向两边与符号数组的元素互换,

每互换一次进行一次输出,打印上半个菱形和下半个菱形需要两个for语句的支持。

源代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>//为了使用延时语句Sleep而调用
int main()
{
    char suu1[] = "*****************************************";//符号语句
    char suu2[] = "                                                         ";//空格语句
    int right, left=0, mid;
    right = strlen(suu2)-1;
    mid = left + (right - left) / 2;
    for (left = mid , right = mid ; left >= 0&&right<=strlen(suu2)-1 ; left--, right++)//上半部分打印
    {
        suu2[left] = suu1[left];
        suu2[right] = suu1[right];
        printf("%s\n", suu2);
        Sleep(600);//延时操作
    }
    for (left = 0, right = strlen(suu1)-1; left <=mid && right >=mid; left++, right--)//下半部分打印
    {
        suu2[left] = ‘ ‘;
        suu2[right] = ‘ ‘;
        printf("%s\n", suu2);
        Sleep(600);
    }
    system("pause");
    return 0;
}

这种方法较为浅显易懂,但缺点是菱形的大小是通过所定义的字符数组的长度来定义的,不是特别灵活。

<2>
第二种方法算法上相比第一种较为复杂,但是可操控性比较高,主要是通关观察来得到所打印符号的行,列和符号个数之间的数学关系来打印。

源代码如下:

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int line = 0,m,k;
    scanf("%d", &line);//通过输入来确定菱形的大小
    int i = 0;
    for (i = 0; i < line; i++)//上半部分打印
    {
        for (m = 0; m<line - 1 - i; m++)//观察所得关系式
            printf(" ");
        for (m= 0; m <2 * i+ 1; m ++)
        {
                printf("*");
        }
        printf("\n");
    }
    for (i = 0; i < line-1; i++)//下半部分打印
    {
        for (m = 0; m<=i; m++)
            printf(" ");
        for (m = 0; m <2 * (line-i-1)-1; m++)//观察得到的关系式
        {
            printf("*");
        }
        printf("\n");
    }
    system("pause");
    return 0;
}

运行结果实例:

原文地址:https://blog.51cto.com/14232799/2368586

时间: 2024-11-10 14:30:06

C语言编程 两种方法打印一个菱形(渐入显示)的相关文章

JavaScript两种方法来定义一个函数

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /*I总结: 1.函数名能够做变量使用.能够赋值.能够传值 2.函数名当參数.传递给还有一个函数 */ //==================js中

两种方法判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言)

例如:给定s1 = AABCD和s2 = BCDAA,返回1给定s1 = abcd和s2 = ACBD,返回0. AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAA 第一种:通过其中一个字符串向左移动确定第二个字符串 #include<stdio.h> #include<string.h> void left_move(char *str, int k) { while (k != 0) { char *cur = str;//必须需要另一个指针存储首地址 c

在linux下Lua调用C语言的两种方法

一.c语言作为应用程序的一部分 #include <stdio.h>#include <string.h>#include <lua.hpp>#include <lauxlib.h>#include <lualib.h> //待Lua调用的C注册函数.static int add2(lua_State* L){ //检查栈中的参数是否合法,1表示Lua调用时的第一个参数(从左到右),依此类推. //如果Lua代码在调用时传递的参数不为number

c语言:两种方法实现字符串拷贝strcpy

实现字符串拷贝strcpy 方法一: // 字符串拷贝函数的实现 #include<stdio.h> #include<assert.h> void my_strcpy(char *dest,  char *src)//src表示source源,dest目标 { assert(dest!=NULL); assert(src); char *ret = dest; while (*dest++ = *src++) { ; } return dest; } int main() { c

C语言编程 递归方式实现打印一个整数的每一位

主要思想依旧是取位和调用数字的缩小参照https://blog.51cto.com/14232799/2377396源代码: #include<stdio.h> #include<stdlib.h> void print(int n) { if (n > 9) { print(n / 10);//数的缩小 } printf("%-4d", n%10);//取位 } int main() { int number; printf("请输入要打印的数

【总结】两种方法删除一个列表中索引是偶数项的内容

#-----------------方法一-------------------------- list1 = [1,2,3,4,5,6,7,8,9] list2 = [] for i in range(len(list1)): if i % 2 ==1: list2.append(list1[i]) else: continue print(list2) #-----------------方法二--------------------------- list1 = [1,2,3,4,5,6,

程序打印自身代码的两种方法

程序打印自身代码的两种方法 方法一:利用fopen,打开可执行程序对应的source code file /***************************************** code writer : EOF code file : print_my_self.c code date : 2014.08.01 e-mail: [email protected] code purpose : Aha, print out myself! *********************

旧文备份:利用一个定时器实现多个虚拟定时器的两种方法

固定周期法 使用一个硬件定时器进行固定周期(比如1ms)定时,用一个结构体数组作为软定时器描述表,数组的结构体数就是最大虚拟定时器的数量,每个结构体的成员都包括虚拟定时器状态(空闲.激活.运行.超时触发.周期触发).定时值(换算成定时周期数,例如1ms的硬件定时周期,现进行125ms的定时,定时值就是125).标识ID和回调函数等:用一个变量作为定时周期计数器,每次进入定时中断,重置定时器,扫描结构体数组中的每个成员结构体,对定时值做减一操作,然后判断该定时值是否为0,是则判定该值对应的虚拟定时

设置一个DIV块固定在屏幕中央(两种方法)

设置一个DIV块固定在屏幕中央(两种方法) 方法一: 对一个div进行以下设置即可实现居中. <style> #a{ position: fixed; top: 0px; left: 0px; right: 0px; bottom: 0px; margin: auto; } </style> <!doctype html> <html lang="zh-cn"> <head> <meta charset="UT