题目一:编写程序,用户输入大写字母,产生一个金字塔图案

#include<stdio.h>
#include<stdlib.h>
//每一行都是由:“空格、升序字母、降序字母” 序列构成,只要分析出第i行中有多少个空格、升序字母和降序字母即可。
int main(int argc, char const *argv[])
{
char ch;
scanf("%c",&ch);//输入字母
if((ch<'A')||(ch>'Z'))
{
printf("只接受大写字母\n");
exit(0);
}
int line =ch-'A'+1;;//总共打印几行
int i,j;
for(i=1;i<=line;i++){//从第一行开始打印
for ( j = 0; j < line-i; j++)//打印空格
{
printf(" ");
}
for( j=0;j<i;j++) //打印升序
{
printf("%c",'A'+j);
}
if(i>1){//从第二行开始
for( j=i-2;j>=0;j--)//打印降序
{
printf("%c",'A'+j);
}
}
printf("\n");
}
return 0;
}
题目二,打印如下图形

#include <stdio.h>
void printSpaces(int count) { //打印空格
for (int i = 0; i < count; i++) {
printf(" ");
}
}
void printStars(int count) { //打印星号
for (int i = 0; i < count; i++) {
printf("*");
}
printf("\n");
}
void printDiamond(int rows) {
int i;
// 打印上半部分
for (i = 1; i <= rows; i++) {
printSpaces(rows - i);
printStars(2 * i - 1);
}
// 打印下半部分
for (i = rows - 1; i >= 1; i--) { // 相当于逆着打印上半部分
printSpaces(rows - i);
printStars(2 * i - 1);
}
}
int main() {
int rows;
printf("请输入行数: ");
scanf("%d", &rows);
if (rows > 0) {
printDiamond(rows);
} else {
printf("输入错误\n");
}
return 0;
}