📄 +
字号:
#include <iostream>
#include <conio.h>
using namespace std;
//TopStarNum——用于判别所给数据是否能使三角形顶部星号数为1
//BottomStarNum──三角形的底边星号个数
//LineNumOrig——当使用默认梯度时,三角形的高度
//Grads——行间梯度差
//BottomLength——三角形地边长度
//LineNum──三角形的高度
//SpaceNum──每行前部的空白长度
//StarNum──每行“*”的长度
//CurLine──当前行数
//Jump——当使用默认梯度时,Jump=1;否则,Jump=Grads
//DefaultFlag——标志变量,当使用默认梯度时,DefaultFlag=1
/*
*画出方格矩阵即可求出各变量间的关系
*/
int main()
{
int UNEVEN;//标志变量,如果是奇数,则为1;否则,为0
int INPUTFLAG=1;
int TopStarNum,BottomStarNum, LineNumOrig,
SpaceNum,StarNum,CurLine,BottomLength,
Grads,LineNum=1,Jump,DefaultFlag;
char choice;
system("color 70");
system("title 三角形画图程序");
ReDraw:
cout<<"\n\t\t\t欢迎使用三角形画图程序\n\n\n\n\n\n\n\n";
while(INPUTFLAG) {
cout<<"\t\t请输入三角形底边的星号个数:\t\t__\b\b";
cin>>BottomStarNum;
cout<<endl<<"\t\t请输入三角形各行单侧梯度差(0使用默认):\t__\b\b";
cin>>Grads;
if(Grads==0) {
DefaultFlag=1;
Jump=1;
INPUTFLAG=0;
} else {
DefaultFlag=0;
TopStarNum=BottomStarNum;
LineNum=1;
while(TopStarNum>1) {
TopStarNum-=2*Grads;
LineNum++;
}
//如果给出的底边星号数和行间梯度差不能使顶部星号数为1,则不合法
if(TopStarNum!=1) {
INPUTFLAG=1;
cout<<endl;
cout<<"输入数据不合法!"<<endl<<endl;
} else {
INPUTFLAG=0;
Jump=Grads;
}
}
}
cout<<"\n\n\n\n";
//判断三角形底边长的奇偶,并求解三角形高度,设置标记变量
if(BottomStarNum%2!=0) {
UNEVEN=1;
LineNumOrig=BottomStarNum/2+1;
BottomLength=BottomStarNum;
} else {
UNEVEN=0;
LineNumOrig=BottomStarNum;
BottomLength=BottomStarNum*2-1;
}
if(DefaultFlag)
LineNum=LineNumOrig;
for(CurLine=1;CurLine<=LineNumOrig;CurLine+=Jump) {
cout<<"\t\t\t\t";//如果要求图像靠左边,将此行注释掉
//求出当前行前部的空格个数
if(UNEVEN)
SpaceNum=(BottomStarNum+1)/2-CurLine;
else
SpaceNum=BottomStarNum-CurLine;
//输出当前行前部的空格
for(;SpaceNum>0;SpaceNum--) {
cout<<" ";
}
//求出当前行中星号的个数
if(UNEVEN)
StarNum=CurLine*2-1;
else
StarNum=CurLine;
//输出当前行的星号
for(;StarNum>0;StarNum--) {
cout<<"*";
if(!UNEVEN)
cout<<" ";
}
//当前行结束,换行
cout<<endl;
}
cout<<"\n\n====三角形信息======================================================="<<endl<<endl;
cout<<"\t\t底部星号个数:\t\t"<<BottomStarNum<<endl<<endl;
cout<<"\t\t 高度:\t\t"<<LineNum<<endl<<endl;
cout<<"\t\t 底边长度:\t\t"<<BottomLength<<endl<<endl<<endl;
cout<<"\t\t按【Y】继续画三角形,其他任意键退出..";
choice=getch();
if(choice=='y'||choice=='Y') {
system("cls");
INPUTFLAG=1;
goto ReDraw;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -