- UID
 - 70751
 
 注册时间2010-11-1
阅读权限10
最后登录1970-1-1
周游历练 
  
 
 
 
该用户从未签到  
 | 
 
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; 
} |   
 
 
 
 |