【ZZULIOJ】1108: 打印数字图形(函数专题)

ZZULIOJ题解

1108: 打印数字图形(函数专题)

题目描述
从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形。要求在程序中定义并调用如下函数:PrintSpace(m)用来输出m个空格;PrintDigit(m)来输出一行中的数字串"12…m…21"(该行中的最大数字是m)。函数原型如下:
void PrintDigit(int m);
void PrintSpace(int m);
对于C/C++代码的提交,本题要求必须通过定义PrintSpace函数、PrintDigit函数和main函数实现,否则,返回编译错误。

输入
正整数n(1≤n≤9)。

输出
指定数字图形。

样例输入

5

样例输出

    1
   121
  12321
 1234321
123454321
 1234321
  12321
   121
    1

函数专题的打印图形,注意题目上的本题要求,需要按照要求去定义函数,所以读题很关键的。哈哈。难度上并不难,实际上是循环语句和函数的结合考察。不过这类题刚开始还是很费时间的,当然逻辑结构清晰是最好不过的了。自己对以前的代码比对修改了一下,发现以前确实没有现在逻辑清晰或者理解更好。哈哈。

代码

#include<stdio.h>
void PrintDigit(int n) {//打印数字
	int k=1;
	while(k<=n){//前半部分用变量k来完成
	printf("%d",k++);//这里利用了k++,先用k再加一的特性,注意区别 
	//k++;不习惯可以分开写 
	}  
	n--;//打印后半部分数字,从n-1开始 (此处可以换成k-=2;因为如果执行上面操作k是等于n+1的所以减2) 
	while(n>=1){//后半部分也可以用k完成,用n也一样。 
	printf("%d",n--);//这里利用了n--,先用n再减一的特性,注意区别 
	//n--;不习惯可以分开写 
	}  
}
 
void PrintSpace(int n) {//打印空格
	for(int k = 1; k <= n; k++)
		printf(" ");//按照需要的空格数字打印空格 
}
 
int main (){
	int n;//定义行数n 
	scanf("%d", &n);//键盘读入n 
	for(int j = 1; j <= n; j++) {//打印上层
		PrintSpace(n-j);//空格和当前数字之和为n 
		PrintDigit(j);//打印当前行数字 
		printf("\n");//换行 
	}
	for(int j = n - 1; j > 0; j--) {//打印下层,从n-1开始。 
		PrintSpace(n-j);//空格和当前数字之和为n 
		PrintDigit(j);//填充当前行数字 
		printf("\n");//换行 
	}
	return 0;//程序正常结束 
} 
  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

 江海寄余生 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值