飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2873|回复: 1

[C/C++] Selby打印的菱形

[复制链接]

该用户从未签到

发表于 2010-11-12 03:15:40 | 显示全部楼层 |阅读模式
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;
}
PYG19周年生日快乐!

该用户从未签到

发表于 2010-11-13 12:29:45 | 显示全部楼层
呵呵~~还用到了goto。厉害!
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表