C 输出菱形
受泽发来的贺电- -嗯……数学不是很好所以码了有一会儿吧。
数学不好搞算法好吃力……
输出比如下面一样的菱形:
*
***
*****
*******
*****
***
*
关键在于空格与*
的分布。
常量与变量说明:LINE
(总行数,这里的算法使得LINE必须是奇数)now
目前行数,block
* 的数量 space
空格的数量
这里不写具体数字是因为搞定了输入输出之后可以把LINE作为变量,用变量来输出更大的菱形。
限制是不适合偶数,所以这个写法不是很完美(在提供输入选项时)
1#include <stdio.h>
2
3#define LINE 7
4
5main(void)
6{
7 int now, space, block;
8
9 for (now = 1; now <= LINE;now++) {
10 if (now <=(LINE/2 + 1)) {
11 for (space = ((LINE/2 + 1) - now); space > 0; space--) {
12 printf(" ");
13 }
14
15 for (block = 1; block <= now * 2 - 1; block++) {
16 printf("*");
17 }
18 }
19
20 if (now > (LINE/2 + 1)) {
21 for (space = (now - (LINE/2 + 1)); space > 0; space--) {
22 printf(" ");
23 }
24
25 for (block = (LINE - now) * 2 + 1; block > 0; block--) {
26 printf("*");
27 }
28 }
29 printf("\n");
30 }
31
32 return 0;
33}
34
评论 (2)
for(i=1;i<=10;i++) { for(j=0;j<10-i;j++) { printf(" "); } for(j=0;j<2*i-1;j++) { printf("*"); } printf("\n"); } for(i=9;i>=1;i--) { for(j=0;j<10-i;j++) { printf(" "); } for(j=0;j<2*i-1;j++) { printf("*"); } printf("\n"); } 这是指定的行数 其实分为上下两部分三角形就行了
这个是期末考试题
你们期末考试是上机的吗 听说我们是笔试 而且考的很简单OTZ无法直视