回 帖 发 新 帖 刷新版面

主题:第一界编程比赛_题目

为响应号召,我就出个简单的吧!
用*号组合成一个三角形!行数由键盘输入(范围为:1~20,输入超过范围,则提示出错)。如:
输入一个数4,则:
输出以下组合:
     *
    ***
   *****
  *******
共四行

如输入的是6,则:
       *
      ***
     *****
    *******
   *********
  ***********
共六行
如输入的是0,则输出
out of range(1~20),please retype:
比赛已完毕!!结论已出来:
http://www.programfan.com/club/showbbs.asp?id=113572

回复列表 (共39个回复)

沙发

哎呀睡过头了,10点10分起来,10点20分才看到题……
已经做出,需要帖代码吗?

板凳

#include <stdio.h>

int main()
{
  int i,j,n;
  printf("Please enter the number of col(1~20):\n");
  while(1)
  {
     scanf("%d",&n);
     if(1<=n&&n<=20) break;
     else
       printf("out of range(1~20),please retype:\n");     
   }
  for(i=0;i<n;i++)
  {
     for(j=i;j<n-1;j++) printf(" ");
     for(j=0;j<2*i+1;j++) printf("*");
     printf("\n");
  }
  return 0;
}

3 楼

我只会做这么简单的题:
#include <iostream.h>
void fun(int);
int main()
{
    int n;
    cout<<"请输入一个数:"<<endl;
    cin>>n;
    fun(n);
    return 0;
}
void fun(int n)
{
    int i,m=n;
    for(i=0;i<n;i++)
    {    m--;
        for(int j=0;j<m;j++)
            cout<<' ';
         for(int k=0;k<(2*i+1);k++)
             cout<<'*';
         cout<<endl;
    }
}

4 楼

支持一下:
#include <iostream.h>
#include <stdlib.h>

int main()
{ int i,j,k,n;
  cout<<"请输入行数(n小于20大于1)" <<endl;
  cin>>n;
  while(1)
  { if(n>20)
    { cout<<"输入超过范围,重新输入:"<<endl;
     cin>>n; continue;
     }
    if(n==0)
    { cout<<"out of range(1~20),please retype"<<endl;
      cin>>n; continue;
    }
    if(n<=20&&n>=1)
    break;
  }
  for(i=1;i<=n;i++)
   { for(j=i;j<n;j++)
     cout<<" ";
      for(k=0;k<2*i-1;k++)
       cout<<"*";
       cout<<endl;
    }
  system("PAUSE");
  return 0;
}

5 楼

俺也玩一把
#define _ "****************************************"
#define o_o sizeof(_)-1
main(o,n){printf("%*s\n",o_o+o/2,_+o_o-o,o==1&&scanf("%d",&n)),++o<2*n?main(o+1,n):main(1,n);}

忘了说了,请用TC编译^_^

6 楼

楼上main函数不标准啊。
我把我的帖了,特点是每一行只用一个printf,而不是每个字符都用。


#include<stdio.h>
int main(void)
{
    int nLines;
    int i,j;
    char buf[2*20],pbuf;
    printf("input number of lines:\n");
    scanf("%d",&nLines);
    while(nLines<1 || nLines>20)
    {    printf("out of range(1~20),please retype:\n");
        scanf("%d",&nLines);
    }
    for(i=0;i<nLines;++i)
    {    pbuf = 0;
        for(j=1;j+i<nLines;++j)
            buf[pbuf++]=' ';
        for(j=0;j<2*i+1;++j)
            buf[pbuf++]='*';
        buf[pbuf] = '\0';
        printf("%s\n",buf);
    }
    return 0;
}

7 楼

5楼的强

8 楼

代码精简冠军属于5楼!!
一般冠军属于大家!!

9 楼

不过看不懂5楼的,main(o,n)是什么意思啊。

10 楼

knocker
写出这么简单的程序
果然是强人
不愧是简洁冠军

我来回复

您尚未登录,请登录后再回复。点此登录或注册