33,311
社区成员
发帖
与我相关
我的任务
分享
// ConsoleApplication4.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int isNum()
{
unsigned long num_input = 0;
cin >> num_input;
string num_input_string;
while (cin.fail())
{
cin.clear();
cin >> num_input_string;
cout << "输入的" << num_input_string << "不是数字,请输入一个数:";
cin >> num_input;
}
return num_input;
}
int main()
{
int num1;
int num2;
int num3;
int num4 = 0;
while (1) {
cout << "=====================================" << endl;
cout << "1.triangle 2.diamond 3.exit\ninput : ";
num1 = isNum();
if (num1 == 1) {
cout << "1.right-angle triangle 2.regular triangle\ninput : ";
num2 = isNum();
if (num2 == 1) {
cout << "size:";
cin >> num4;
for (int i = 0; i < num4; i++) {
for (int j = 0; j <= i; j++) {
cout << "*";
}
cout << endl;
}
}
else if (num2 == 2) {
cout << "size:";
cin >> num4;
for (int i = 0; i < num4; i++) {
for (int j = num4; j > i; j--) { cout << " "; }
for (int j = 0; j < (2 * i + 1); j++) { cout << "*"; }
cout << endl;
}
}
else { cout << "woring input!" << endl; }
}
else if (num1 == 2) {
cout << "1. filled diamond 2.blank diamond\ninput : ";
num3 = isNum();
if (num3 == 1) {
cout << "size:";
cin >> num4;
num4 = (num4 / 2) + 1;
for (int i = 0; i < num4; i++) {
for (int j = 0; j < num4 - i; j++) cout << " ";
for (int j = 0; j < (2 * i + 1); j++) cout << "*";
cout << endl;
}
for (int i = num4 - 2; i >= 0; i--) {
for (int j = 0; j < num4 - i; j++) cout << " ";
for (int j = 0; j < 2 * i + 1; j++) cout << "*";
cout << endl;
}
}
else if (num3 == 2) {
cout << "size:";
cin >> num4;
num4 = num4 / 2;
for (int i = 0; i < num4; i++) {
for (int j = 0; j < num4 - i; j++) cout << "*";
for (int j = 0; j < (2 * i + 1); j++) cout << " ";
for (int j = 0; j < num4 - i; j++)cout << "*";
cout << endl;
}
cout << endl;
for (int i = num4 - 1; i >= 0; i--) {
for (int j = 0; j < num4 - i; j++) cout << "*";
for (int j = 0; j < 2 * i + 1; j++) cout << " ";
for (int j = 0; j < num4 - i; j++)cout << "*";
cout << endl;
}
}
else { cout << "woring input!" << endl; }
}
else if (num1 == 3) {
return 0;
}
else { cout << "woring input!" << endl; continue; }
}
return 0;
}
3 问题拓展
<<C++控制台程序判断输入的数字>>https://blog.csdn.net/hou09tian/article/details/77426834
<<C++中输入流istream>>https://blog.csdn.net/hou09tian/article/details/78335548
希望能够帮到你if (!cin) {cin.clear();cin.sync();continue;}
if (!cin) {cin.clear();cin.sync();}
试试看。