c++编写杨辉三角
#include <iostream>
using namespace std;
int main()
{
int a,i;
cout<<"please input a:";
cin>>a;
if(cin.fail()) //错误则返回 ?
return 1; //?
for(i=1;i<=a;i++) {
int m = 1;
while(m<=i) {
cout<<m;
m++;
}
int n = i-1;
while(n) {
cout<<n--; }
cout<<endl;
}
return 0;
}
//好多变量都是在要使用时才突然来个声明;这样好嘛?问~
这个杨辉三角代码看不懂,麻烦哥哥帮我写注释,写的详细细的~~或者杨辉三角c++程序该怎么写了? 展开
代码:
#include <iostream>
using namespace std;
int main()
{
//输入n,表示1~n行
long long n;
cout << "输入n:" <<endl;
cin >> n;
//定义n * n大的二维数组
long long a[n][n];
//开始存数
for (int i = 1;i <= n;i++)
{
//定义两条边上的1
a[i][i] = 1;
a[i][1] = 1;
}
//从第三行开始累加
for (int i = 3;i <= n;i++)
{
//每行从第二个累加
for (int j = 2;j <= i - 1;j++)
{
//第a[i][j]项等于左上的项加右上的项即 a[i][j] = a[i - 1][j - 1] + a[i - 1][j]
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
//输出杨辉三角
//双重for循环
for (int i = 1;i <= n;i++)
{
for (int j = 1;j <= i;j++)
{
cout << a[i][j] << " ";
}
//输出完一行后换行
cout << endl;
}
cout << endl;
//这里的cout << endl可以不写,因为后面有return 0
return 0;
}
输入样例:
输出样例:
#include<iostream>
using namespace std;
void pt(int n)
{
int a[20][20],i,j; //申明二维数组,和标记变量;i标记二维数组的行,j--列;
for(i=0;i<n;i++) //既然我选择了规规矩矩的下标从0开始访问,那么就要注意i最大取几?
//从第一行开始,下标0;
{
a[i][0]=1; //依次对每行(下标*)第一列(下标0)赋值1; //第一列都是1了;
a[i][i]=1; //对角斜线都是1; //注意赋值方向;
}
for(i=2;i<n;i++) //从第三行(数组下标2)开始,一直到n行(数组下标n-1);
// {
//双重循环对二维数组元素操作;
for(j=1;j<i;j++) //从第二列(--1)开始,一直到--
//厉害,j<i;要对杨辉三角图形实质关系研究透彻!
a[i][j]=a[i-1][j-1]+a[i-1][j]; //对杨辉三角其他位置赋值
// }不要{},でも???
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++) //********************这里j<=i就能控制第一行打印1个,第二行打印2个
cout<<" "<<a[i][j]; //这2步在一行行的输出 ;
cout<<endl; //英语endl:换行;
} //本{};是为了,在每行输出好后,来个换行;//可以试着去掉,就明显不换行咯;
}
void main()
{
int n;
cout << "please input n:" << endl;
cin >> n;
pt(n);
}
这是刚给别人回答问题改的代码,输出正确的。
另外回答你的问题,//好多变量都是在要使用时才突然来个声明;这样好嘛?
C++支持声明不用放在最前面,而C就规定声明一定要放最前面。使用才声明变量,可以更直观,如果是比较长的代码,使用的变量如果在最前面声明,找起来比较麻烦,使用才声明容易知道变量声明的目的
#include <iostream>
using namespace std;
int main()
{
int a,i,j;
cout<<"please input a:";
cin>>a;
if(cin.fail()) // 如果输入不是数字
return 0; // 释放内存
for(i=1;i<=a;i++){ // 外层循环 循环三角层数
int m = 1; //嵌套定义 这样的习惯不是很好 ,不建议
for(j = 1;j <= i;j ++){//内层循环 循环每层数字
//while(m<=i){
cout<<m;
m++;
}
int n = i-1;
while(n) //这里是输出 三角
{
cout<<n--;
}
cout<<endl;
}
return 0;
}