注册 登录
编程论坛 C语言论坛

在主函数中输入一个字符ch和一个正整数n(20>=n>=1),然后在被调函数中输出由n行字符ch构成的等腰三角形。

卮酒 发布于 2020-05-15 14:01, 3418 次点击
为什么成不了等腰三角形,哪里有问题?
#include<stdio.h>
void printstar(char ch, int n)
{int i,j;
 for(i=1;i<=n;i++)
  {for(j=1;j<=n-i;j++)
     printf(" ");
   for(j=i;j<=2*i-1;j++)
     printf("%c",ch);
 printf("\n");
  }
return;
}
int main()
{char ch;
int n;
ch=getchar();
scanf("%d",&n);
printstar(ch,n);
return 0;
}
4 回复
#2
纯蓝之刃2020-05-15 14:09
程序代码:
#include<stdio.h>
void printstar(char ch, int n)
{
    int i,j;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=n-i; j++)
            printf(" ");
        for(j=i; j<=2*i-1; j++)
            printf("%c",ch);
        for(j=i; j<=2*i-2; j++)
            printf("%c",ch);
        for(j=1; j<=n-i; j++)
            printf(" ");
        printf("\n");
    }
    return;
}
int main()
{
    char ch;
    int n;
    ch=getchar();
    scanf("%d",&n);
    printstar(ch,n);
    return 0;
}
#3
卮酒2020-05-15 14:13
回复 2楼 纯蓝之刃
谢谢!
#4
lin51616782020-05-15 15:08
用格式控制符输出图形非常方便 但很少看见有人用
程序代码:

#include<stdio.h>
#include<string.h>
void printstar(int ch, int n)
{
    char str[36] = "";
    memset(str, ch, n*2+1);
    for(int i=0; i<n; ++i)
        printf("%*.*s\n", n+i, i*2+1, str);
}
int main()
{
    char ch;
    int n;
    scanf(" %c%d",&ch, &n);
    printstar(ch, n);
    return 0;
}
#5
田心乡隹2020-05-15 22:27
#include<stdio.h>
void printstar(char ch, int n)
{
    int i,j,k;
    for(k=n;0<k; k--)
    {
        for(j=(n-k);0<j;j--)
            printf(" ");
        for(i=(k*2-1);0<i;i--)
            printf("%c",ch);
      
        
        printf("\n");
    }
    return;
}
int main()
{
    char ch;
    int n;
    ch=getchar();
    scanf("%d",&n);
    printstar(ch,n);
    return 0;
}
新手改了半天

[此贴子已经被作者于2020-5-15 22:30编辑过]

1