第一道面试题 第一道困难题解答记录
输入一个奇数 n,输出一个由 * 构成的 n 阶实心菱形。
输入格式
一个奇数 n。
输出格式
输出一个由 * 构成的 n 阶实心菱形。
具体格式参照输出样例。
数据范围
1≤n≤99
输入样例:
5
输出样例:
*
***
*****
***
*
我的解法:总数减去这一行的星号个数除以2,就是前面所需的空格个数
两边都是从1个开始减,没向中间走一行每一行的个数就加(减)2
中间这一行的个数就是行数
代码如下
#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int a;
cin>>a;
int tmp=1;
while(tmp<=a-2) {
int t=0;
while(t<(a-tmp)/2){
cout<<" ";
t++;
}
for (int i = 1 ; i <= tmp ; i++) {
cout <<"*";
}
cout<<endl;
tmp+=2;
}
///通过只使用for循环的方式,我们可以发现我们使用for循环循环更加清晰,
//结构更加明确,大多数的需要while好几行的题,我们用for循环一句就可以实现
for(int i=0;i<a;i++)cout<<"*";
cout<<endl;
for(int i=a-2;i>0;i-=2){
for(int t=0;t<(a-i)/2;t++)cout<<' ';
for(int t=0;t<i;t++)cout<<'*';
cout<<endl;
}
return 0;
}



浙公网安备 33010602011771号