回 帖 发 新 帖 刷新版面

主题:一个有点小变态的问题

老师让我们不用while  打印
*
**
***
****
*****
更有
    *
   ***
  *****
 *******
*********...........
(本人思考中,周末来看各位牛X的解法.)

回复列表 (共19个回复)

11 楼


最后的答案,不知好不好,应该很好了吧^^
#include<stdio.h>
void dengyao(char c,int n);
int main(){
    char c;int n;
    printf("你要用什么打这个三角形?");
    scanf("%c",&c);
    printf("输入三角形的高?");
    scanf("%d",&n);
    dengyao(c,n);
    return 0;
}

void dengyao(char c,int n){
    int p,k;
    k=1;
    p=1;
    while(p<=n){
        while(k<=n-p){
            printf(" ");
            k++;
        }
        if(k>n-p){
            k=1;
            while(k<=(2*p-1)){
                printf("%c",c);
                k++;
            }
            if(k>(2*p-1))
                           {
                k=1;
                printf("\n");
            }
            p++;
        }
    }
}
[em8]

12 楼

下次练习迭代吧

13 楼

#include <stdio.h>

void rpt(char c,int n)
{
    if(n>0)
    {
        putchar(c);
        rpt(c,n-1);
    }
}

void fun1(int n)  //画直角三角形
{
    if(n>0)
    {
        fun1(n-1);
        rpt('*',n);
        putchar('\n');
    }
}


void fun2(int n)  //画等腰三角形
{
    static int i=1;
    if(n>0)
    {
        rpt(' ',n-1);
        rpt('*',i);
        i+=2;
        putchar('\n');
        fun2(n-1);
    }
    else
        i=1;
}

int main()
{
    fun1(7);
    fun2(7);
    getch();
    return 0;
}

14 楼

[quote]#include <stdio.h>

void rpt(char c,int n)
{
    if(n>0)
    {
        putchar(c);
        rpt(c,n-1);
    }
}

void fun1(int n)  //画直角三角形
{
    if(n>0)
    {
        fun1(n-1);
        rpt('*',n);
        putchar('\n');
    }
}


void fun2(int n)  //画等腰三角形
{
    static int i=1;
    if(n>0)
    {
        rpt(' ',n-1);
        rpt('*',i);
        i+=2;
        putchar('\n');
        fun2(n-1);
    }
    else
        i=1;
}

int main()
{
    fun1(7);
    fun2(7);
    getch();
    return 0;
}

[/quote]
很漂亮的程序
只是主程序里fun1()和fun2()应该由用户自己指定

15 楼

好象少了个头文件,不过大哥的确厉害

16 楼

1.用for比较方便.
int main()
{
 for(int i=1;i<=5;++i)
 {
  for(int j=i;j<=1;++j)
  cont<<"*"<<endl;
 
 }
}
2.
int main()
{
 for(int i=1;i<=5;++i)
 {
  for(int j=1;j<=5-i;++j)
   cout<<" ";
  for(int k=1;k<=2i-1;++k)
  cont<<"*"<<endl;
 }
}

17 楼

好想错拉把
if(n==1)printf("%c",p);
else
是这样用的吗?
else的后面还有一个语句把

18 楼

prntf("     *      ")
prntf("    ***     ");
这要打的话,什么都不用了,呵

19 楼


比我厉害多了。

我来回复

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