- 时间限制: 1 Sec 内存限制: 128 MB
题目描述
输入正整数N(1≤N≤26),输出大写字母组成的等腰三角形(N行)
A
BBB
CCCCC
样例输入
5
样例输出
A
BBB
CCCCC
DDDDDDD
EEEEEEEEE
【Solution】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int n;
char ch='A';
scanf("%d",&n);
int i,j,k;
for(i=1;i<=n;i++){
for(k=n-1;k>=i;k--){
printf(" ");
}
for(j=1;j<=i;j++){
printf("%c",ch);
}
ch++;
printf("\n");
}
return 0;
}
Error!
出错了,发现三角形前面输出的空格个数有误…
【After Modification】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int n;
char ch='A';
scanf("%d",&n);
int i,j,k;
for(i=1;i<=n;i++){
for(k=(2*n-1)/2;k>=i;k--){
printf(" ");
}
for(j=1;j<=i;j++){
printf("%c",ch);
}
ch++;
printf("\n");
}
return 0;
}
Error!
缺少了半边!
【Final Result】
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
int n;
char ch='A';
scanf("%d",&n);
int i,j,k;
for(i=1;i<=n;i++){
for(k=(2*n-1)/2;k>=i;k--){
printf(" ");
}
for(j=1;j<=2*i-1;j++){
printf("%c",ch);
}
ch++;
printf("\n");
}
return 0;
}
Right!
【Summary】
利用数学中等差数列轻松找到一般规律:
空格个数:(2*n-1)/2
字符个数: 2*i-1
需要注意的是,大循环里各个小循环起到的作用,以及相互之间是如何衔接到一起的!
【帽子戏法】
- 时间限制: 1 Sec 内存限制: 128 MB
- 题目描述
输入正整数N(1≤N≤26),输出大写字母组成的等腰三角形(N行)
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
- 样例输入
5
- 样例输出
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
- 【Solution】
#include <stdio.h>
int main(int argc, char *argv[])
{
int n;
scanf("%d",&n);
int i,j,k;
char ch[26];
for(i=0;i<26;i++)
ch[i]='A'+i; //赋给数组ch26个大写字母
for(i=1;i<=n;i++){
for(j=n-i-1;j>=0;j--){
printf(" ");
} //输出空格
for(j=0;j<=(2*i-1)/2;j++){
printf("%c",ch[j]);
} //输出前大半个三角形
for(k=i-1,j=(2*i-1)/2;j<=(2*i-1),k>=0;j++){
k--;
printf("%c",ch[k]);
} //输出后小半个三角形
printf("\n");
}
return 0;
}
- 输入5:
- 输入26:
- 输入1:
Error!…
- 持续更新中