初次写博客

不知道在哪看到的,说学一种语言可以经常把所学的东西写到博客上,有利于学习,于是我就来咯!不知道能坚持多久哈,也不知道能发掘多少值得写的东西。哈哈哈哈!
目前学的是C语言啦,说到学这门语言也是形势所迫,大四,马上就待业了,期待的职业是嵌入式软件开发,就到处找工作咯,然后就各种碰壁,C语言面试题一设计什么指针啊,结构体啊就晕了了,再问什么线程通信啊,直接懵逼,好吧,我是自动化专业的,就大一学了点C语言好吗,没办法,再学一遍呗。参考的教材是《一站式学习C语言》(.PDF@_@)。今天敲了一下午代码,收货还是很大的,让我领略到为什么说数学专业的学生在编程方面会比较有造诣。
课后习题
这道题花了我不少时间,感觉像是挺简单(也确实挺简单^_^),貌似大一的时候做过这种题,但是这次分析的时候不知道是怎么了,脑子里一直是这样的:
数学模型
好吧,那就解数学题吧,当然是在橘色区域答应出你想要的符号咯,四个小三角就打印空格呗,试了半天一个符号加一个空格可以显得比较美观, 剩下的地方打印两个空格,关键就在那四条边怎么用i和j表达出来,我是这么弄得
1+length/2+1) && (i+j) <= (1+length/2+length) && (i-j) <= length/2 && (i-j) >= -length/2
草稿纸上弄了半天好吧。最后封装成一个函数,代码如下啦:

void diamond(int length, char symbol)
{
    int i, j;
    printf("\n\n");
    for (i = 1; i <= length; i++)
    {
        for (j = 1; j <= length; j++)
            if ( (i+j) >= (1+length/2+1) && (i+j) <= (1+length/2+length) && (i-j) <= length/2 && (i-j) >= -length/2)
                printf("%c ",symbol);
            else
                printf("  ");
        printf("\n");
    }
    printf("\n\n");
}

说一下需要注意的地方吧,一开始想法不够严谨,总想着在那些需要的地方打印出符号来就好了,以为空格会理所当然的出现在你得屏幕上,没有写else语句,导致打印出这样的东西:
这里写图片描述
好在最后是发现了,完整的代码贴在下面了:

#include<stdio.h>

void diamond(int length, char symbol)
{
    int i, j;
    printf("\n\n");
    for (i = 1; i <= length; i++)
    {
        for (j = 1; j <= length; j++)
            if ( (i+j) >= (1+length/2+1) && (i+j) <= (1+length/2+length) && (i-j) <= length/2 && (i-j) >= -length/2)
                printf("%c ",symbol);
            else
                printf("  ");
        printf("\n");
    }
    printf("\n\n");
}

int main(void)
{
    int length;
    char symbol;
    printf("This program will print a diamond, and you can make customization.\n");
    printf("Now, input a symbol,ex-> * + - @ \n");//一看就是学鸟哥的@_@
    scanf("%c",&symbol);
    printf("Then, input the lenth:\n");
    scanf("%d",&length);
    if (length % 2 == 0 || length > 73) //73为屏幕一行最多显示的字符
        printf("ERROR! Please input a odd number less than 73!\n");
    else
        diamond(length,symbol);
    return 0;
}

可爱的菱形:
这里写图片描述
代码风格不太好,先将就着吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值