c语言之打印图形
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符图形
例1:*号图形(打印行数n由键盘输入)
分析(2)号图形:
从第1行打印到第n行,打印第i行时(i从1~n),首先打印n-i 个空格;接着打印i个*号;换行; 分析:(6)号图形:
打印第i行(i 从1~n)时,首先打印i-1个空格;接着打印2(n-i)+1个*号;换行;
#include "stdio.h"
void main(){ /*打印(2)号图形*/
int n,i,j;
printf("Input n=");
scanf("%d",&n);
for (i = 1;i <= n;i++) {
for (j = 1;j <= n-i;j++)
putchar(' ');
for (j=1;j<=i;j++)
putchar('*');
printf("\n");
}
}
例2:打印如下数字方阵(打印行数n可输入)
1 2 3 4 5
2 2
3
4 5
3 3 3
4 5
4 4 4 4 5
5 5 5 5 5
(1)
特点:每行主对角线之前打印行号,主对角线之后打印列号
#include "stdio.h"
void main(){
int i,j,n;
printf("Input n =");
scanf("%d",&n);
for (i = 1;i <= n;i++) {
for (j = 1;j <= i;j++)
printf("%4d",i);
for (j = i + 1;j <= n;j++)
printf("%4d",j);
printf("\n");
}
}
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
(2)
特点:每行主对角线之前从行号打到n;主对角线之后从1打到行号-1
#include "stdio.h"
void main(){
int i,j,n;
printf("Input n=");
scanf("%d",&n);
for(i = 1;i <= n;i++) {
for(j = i;j <= n;j++)
printf("%4d",j);
for(j = 1;j <= i-1;j++)
printf("%4d",j);
printf("\n");
}
}
思考:图形位置向屏幕左边移动m列,以及图形位置放在屏幕中央该怎么办?例3:打印n阶杨辉三角形(n由键盘输入)
分析:杨辉三角形的第i行(i从0~n)是i次二项式(x+y)i 的展开系数
递推法计算组合数
#include "stdio.h"
void main(){
int c,n,i,j;
printf("Input n =");
scanf("%d",&n);
for (i = 0;i <= n;i++) {
for (j = 0;j < n-i;j++)
printf("%4c",' ');
c = 1;
for (j = 0;j <= i;j++) {
printf("%4d",c);
printf("%4c",' ');
c = c * (i - j) / (j + 1);
/*可以写成c *= (i - j) / ( j + 1)吗?*/ }
printf("\n");
}
}