使用iostearm头文件,根据键盘输入的行数m,设计输出m行的菱形图案,图案中轴为m个*号并顶格输出,每行*后直接换行(无空格);如输入的数字不符合要求,则输出“Invalid number!”并换行。
时间: 2023-06-02 15:01:57 浏览: 97
输入数字输出菱形
以下是C++代码:
```cpp
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <sstream>
#include <iomanip>
#include <ctime>
#include <cassert>
using namespace std;
int main() {
int m;
cin >> m;
if (m % 2 == 0 || m < 1) {
cout << "Invalid number!" << endl;
return 0;
}
for (int i = 1; i <= m; i++) {
int cnt = (i <= (m+1)/2 ? i : m-i+1);
for (int j = 1; j <= (m-cnt)/2; j++) {
cout << " ";
}
for (int j = 1; j <= cnt; j++) {
cout << "*";
}
cout << endl;
}
return 0;
}
```
首先输入数字m,如果不符合要求(偶数或小于1),则输出“Invalid number!”并结束程序。
对于每一行i,计算该行应该有的星号个数cnt,其中cnt的大小与i的大小有关,当i <= (m+1)/2时,cnt = i,否则cnt = m-i+1。
接着输出(m-cnt)/2个空格,再输出cnt个星号,最后换行即可。注意输出的星号后面不要加空格。
这里的时间复杂度为O(m^2),可以通过本题。
阅读全文