Posted on 

Openjudge程序设计实习MOOC 程序设计与算法(一) 编程题

*以下均为个人作答笔记,并非标准答案,仅供参考。

*仅记录部分个人认为有较高价值的题目。

002.字符菱形

给定一个字符,用它构造一个对角线长5个字符,倾斜放置的菱形。

输入:输入只有一行, 包含一个字符。

输出:该字符构成的菱形。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<stdio.h>
#define N 5 //菱形的行数
int main(void)
{
char a;
int i,j,n;
scanf("%c",&a);
for(i=1;i<=N;i++)
{
n=(N/2+1);//n为菱形的正中间一行的位置
if(i<=n)//当i处于上面的三角形时
{
while(1)
{
if(n-i>0)
{
printf(" ");//先输出第i行前面的空格,每一行的空格为n-i个
n--;
}
else break;
}
for(j=1;j<=2*i-1;j++)//再输出第i行的符号,每行个数为2*i-1个
printf("%c",a);
}
else //同理,当i处于下面的三角形时
{
while(1) // 无限循环
{
if(i-n>0)
{
printf(" ");
n++;
}
else break;
}
for(j=1;j<=2*(N-i)+1;j++)//输出第i行的符号,每行个数为2*(N-i)+1个
printf("%c",a);
}
printf("\n");//每一行结束后输出一个换行
}

return 0;
}