编程打印空心菱形

来源:互联网 发布:ubuntu 窗口居中 编辑:程序博客网 时间:2024/05/10 04:07

本题目要求读入菱形起始字母和菱形的高度,然后输出空心字符菱形。所谓“空心菱形”是指:每行由两端为字母、中间为空格的字符串构成,每行的字符串中心对齐;上半部分相邻两行字符串长度差2,且字母从给定的起始字母逐一递增;下半部分与上半部分对称。

输入格式:

输入在一行中给出起始字母(范围为英文大写字母A-G)和菱形的高度(为不超过10的奇数)。

输出格式:

输出空心字符菱形。

输入样例:

B 5

输出样例:

  B C CD   D C C  B
1.首先确定程序的伪代码:(在这个过程你不必一开始就计算出来确切的数字,关键的就是要将最终形成的东西给分开)
读起始字母以及菱形高度
开始循环每一行
第一行打?个空格再打一个起始字母
第二行打?个空格再打加一个的字母再打?个空格再打一个字母
。。。。。。
结束
2.实现自己的伪代码:
打空格我现在是不知道有可以直接打的,所以呢要用for循环,这里就要设置一个打多少个了
我们找到打多少个对应的自变量,或者说找到一个跟它相关的参数,然后很自然想到行数,然后我们就要构造其与行数的关系,可以找个特例先试试,但还要再找一个特例,再最后归纳出具有一般性,这里很容易找到一个线性的函数
同样的再找到打什么样字母的线性关系
代码片:
#include<stdio.h>#include<math.h>int abs(int x);int main(){    int n=0,i,j=1;    char c='\0';    scanf("%c %d",&c,&n);    for(i=1;i<=n;i++)    {        for(j=1;j<=abs(i-n/2-1);++j){            printf(" ");        }        if(i<=n/2+1){            printf("%c",c+i-1);        }        else{            printf("%c",c+n-i);        }        for(j=1;i>1&&j<=n-2-abs(i-n/2-1)*2&&(i!= n);j++){            printf(" ");        }        if(i>1&&(i!=n)){            if(i<=n/2+1){                printf("%c",c+i-1);            }            else{                printf("%c",c+n-i);            }        }        printf("\n");    }    return 0;}

本题的变量之间没有太多的牵涉,所以写起来还比较轻松。
加油:)
0 0
原创粉丝点击