编写C++程序打印杨辉三角的问题

appxsl 2014-10-11 11:50:34
题目:打印出来杨辉三角(要求打印10行即可)

我的解答:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
void Yanghui_Triangle(int array[10][10]);
int a[10][10];
int i, j, n;
Yanghui_Triangle(a);
for (n = 1, i = 0; n<11, i < n; n++, i++)
for (j = 0; j < n; j++)
cout << a[i][j] << " " << endl;
return 0;
}
void Yanghui_Triangle(int array[10][10])
{
int i, j, n;
for (n = 1,i = 0 ; n<11,i < n ; n++,i++ )
for (j = 0; j < n; j++)
if ((j = 0) ||( i = j))
array[i][j] = 1;
else
array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
}

首先,我这个代码程序有错误。运行之后显示不出来杨辉三角。但是我不知道错误是不是出在标红的代码上面。所以,各位大神,我想问一下,标红的地方能这样编写吗?我记得我曾经看过一个代码可以在一个循环里写两个自变量的。
...全文
784 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-10-13
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
//按如下格式打印杨辉三角形的前MAXN行。
//  1
//  1 1
//  1 2 1
//  1 3 3 1
//  1 4 6 4 1
//  1 5 10 10 5 1
#include <stdio.h>
#define MAXN 68
unsigned __int64 y[MAXN][MAXN];
int i,j;
void main() {
    printf("1\n");
    printf("1 1\n");
    y[1][0]=1ui64;y[1][1]=1ui64;
    for (i=2;i<MAXN;i++) {
        y[i][0]=1ui64;printf("1 ");
        for (j=1;j<=i-1;j++) {
            y[i][j]=y[i-1][j-1]+y[i-1][j];
            printf("%I64u ",y[i][j]);
        }
        y[i][i]=1ui64;printf("1\n");
    }
}
//1
//1 1
//1 2 1
//1 3 3 1
//1 4 6 4 1
//1 5 10 10 5 1
//1 6 15 20 15 6 1
//1 7 21 35 35 21 7 1
//1 8 28 56 70 56 28 8 1
//1 9 36 84 126 126 84 36 9 1
//...
//1 67 2211 47905 766480 9657648 99795696 869648208 6522361560 42757703560 247994680648 1285063345176 5996962277488 25371763481680 97862516286480 345780890878896 1123787895356412 3371363686069236 9364899127970100 24151581961607100 57963796707857040 129728497393775280 271250494550621040 530707489338171600 972963730453314600 1673497616379701112 2703342303382594104 4105075349580976232 5864393356544251760 7886597962249166160 9989690752182277136 11923179284862717872 13413576695470557606 14226520737620288370 14226520737620288370 13413576695470557606 11923179284862717872 9989690752182277136 7886597962249166160 5864393356544251760 4105075349580976232 2703342303382594104 1673497616379701112 972963730453314600 530707489338171600 271250494550621040 129728497393775280 57963796707857040 24151581961607100 9364899127970100 3371363686069236 1123787895356412 345780890878896 97862516286480 25371763481680 5996962277488 1285063345176 247994680648 42757703560 6522361560 869648208 99795696 9657648 766480 47905 2211 67 1
阿麦 2014-10-12
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;
int main()
{
	void Yanghui_Triangle(int array[10][10]);
	int a[10][10];
	int i, j, n;
	Yanghui_Triangle(a);
	for (n = 1, i = 0; n<11; n++, i++)
	{
		for (j = 0; j < n; j++)
		{
			cout << a[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}

void Yanghui_Triangle(int array[10][10])
{
	int i, j, n;
	for (n = 1,i = 0 ; n<11; n++,i++ )
		for (j = 0; j < n; j++)
			if ((j == 0) ||( i == j))
				array[i][j] = 1;
			else
				array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
}
还有一个错误,是if ((j = 0) ||( i = j))写错了,应该是: if ((j == 0) ||( i == j))
appxsl 2014-10-12
  • 打赏
  • 举报
回复
引用 1 楼 amoyman 的回复:
你自己都标记出来了,两行红字语法错误 应该是 for (...; n<11 && i<n;...) 从程序来看, i<n 是恒成立的,所以,只要 for (...; i<11;...) 就行
亲,我改成这样了。但是编译显示不对啊,那个并列的运算符下面出现红波浪线了,说是错误的 for ((n = 1; n < 11; n++) && (i = 0; i < n;i++))
阿麦 2014-10-11
  • 打赏
  • 举报
回复
你自己都标记出来了,两行红字语法错误 应该是 for (...; n<11 && i<n;...) 从程序来看, i<n 是恒成立的,所以,只要 for (...; i<11;...) 就行

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧