selby 发表于 2010-11-12 03:15:40

Selby打印的菱形

Nisy的C视频第五课作业时打出菱形。刚刚把这个图形实现了,但是觉得自己的代码写的有些繁琐。自己先把这个图形看成两个三角形,然后按照空格找规律把图形实现,规律好像没找好。
更重要的是最初没有写上这两句 scanf("%c",&b); if(b!='\n'){ printf("Input error!\n"); goto m;} 在开始要求输入数字时,如果输入字母会造成死循环。百度了解决方法,以后注意。
不足的地方希望大家指点一下。谢谢。

#include <stdio.h>
int main(void)
{
int x,n,i,j;
char b,s;
m: printf("Please input an odd integer between 3 and 25>\n");
          scanf("%d",&n);
          scanf("%c",&b);
          if(b!='\n'){ printf("Input error!\n"); goto m;}
          if((n<3)||(n>25)||(n%2==0))
                  {
                          printf("Input error!\n");
      goto m;                  
                  }
n/=2;
for(x=0;x<=n;x++)
{
      for(i=x;i<n;i++)
         {printf(" ");}
         printf("*");
      for(j=0;j<2*x-1;j++)
         {printf(" ");}
         if(j!=0) {printf("*");}
                 printf("\n");
         
}

for(x=0;x<n;x++)
{
      for(i=0;i<=x;i++)
                   {printf(" ");}
                   printf("*");
          for(j=2*n-2*x-3;j>0;j--)
                   {printf(" ");}
                if(2*n-2*x-3>0) printf("*");
                printf("\n");
}
mm: printf("Continue? (y/n)>");
scanf(" %c",&s);
switch(s)
{
case 'y': goto m; break;
case 'n': break;
default : printf("Input error!\n"); goto mm;
}
return 0;
}

努力ing 发表于 2010-11-13 12:29:45

呵呵~~还用到了goto。厉害!
页: [1]
查看完整版本: Selby打印的菱形