您的位置:首页 > 其它

记忆深刻的菱形结构

2014-10-17 22:18 232 查看
今天在写作业,在前几道题中,都没什么压力就做出来了,但到用循环结构输出菱形结构是,我就彻底蒙了,实心的菱形还可以,想了一会后做出来了,但后面又有一个空心的菱形,这道题真是让我想破了头皮,为了以后能随时复习这道题,这里我把这道题的答案写在这

6. (****)输入n,分别用*输出边长为n的实心菱形和空心菱形。

// 例如:n = 3时,输出:

// *

// ***

// *****

// ***

// *

//

//上三角

//行数 空格数
星号数
换行

//1 2 1 1

//2 1 3 1

//3 0 5 1

//空格与行数的关系是:空格 = n(边长) -行数

//星号与行数的关系是:星号 =
行数*2 - 1

//换行始终是一个
int n = 0;

printf("请输入一个边长,我们将为你打印n边菱形:");
scanf("%d",&n);
for (int i = 1; i <= n; i++) {
//打印空格
for (int j = 0; j < n - i; j++) {
printf(" ");
}
//打印星号
for (int k = 0; k < 2 * i - 1; k++) {
printf("*");
}
//打印换行
printf("\n");
}

//下三角

//行数 空格数
星号数
换行

//1 1 3 1

//2 2 1 1

//空格与行数的关系是:空格 =
行数

//星号与行数的关系是:星号 = (n -
行数)*2 - 1

//换行始终是一个
for (int i = 1; i < n; i++) {
//打印空格
for (int j = 0; j < i; j++) {
printf(" ");
}
//打印星号
for (int k = 0; k < (n - i) * 2 - 1; k++) {
printf("*");
}
//打印换行
printf("\n");
}

// *

// * *

// * *

// * *

// *

printf("\n");



//上三角

//行数 空格数
星号数空格数
星号数换行

//1 2 1 0 0 1

//2 1 1 1 1 1

//3 0 1 3 1 1

//前面空格与行数的关系是:空格 = n(边长) -行数

//星号与行数的关系是:星号 = 1

//中间空格与行数的关系是:空格 = (行数-1) * 2 -1

//后面星号行数为1的时候,0个,行数不为1的时候1个

//换行始终是一个
for (int i = 1; i <= n; i++) {
//打印前面空格
for (int j = 0; j < n - i; j++) {
printf(" ");
}
//打印前面星号
printf("*");
//打印中间空格
for (int k = 0; k < (i - 1)*2 -1; k++) {
printf(" ");
}
//打印后面星号
if (i != 1) {
printf("*");
}
//打印换行
printf("\n");
}

//下三角

//行数 空格数
星号数
空格数 换行

//1 1 1 3 1

//2 2 1 1 1

//3 3 1 0 1

//空格与行数的关系是:空格 =
行数

//星号与行数的关系是:星号 = 1

//空格与行数的关系是:空格 = (n -
行数 - 1)*2 - 1

//星号与行数的关系是:如果行数等于n-1,那*是0,否则是1

//换行始终是一个
for (int i = 1; i < n; i++) {
//打印前面空格
for (int j = 0; j < i; j++) {
printf(" ");
}
//打印星号
printf("*");
//打印中间空格
for (int k = 0; k < (n-1-i)*2 -1; k++) {
printf(" ");
}
//打印后面星号
if (i != n-1) {
printf("*");
}
//打印换行
printf("\n");
}
这是借鉴大神的做法,可以在以后的复习中能够一目了然,这道题本来不是那么难的但是相当复杂,如果静下心来,还是可以攻破的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: