杭电 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
 
 
 
主要就是指定位置输出字符 左边是2n-1/2-i;右边2n-1/2+i;再单独输出最后一行即可;
已AC代码:
#include<stdio.h> int main() {  char s;  int m,n,i,j;  int one=1;  while(scanf("%c",&s),s!='@')  {   scanf("%d",&n);   if(one==0)   printf("\n");   one=0;   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",s);     else if(j<(2*n-1)/2+i)     printf(" ");       }       printf("\n");   }   getchar();  }  return 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、付费专栏及课程。

余额充值