算法笔记3.3-A题-输出梯形
题目链接
//图形输出主要在于找清楚输出图案数量与行,列之间的数量关系
#include <cstdio>
const char ch = '*';
int main(void)
{
int N;
while(scanf("%d", &N) != EOF)
{
int tot = N + 2 * (N - 1);
for(int i = 1; i <= N; i++)
{
for(int j = 1; j <= tot; j++)
{
if(j <= (N - i) * 2) printf(" ");
else printf("%c", ch);
}
printf("\n");
}
}
return 0;
}
算法笔记3.3-B题-Hello World for U
题目链接
#include <cstdio>
#include <cstring>
char str[100];
int main(void)
{
scanf("%s", &str);
int len = strlen(str), n1 = (len + 2) / 3, n3 = n1, n2 = len + 2 - n1 - n3; //这是根据题意推导的公式
for(int i = 0; i < n1 - 1; i++)
{
for(int j = 0; j < n2; j++)
{
if(j == 0) printf("%c", str[j + i]);
else if(j == n2 - 1) printf("%c", str[len - i - 1]);
else printf(" ");
}
printf("\n");
}
for(int i = 0; i < n2; i++)
printf("%c", str[n1 + i - 1]);
return 0;
}
算法笔记3.3-C题-等腰梯形
题目链接
#include <cstdio>
const char ch = '*';
int main(void)
{
int N, M;
scanf("%d", &M);
while(M--)
{
scanf("%d", &N);
int tot = N + 2*(N-1); //每层总数
for(int i = 1; i <= N; i++)
{
for(int k = 1; k <= N - i; k++)
printf(" ");
for(int j = 1; j <= N + 2 * (i - 1); j++)
printf("%c", ch);
printf("\n");
}
}
return 0;
}
算法笔记3.3-D题-沙漏图形 tri2str [1*+]
题目链接
#include <cstdio>
const char ch = '*';
int main(void)
{
int n;
while(scanf("%d", &n) != EOF)
{
for(int i = 1; i <= n; i++) //倒三角输出
{
for(int j = 1; j <= i - 1; j++)
printf(" ");
int flag = 1;
for(int k = i - 1; k <= 2 * n - i; k++)
{
if(flag) {printf("%c", ch); flag = 0;}
else {printf(" "); flag = 1;}
}
printf("\n");
}
//正三角输出,由于对称性,所以直接把倒三角倒数两层反着输出就行了
for(int i = n - 1; i >= 1; i--)
{
for(int j = 1; j <= i - 1; j++)
printf(" ");
int flag = 1;
for(int k = i - 1; k <= 2 * n - i; k++)
{
if(flag) {printf("%c", ch); flag = 0;}
else {printf(" "); flag = 1;}
}
printf("\n");
}
}
return 0;
}