主题:第一界编程比赛_题目
bluelight
[专家分:280] 发布于 2005-10-18 13:27:00
为响应号召,我就出个简单的吧!
用*号组合成一个三角形!行数由键盘输入(范围为:1~20,输入超过范围,则提示出错)。如:
输入一个数4,则:
输出以下组合:
*
***
*****
*******
共四行
如输入的是6,则:
*
***
*****
*******
*********
***********
共六行
如输入的是0,则输出
out of range(1~20),please retype:
比赛已完毕!!结论已出来:
http://www.programfan.com/club/showbbs.asp?id=113572
回复列表 (共39个回复)
沙发
eastcowboy [专家分:25370] 发布于 2005-10-16 10:42:00
哎呀睡过头了,10点10分起来,10点20分才看到题……
已经做出,需要帖代码吗?
板凳
黄金风格 [专家分:4050] 发布于 2005-10-16 10:48:00
#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 楼
wangyunzhou [专家分:810] 发布于 2005-10-16 11:01:00
我只会做这么简单的题:
#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 楼
shaneqi [专家分:5140] 发布于 2005-10-16 12:09:00
支持一下:
#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 楼
knocker [专家分:3380] 发布于 2005-10-16 12:10:00
俺也玩一把
#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 楼
eastcowboy [专家分:25370] 发布于 2005-10-16 12:24:00
楼上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 楼
whyhappy [专家分:1050] 发布于 2005-10-16 12:44:00
5楼的强
8 楼
wlsxj [专家分:1180] 发布于 2005-10-16 12:56:00
代码精简冠军属于5楼!!
一般冠军属于大家!!
9 楼
whyhappy [专家分:1050] 发布于 2005-10-16 13:05:00
不过看不懂5楼的,main(o,n)是什么意思啊。
10 楼
tanran [专家分:40] 发布于 2005-10-16 14:03:00
knocker
写出这么简单的程序
果然是强人
不愧是简洁冠军
我来回复