PTA 7-121 空心菱形 分数 10
作者 李祥 单位 湖北经济学院
请编写程序,输入菱形的高,输出由星号勾勒出的菱形。
输入格式
行数(正整数)
输出格式
若行数为奇数,则显示星号勾勒出的菱形,否则显示错误信息。
输入样例1
5
输出样例1
*
* *
* *
* *
*
输入样例2
8
输出样例2
Error
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
#include <math.h>
int main()
{
int n;//行数(正整数)
scanf( "%d",&n );//输入
if( n % 2 != 0 )
//若行数为奇数,则显示星号勾勒出的菱形
{
for( int i = -(n - 1) / 2;i <= (n - 1) / 2;i++ )
{
//i代表了行数,同时也记录了每行需求前置空格的数量
for( int j = 1;j <= (n - abs(i));j++ )
{
//从最左侧开始打印,n-绝对值(i)即为最右侧*所在位置,也是一行的最后值
if( j <= abs(i) || j > abs(i) + 1 && j < (n - abs(i)) )
//j<=绝对值(i)即前置空格,j > 绝对值(i)+1 即第一个*号后,j<最后值,即第二个*号前
printf(" ");//打印空格
else
printf("*"); //打印*
}
printf("\n");
}
}
else
{
printf("Error");//否则显示错误信息
}
return 0;
}
解题思路
根据输入菱形的高,输出由星号勾勒出的菱形的步骤:
step 1:若行数为奇数,则显示星号勾勒出的菱形,否则显示错误信息;
step 2:输入行数(正整数),也记录了每行需求前置空格的数量;
step 3:从最左侧开始打印,到最右侧所在位置;
step 4:打印前置空格,第一个号后,第二个号前,在满足条件下输出空格和。
归属知识点
选择结构,循环结构