首先,先看一道简单的例题
题目描述
本题要求编写程序,输出指定的三角图案。
输入
输入一个整数
输出
1.按照下列格式输出由“*”组成的三角图案。(1)初学者的代码,可以简单的运用输出、输入完成。
#include
int main()
{
printf("****\n***\n**\n*");
return 0;
}
(2)但是,显然,一旦打印的行列多了,这个方法就不适用了,而循环语句可以很好的解决这个问题。
分析图形结构:输入n,第一行n个*,一次随着列的增加减少一个。
#include
int main()
{
int n;
int i,j;
scanf("%d",&n) ; //输入n行
for(i=1;i
2.变形一下,当打印的不是数字,变成了字母
即我们要引入一个字符型
#include
int main()
{
int n;
int i,j;
char ch;
scanf("%d",&n) ;
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i+1;j++)
{
printf("%c",'A');
}
printf("\n");
}
return 0;
}
3.再变形一下,变成字母变成了按顺序打印,注意,字母之间有空格
A B C D
E F G
H I
J
#include
int main()
{
int n;
char op = 'A';
scanf("%d",&n);
int i, j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i+1;j++)
{
putchar(op++); //输出递加字母。
printf(" ");
}
printf("\n");
}
return 0;
}
B.输出“金字塔”型的数字图形
(1)实心三角形的打印
1
222
33333
444444
555555555
分析,实验A一样,我们要使用循环语句,但是我们不难发现有以下规律
i行 | 数字前面“ ”的个数 | ‘数字的个数 | 每一行打印的数字是 |
1 | 4 | 1 | 1 |
2 | 3 | 3 | 2 |
3 | 2 | 5 | 3 |
... | ... | ... | ... |
i | 5-i | 2i-1 | i |
有代码如下
#include
int main()
{
int i,j,k,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(k=1;k<=n-i;k++) //输出空格个数的情况
{
printf(" ");
}
for(j=1;j<=2*i-1;j++) //输出数字个数的情况
{
printf("%d",i); //输出数字的情况
}
printf("\n"); //回车
}
return 0;
}
上面代码需要特别注意的是,这个代码包含了一个循环的嵌套,一共调用了三个for语句,但是后面两个语句是并列的的关系。
(2)空心三角形的打印输出:
1
2 2
3 3
4 4
555555555
分析:和(1)一样大致框架不变,但是实心变空心,我们则需要多考虑,再空心的输出怎么完成。
i行 | 数字前面“ ”的个数 | 数字的个数 | 数字中间的“ ”个数 | 打印的数字 |
1 | 4 | 1 | 0 | 1 |
2 | 3 | 2 | 1 | 2 |
3 | 2 | 2 | 3 | 3 |
4 | 1 | 2 | 5 | 4 |
5 | 0 | 9 | 0 | 5 |
i | n-i | 特殊 | 特殊 | i |
通过表格,我们看的出第五行是特殊的
可以看出每行的第n-i个和第2n-1个一定是数字,1~4行中其余的为空格,第5行其余的也为数字
在(1)的框架中,我们可以嵌套if条件语句去满足这些要求
#include
int main()
{
int i,j,k,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(k=1;k<=n-i;k++)
{
printf(" ");
}
for(j=1;j<=2*i-1;j++)
{
if(j==1||j==2*i-1||i==n) //使1~4行的第一个和最后一个,第5行全部,输出数字
printf("%c",'0'+i); //printf("%d",i)也是成立的
else
printf(" "); //除输出数字外的其他输出空格
}
printf("\n");
}
return 0;
}
总结
在简单图形输出时,循环语句的嵌套是基础的,其次我们要学会分析各行的特征与行数的数字关系,想办法用代码替代出来。这是有解题思路的必备!!!!
输出为字母或者数字型的时候可以用字符型引出,方便变量。
简单图形打印非常容易发现自己的失误,因为错了以后可以根据输出的样式倒推哪条语句有错,缺少了什么,例如换行是否换对了,是可以通过输出的代码进行分析的。
以上,如有错误,请指正;如有疑问,欢迎一起讨论。 作者的碎碎念第一次写博客,着手第一篇一直在想主题,最后确定这个,希望大家可以通过这些变形,掌握循环语句的使用和基础图形的打印!!大家晚安,感谢阅读。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)