请大家帮我改改关于输出回形数字的程序!
前几天在这个论坛上看到一个朋友出的题:
让你设计一个程序,输入N的数值,然后程序会自动输出一个图形,
如N=3时输出:
33333
32223
32123
32223
33333
我设计了一个程序:
#include <stdio.h>
main()
{
int x,y,n,j,m;
m=0;
printf("shu ru n\n");
scanf("%d",&n);
j=n*2-1;
for(x=1;x<=j;x++)
for(y=1;y<=j;y++)
{
if(x==1||y==1||x==j||y==j) printf("%d",n);
else if (x==2||y==2||x==j-1||y==j-1) printf("%d",n-1);
else if (x==3||y==3||x==j-2||y==j-2) printf("%d",n-2);
else if (x==4||y==4||x==j-3||y==j-3) printf("%d",n-3);
else if (x==5||y==5||x==j-4||y==j-4) printf("%d",n-4);
else if (x==6||y==6||x==j-5||y==j-5) printf("%d",n-5);
m++;
if (m%j==0) printf("\n");
}
getch();
}
这个程序上机测试可以通过,不过就是有缺陷:
if(x==1||y==1||x==j||y==j) printf("%d",n);
else if (x==2||y==2||x==j-1||y==j-1) printf("%d",n-1);
else if (x==3||y==3||x==j-2||y==j-2) printf("%d",n-2);
else if (x==4||y==4||x==j-3||y==j-3) printf("%d",n-3);
else if (x==5||y==5||x==j-4||y==j-4) printf("%d",n-4);
else if (x==6||y==6||x==j-5||y==j-5) printf("%d",n-5);
如果对方输入的数值大于6就会出错!当然,可以多加几条else语句把有效输入范围扩大,不过这样还是不实用,请高手帮我改改!谢了!