打印图形
以下图形用什么算法实现程序最简单?你会考虑哪些测试用例来保证程序的正确性和坚固性?请给出你的实现程序。(图中n=5)
这题颇有意思,本人代码如下供参考
#include<stdio.h>
void reverse(int start, int end);
int main()
{
/*先读入一个数,n,认为0<n<10
先打印上半部分,再打印下半部分
上半部分:打印(n-1-i)*2个空格,然后开始打印数字
数字的正逆向打印,有三种思路
1.使用数组暂存数字
2.通过恰当巧妙地循环
3.使用递归
下半部分同理*/
int n;
if (1 == scanf("%d", &n)) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n - 1-i; j++)
printf(" ");
reverse(1, i + 1);
putchar('\n');
}
for (i = 1; i < n; i++) {
for(j=0;j<i;j++)
printf(" ");
reverse(1, n - i);
putchar('\n');
}
}
return 0;
}
void reverse(int start,int end)
{
printf("%2d",start);
if (start < end)
reverse(start+1, end);
if(start != end)
printf("%2d", start);
}
标签:4.7,慕课,int,程序,北理工,讨论题 From: https://www.cnblogs.com/alien-han/p/16923340.html