C语言程序设计,做一个菱形图案

C语言程序设计,做一个菱形图案,第1张

#include <stdio.h>

#include <math.h>

void PrintStar(int n)

{

    int i, j

    升埋和int h = n/2 + 1    

    for(i = 1 i <= n ++i)

    {

        for(j = 1 j <= 吵盯abs(h-i) ++j)

            液枝putchar(' ')

        for(j = 1 j <= -abs(2*(i-h))+n ++j)

            putchar('*')

        putchar('\n')                

    }    

}

int main()

{

    int n

    printf("请输出菱形的高度(请输入奇数):")

    

    scanf("%d", &n)

    PrintStar(n) 

    

    return 0

}

此题解法,我将这个菱形放在了一个二维数组中,因为用二维数组可以界定X的边界,比较方便一点。 循环输出的时候,特别注意循环跳出的条件,你画个二维数组,体会一下里面的数学关系,多上机改液告唤改代码,呵呵。要特别注意 q 的用途哦。

#include<stdio.h>

void main()

{

#define N 7    //定义二维数组的行和列

int i,j

char a[N][N]

int q=N/2  闹凯 //找到数组的中间列

char t,p   // 定义输出字符,t代表X,p代表Y

printf("qing shu ru X,Y:\n")

scanf("%c,%c",&t,&p)  // 注意此处输入的时候,不要忘记“,”了哦

for(i=0i<Ni++)     //将二维数组的值全部先赋值为“空格”

for(j=0j<Nj++)

a[i][j]=' '

for(i=0i<qi++)     //将菱形一分两半,这个是上半部分的输出,以中间列

{

//为开始,向两边扩展,为了输出X ,注意i循环到q-1

a[i][q-i]=t

a[i][q+i]=t

for(j=(q-i+1)j<(q+i)j++ )      //以两边的X列为边界,输出Y

a[i][j]=p

}

for(i=qi<Ni++)          //这个是下半部分的输出,i从q开始循环到最后

{

a[i][q-(N-1-i)]=t   友世   //仍然是从中间列开始向两边扩散,输出X

a[i][q+(N-1-i)]=t

for(j=(q-(N-1-i)+1)j<(q+(N-1-i))j++ ) //从X边界开始从做到右输出Y

a[i][j]=p

}

for(i=0i<Ni++)

{

{for(j=0j<Nj++)

printf("%c",a[i][j])}

printf("\n")

}

}

我这里输出的是标准的菱形,中间的Y的个数和你给的不一样,如果你想要你的那种结果,只需要在输出Y的时候,将循环的边界再减一个,就可以了,不过图形是会变形,不会是菱形了。

上机运行的时候,把这些汉字清理了吧,要不可能编译出问题,好运~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12394522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存