题目:
用C语言在屏幕上输入以下图案:
=========================================================================
思路:
总体思路:
(一).
输入菱形上半部分行数 -- scanf()函数
(二).
使用 for循环 进行 菱形上半部分三角形 的打印,
菱形上半部分三角形行数 -- i < line
(注:只是菱形上半部分三角形的行数,上半部分是 正三角)
使用 内嵌for循环 进行循环打印出上半部分菱形的 空格 :
上半部分菱形 空格 规律:
j < line - 1 - i
如:line等于7,那么,
第一行 就打印 7-1-0=6 个 空格;
第二行 就打印 7-1-1=5 个 空格。
内嵌第二个for循环,打印上半部分菱形的 * 号:
上半部分菱形 * 号 规律:
j < 2 * i + 1
如:line等于7,那么,
第一行 就打印 2*0+1=1 个 *号;
第二行 就打印 2*1+1=3 个 *号。
打印完一行后就进行换行:
printf("\n");
(三).
使用 for循环 进行 菱形下半部分三角形 的打印,
菱形下半部分三角形行数 -- i < line-1
(注:是菱形下半部分三角形的行数,下半部分是 倒三角)
使用 内嵌for循环 进行循环打印出下半部分菱形的 空格 :
下半部分菱形 空格 规律:
j <= i
如:line-1 为 7-1=6 ,那么,
第一行 就打印
j=0,i=0,j<=i ,
1个 空格;
第二行 就打印
j=0,i=1,j<=i,
2个 空格。
内嵌第二个for循环,打印下半部分菱形的 * 号:
下半部分菱形 * 号 规律:
j < 2*(line-1-i)-1
如:line-1 为 7-1=6 ,那么,
第一行 就打印 2*(7-1-0)-1=11 个 *号;
第二行 就打印 2*(7-1-1)-1=9 个 *号。
打印完一行后就进行换行:
printf("\n");
第一步:
输入菱形上半部分行数 -- scanf()函数
实现代码:
#include <stdio.h> int main() { //输入菱形上半部分行数 -- scanf()函数: int line = 0; //上半行数 //输入: scanf("%d", &line); return 0; }
实现图片:
第二步:
(1).
使用 for循环 进行 菱形上半部分三角形 的打印,
菱形上半部分三角形行数 -- i < line
(注:只是菱形上半部分三角形的行数,上半部分是 正三角)
(2).
使用 内嵌for循环 进行循环打印出上半部分菱形的 空格 :
上半部分菱形 空格 规律:
j < line - 1 - i
如:line等于7,那么,
第一行 就打印 7-1-0=6 个 空格;
第二行 就打印 7-1-1=5 个 空格。
(3).
内嵌第二个for循环,打印上半部分菱形的 * 号:
上半部分菱形 * 号 规律:
j < 2 * i + 1
如:line等于7,那么,
第一行 就打印 2*0+1=1 个 *号;
第二行 就打印 2*1+1=3 个 *号。
(4).
打印完一行后就进行换行:
printf("\n");
实现代码:
#include <stdio.h> int main() { //输入菱形上半部分行数 -- scanf()函数: int line = 0; //上半行数 //输入: scanf("%d", &line); //菱形上半部分的打印:行数 -- line int i = 0; for (i = 0; i < line; i++) { //打印一行,先打印空格,再打印*号 //内嵌for循环 打印空格: //上半部分空格规律: // line-1-i:假设行数是7, //第一行打印7-1-0=6个空格;第二行打印7-1-1=5个空格…… int j = 0; for (j = 0; j < line-1-i; j++) { printf(" "); //打印空格 } //内嵌第二个for循环 打印*号: //上半部分*号规律: // 2*i+1:假设行数是7, //第一行打印2*0+1个*号;第二行打印2*1+1个*号…… for (j = 0; j < 2*i+1; j++) { printf("*"); //打印*号 } //打印完一行后就进行换行: printf("\n"); } return 0; }
实现图片:
第三步:
(1).
使用 for循环 进行 菱形下半部分三角形 的打印,
菱形下半部分三角形行数 -- i < line-1
(注:是菱形下半部分三角形的行数,下半部分是 倒三角)
(2).
使用 内嵌for循环 进行循环打印出下半部分菱形的 空格 :
下半部分菱形 空格 规律:
j <= i
如:line-1 为 7-1=6 ,那么,
第一行 就打印
j=0,i=0,j<=i ,
1个 空格;
第二行 就打印
j=0,i=1,j<=i,
2个 空格。
(3).
内嵌第二个for循环,打印下半部分菱形的 * 号:
下半部分菱形 * 号 规律:
j < 2*(line-1-i)-1
如:line-1 为 7-1=6 ,那么,
第一行 就打印 2*(7-1-0)-1=11 个 *号;
第二行 就打印 2*(7-1-1)-1=9 个 *号。
(4).
打印完一行后就进行换行:
printf("\n");
实现代码:
#include <stdio.h> int main() { //输入菱形上半部分行数 -- scanf()函数: int line = 0; //上半行数 //输入: scanf("%d", &line); //菱形上半部分的打印:行数 -- line int i = 0; for (i = 0; i < line; i++) { //打印一行,先打印空格,再打印*号 //内嵌for循环 打印空格: //上半部分空格规律: // line-1-i:假设行数是7, //第一行打印7-1-0=6个空格;第二行打印7-1-1=5个空格…… int j = 0; for (j = 0; j < line-1-i; j++) { printf(" "); //打印空格 } //内嵌第二个for循环 打印*号: //上半部分*号规律: // 2*i+1:假设行数是7, //第一行打印2*0+1个*号;第二行打印2*1+1个*号…… for (j = 0; j < 2*i+1; j++) { printf("*"); //打印*号 } //打印完一行后就进行换行: printf("\n"); } //菱形下半部分的打印:行数 -- line-1 for (i = 0; i < line-1; i++) { //打印一行,先打印空格,再打印*号 //内嵌for循环 打印空格: //下半部分空格规律: // j<=i:假设行数是7-1=6, //第一行打印j=0,i=0,j<=i,1个空格;第二行打印j=0,i=1,j<=i,2个空格…… int j = 0; for (j = 0; j <= i; j++) { printf(" "); //打印空格 } //内嵌第二个for循环 打印*号: //下半部分*号规律: // 2*(line-1-i)-1:假设行数是7-1=6, //第一行打印2*(7-1-0)-1,11个*号;第二行打印2*(7-1-1)-1,9个*号…… for (j = 0; j < 2*(line-1-i)-1; j++) { printf("*"); //打印*号 } //打印完一行后就进行换行: printf("\n"); } return 0; }
实现图片:
最终代码和实现效果
最终代码:
#include <stdio.h> int main() { //输入菱形上半部分行数 -- scanf()函数: int line = 0; //上半行数 //输入: scanf("%d", &line); //菱形上半部分的打印:行数 -- line int i = 0; for (i = 0; i < line; i++) { //打印一行,先打印空格,再打印*号 //内嵌for循环 打印空格: //上半部分空格规律: // line-1-i:假设行数是7, //第一行打印7-1-0=6个空格;第二行打印7-1-1=5个空格…… int j = 0; for (j = 0; j < line-1-i; j++) { printf(" "); //打印空格 } //内嵌第二个for循环 打印*号: //上半部分*号规律: // 2*i+1:假设行数是7, //第一行打印2*0+1个*号;第二行打印2*1+1个*号…… for (j = 0; j < 2*i+1; j++) { printf("*"); //打印*号 } //打印完一行后就进行换行: printf("\n"); } //菱形下半部分的打印:行数 -- line-1 for (i = 0; i < line-1; i++) { //打印一行,先打印空格,再打印*号 //内嵌for循环 打印空格: //下半部分空格规律: // j<=i:假设行数是7-1=6, //第一行打印j=0,i=0,j<=i,1个空格;第二行打印j=0,i=1,j<=i,2个空格…… int j = 0; for (j = 0; j <= i; j++) { printf(" "); //打印空格 } //内嵌第二个for循环 打印*号: //下半部分*号规律: // 2*(line-1-i)-1:假设行数是7-1=6, //第一行打印2*(7-1-0)-1,11个*号;第二行打印2*(7-1-1)-1,9个*号…… for (j = 0; j < 2*(line-1-i)-1; j++) { printf("*"); //打印*号 } //打印完一行后就进行换行: printf("\n"); } return 0; }
实现效果: