空心三角形(杭电2091)

/*空心三角形
 Problem Description
把一个字符三角形掏空。就能节省材料成本。减轻重量,但关键是为了追求还有一种视觉效果。在设计的过程中。须要给出各种花纹的材料和大小尺寸的三角形样板。通过电脑暂时做出来。以便看看效果。
Input
每行包括一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹。整数n表示等腰三角形的高。显然其底边长为2n-1。

假设遇到@字符。则表示所做出来的样板三角形已经够了。


Output
每一个样板三角形之间应空上一行,三角形的中间为空。

显然行末没有多余的空格。
Sample Input
X 2
A 7
@
Sample Output
 X
XXX
 
      A
     A A
    A   A
   A     A
  A       A
 A         A
AAAAAAAAAAAAA

*/
//注意格式
#include<stdio.h>
int main()
{
    char ch,k=0;
    int n,i,j;
    while(~scanf("%c %d",&ch,&n)&&ch!='@')
    {
        if(k==1)//这一步是关键,保证第一个数据输入进去不用 换行,从第二个数据開始,要换行
        printf("\n");
        else
        k=1;
        for(i=0;i<n;i++)
        {
            for(j=0;j<2*n-1;j++)
            {
                if((j==(2*n-1)/2-i)||(j==(2*n-1)/2+i)||(i==n-1))
                printf("%c",ch);
                else if(j<(2*n-1)/2+i)
                printf(" ");
            }
            printf("\n");
        }
        getchar();
    }
    return 0;
}
           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是用C语言打印星号空心三角形的代码: ``` #include <stdio.h> int main() { int n, i, j; printf("请输入三角形的行数:"); scanf("%d", &n); for (i = 1; i <= n; i++) { for (j = 1; j <= n - i; j++) { printf(" "); } printf("*"); for (j = 1; j < 2 * (i - 1); j++) { printf(" "); } if (i != 1) { printf("*"); } printf("\n"); } for (i = 1; i <= n; i++) { printf("* "); } return 0; } ``` 运行结果: ``` 请输入三角形的行数:5 * * * * * * * * * * * * * * ``` ### 回答2: 以下是用C语言打印出星号空心三角形的代码: ``` #include <stdio.h> int main() { int num; printf("请输入三角形的行数:"); scanf("%d", &num); for (int i = 1; i <= num; i++) { // 控制行数 for (int j = 1; j <= num - i; j++) { // 打印空格 printf(" "); } for (int k = 1; k <= 2 * i - 1; k++) { // 打印星号 if (k == 1 || k == 2 * i - 1 || i == num) { printf("*"); } else { printf(" "); } } printf("\n"); } return 0; } ``` 这段代码通过两层循环来实现空心三角形的打印。外层循环控制行数,内层循环分别打印空格和星号。首先,根据输入的行数决定需要打印多少行。然后,根据当前行数打印相应数量的空格,再打印相应数量的星号。其中,第一个星号、最后一个星号以及最后一行的星号都应该打印出来,其他位置打印空格。最后在每行末尾打印一个换行符。这样就能够在控制台上打印出一个星号空心三角形。 ### 回答3: 要打印出C语言的星号空心三角形,可以使用嵌套循环和条件判断。具体步骤如下: 1. 首先,定义一个变量n表示空心三角形的行数,用户可以通过输入来设置n的值。 2. 使用两个嵌套的for循环,外层循环控制行数,内层循环控制每行的星号个数。 3. 在内层循环中,设置一个条件判断语句,判断是否位于三角形的边缘或者内部,根据条件打印相应的符号。 4. 如果当前位置是边缘或者底部行,则打印一个星号;否则,判断当前位置是否在第一个星号和最后一个星号之间,如果是,则打印一个空格,否则打印一个星号。 代码示例如下: #include <stdio.h> int main() { int n; printf("请输入空心三角形的行数:"); scanf("%d", &n); for (int i = 1; i <= n; i++) { for (int j = 1; j <= 2 * n - 1; j++) { if (i == n || j == n - i + 1 || j == n + i - 1) { printf("*"); } else if (j > n - i + 1 && j < n + i - 1) { printf(" "); } else { printf(" "); } } printf("\n"); } return 0; } 以上代码实现了一个打印星号空心三角形的程序。用户可以输入空心三角形的行数,然后程序会打印出对应行数的星号空心三角形

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值