本文主要是介绍用*号组合成一个三角形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
编程爱好者上的题目,一个一个收集,同样的题目做成这样太厉害了
用*号组合成一个三角形!行数由键盘输入(范围为:1~20,输入超过范围,则提示出错)。如:
输入一个数4,则:
输出以下组合:
*
***
*****
*******
共四行
如输入的是6,则:
*
***
*****
*******
*********
***********
共六行
如输入的是0,则输出
out of range(1~20),please retype:










































































#include <stdio.h>
#include <ctype.h>
#define MAX 20
#define MIN 1
void fun(int i, int n);
int getnum(int lim);
main()
{
int i;
while((i = getnum(MAX)) != -1)
if(i)
fun(i, i);
}
int getnum(int lim)
{
char c[MAX];
int i, j;
for(i = 0 ; isspace(c[i] = getchar()); )
;
if( !isdigit(c[i]))
if(c[i] == EOF)
return -1;
else{
printf("please enter a number!/n");
return 0;
}
for( ; --lim && isdigit(c[++i] = getchar()); )
;
c[i] = '/0';
if( (j = atoi(c)) <= MAX && j >= MIN)
return j;
else{
printf("out of range: %d - %d/n",MIN,MAX);
return 0;
}
}
void fun(int i, int n)
{
int j;
for( j = i - 1; j > 0 ; j--)
putchar(' ');
for( ; j < 2 * (n - i) + 1 ; j++)
putchar('*');
putchar('/n');
if(--i)
fun(i,n);
}
5
/*Odd Asterisks*/
#include<stdio.h>
#include<conio.h>
int main(void)
{
int i,j,k,n,flag=1; /*flag是控制循环的变量*/
char ch;
while(flag)
{
printf("/nContinue? (Y/N)/n");
ch=getch();
if(ch=='N'||ch=='n')
{ /*输入'n' 或者 'N'则退出循环*/
printf("/nBye!/n");
getch();
flag=0;
}
else if(ch=='Y'||ch=='y')
{ /*输入'y'或者'Y'则重复进行下面的操作*/
printf("/nInput the number of lines: /n");
scanf("%d",&n);
if(n>20)
{ /*判断n是否大于20,大于20则提示重新输入*/
printf("/nError input. Please make sure the number you entered");
printf(" is no bigger than 20. Press any key to enter again./n");
getch();
}
else
{
for(i=0;i<n;i++)
{ /*控制行的输出*/
for(j=n;j>i;j--) /*控制星号前空格的输出*/
printf(" ");
for(j=0;j<=i;j++) /*控制一左边一半星号的输出*/
printf("*");
for(k=0;k<i;k++) /*控制一右边一半星号的输出*/
printf("*");
printf("/n");
}
}
}
else
{ /*输入'n'、'N'、'y'、'Y'之外的键则提示重新输入*/
printf("/nError input! Press any key to input again, please./n");
getch();
}
}
return 0;
}
这篇关于用*号组合成一个三角形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!