Print Graphics Problerm (IV) (Append Code)
在mooc上看到老师用下面的方法来求解这道题,正好OJ上有一道类似的题目。用这种方法比用之前的方法写的代码更精简。
这是模板:
#include<stdio.h>
#include<math.h>
int main()
{
int i,j;
int m;
scanf("%d",&m);
for(i=-m;i<=m;i++){
for(j=-m;j<=m;j++)
if((abs(i)+abs(j))<=m)
printf("*");
else
printf(" ");
printf("\n");
}
return 0;
}
这是原题:
向标准输出上打印一些用ASCII字符组成的图形.编写一个函数用于输出ASCII图形。
用C语言实现:append.c中函数原型为
int print_graphic(int n);
功能:输出n层的图形。
Input
输入为一个奇数n,1
#include<stdio.h>
#include<math.h>
int print_graphic(int n)
{
int i,j;
for(i=-(n-1)/2; i<=(n-1)/2; i++)
{
for(j=-(n-1)/2; j<=(n-1)/2; j++)
if((abs(i)+abs(j))>=(n-1)/2)
printf("*");
else
printf(" ");
printf("\n");
}
}
int main()
{
int num;
scanf("%d", &num);
print_graphic(num);
return 0;
}
而我之前写的:
#include <stdio.h>
#include <stdlib.h>
int print_graphic(int n)
{
int i,j,kg = 0;
for(j = 0; j < n; j++)
printf("*");
printf("\n");
for(i = 1; i < (n+1)/2; i++)
{
if(i == 0 || i == n-1)
kg = 0;
else
kg = 2*i-1;
int xing = (n-kg)/2;
for(j = 0; j < xing; j++)
printf("*");
for(j = 0; j < kg; j++)
printf(" ");
for(j = 0; j < xing; j++)
printf("*");
printf("\n");
}
for(i = (n+1)/2-2; i >= 1; i--)
{
if(i == 0 || i == n-1)
kg = 0;
else
kg = 2*i-1;
int xing = (n-kg)/2;
for(j = 0; j < xing; j++)
printf("*");
for(j = 0; j < kg; j++)
printf(" ");
for(j = 0; j < xing; j++)
printf("*");
printf("\n");
}
for(j = 0; j < n; j++)
printf("*");
printf("\n");
}
int main()
{
int num;
scanf("%d", &num);
print_graphic(num);
return 0;
}
显得非常的冗杂。