主题:数字金字塔程序优化
#include "stdafx.h"
#include<iostream>
#include<math.h>
#include<ctype.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int rows;
int i,j,k,m;
cin>>rows; //输入行数
cout<<endl;
while(rows!=0)
{
if(rows<0) //如果行数小于0则提示,并要求重新输入。
{
cout<<"Input fail,angain please."<<endl; //输入字母则进入死循环。
cin>>rows;
}
if(rows>0)
{
system("cls");
for(i=1;i<=rows;i++)
{
m=i;
for(k=1;k<=3*(rows-i);k++)
cout<<" ";
for(j=1;j<=(2*i-1);j++)
{
cout<<" "<<i-abs(j-i)<<" ";
}
cout<<endl;
}
cout<<"0:EXIT"<<endl<<"Any number go on"<<endl; //输入0退出,任意数字继续
cin>>rows; //输入字母则产生严重错误,肯
} //请解决办法。
// getchar();
// getchar();
}
return 0;
}
程序是写对了,但它存在几个小问题:
一、小于10行数字都可以对齐,大于10行后数字不能对齐。已经上传有图片,大家看一看就知道了
二、输入数字金字塔行数要求,输入0则退出,输入数字则重新输出一个数字金字塔。输入字母则提示 Input fail,angain please,并要求重新输入。可是输入字母时却没有达到我想要的功能。肯请各位帮忙看一下,给出解决办法。
#include<iostream>
#include<math.h>
#include<ctype.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int rows;
int i,j,k,m;
cin>>rows; //输入行数
cout<<endl;
while(rows!=0)
{
if(rows<0) //如果行数小于0则提示,并要求重新输入。
{
cout<<"Input fail,angain please."<<endl; //输入字母则进入死循环。
cin>>rows;
}
if(rows>0)
{
system("cls");
for(i=1;i<=rows;i++)
{
m=i;
for(k=1;k<=3*(rows-i);k++)
cout<<" ";
for(j=1;j<=(2*i-1);j++)
{
cout<<" "<<i-abs(j-i)<<" ";
}
cout<<endl;
}
cout<<"0:EXIT"<<endl<<"Any number go on"<<endl; //输入0退出,任意数字继续
cin>>rows; //输入字母则产生严重错误,肯
} //请解决办法。
// getchar();
// getchar();
}
return 0;
}
程序是写对了,但它存在几个小问题:
一、小于10行数字都可以对齐,大于10行后数字不能对齐。已经上传有图片,大家看一看就知道了
二、输入数字金字塔行数要求,输入0则退出,输入数字则重新输出一个数字金字塔。输入字母则提示 Input fail,angain please,并要求重新输入。可是输入字母时却没有达到我想要的功能。肯请各位帮忙看一下,给出解决办法。