user-0 提问: 杨辉三角形 代码求解

回复:
user: user-1
content: 引用 2 楼 w82076322 的回复:[quote=引用 1 楼 u012421456 的回复:] lz代码问题不少啊！第六行你怎么给 n 赋值啊，你不是打算输入吗？第十行该是a[i][0]吧 还有让我不解的是第14、15行怎么i和j从3和2开始啊？（个人见解，如有不对，敬请lz和楼下各位点明，万分感激） 这是我搜到的，经过改写的代码  第六行那叫做参数的初始化。 从3和2开始，是因为 —————————— 1 1 1 1 2 1 —————————— 头两行和第一列都已经赋值为1了。[/quote] 你这是不行的，当你输入一或2 程序将报错 #include "stdafx.h" #include "YHTriAngle.h"    YHTriAngle::YHTriAngle(int i) : n(i) , p(NULL) { //构建杨辉三角形 	p = new int*[n]; 	for (int i = 0; i < n; i++){ 		p[i] = new int[i + 1]; 		p[i][0] = 1; 		p[i][i] = 1; 		for (int j = 1; j < i; j++) 			p[i][j] = 0; 	} 	for (int i = 2; i < n;i++)         for (int j = 1; j < i; j++) 		    p[i][j] = p[i - 1][j - 1]  +p[i - 1][j]; }   YHTriAngle::~YHTriAngle(void) { 	for (int i = 0; i < n; i++) 		delete[]p[i]; 	delete[]p; }   // 显示杨辉三角 void YHTriAngle::show() { 	for (int i = 0; i < n; i++){ 		for (int j = 0; j <=i; j++) 			cout << setw(4) << p[i][j]; 		cout << endl; 	} } 你把这个改成c风格就行了，既然你有输入，那为什么不在输入过后再赋值呢 赋值在输出前，错了都不好发现啊

user: user-2
content: 1.数组初始化时应该赋初值0，后来打印出来的比较大的数应该就是没初始化好，后面的程序可能出错导致未修改，所以每次的值可能会不同。而且数组下标是从0开始的啊，楼主怎么上来就a[1][1]; 2.这样定死了就不能输入1或者2的情况了啊。 3.打印的时候直接在第一循环里就可以了，没必要再专门设一个循环。下面是我小修改过的程序。 #include<stdio.h> int main() {     int a[34][34]={0};     int i=0,j=0;     int n=0;     printf("请输入杨辉三角的层数:");     scanf("%d",&n);     for(i=0;i<n;i++)     {     	 a[i][0]=1;     	 a[i][i]=1;    	     for(j=0;j<=i;j++) 	     { 	     	a[i+1][j+1]=a[i][j]+a[i][j+1];  	        printf("%d ",a[i][j]); 	     }		 	     printf("\n");      }    	return 0; }

user: user-0
content: 引用 4 楼 derekrose 的回复:1.什么是参数？   2.什么是初始化 int a; cin >> a;是不是初始化？答复1，我用语错误。应该是变量初始化。 查了一下cin >> a的C语言写法，这段代码不是初始化。只有定义的时候的赋值才是初始化。  另求版主解决一楼的问题。

user: user-0
content: 引用 4 楼 derekrose 的回复:[quote=引用 2 楼 w82076322 的回复:] [quote=引用 1 楼 u012421456 的回复:] lz代码问题不少啊！第六行你怎么给 n 赋值啊，你不是打算输入吗？第十行该是a[i][0]吧 还有让我不解的是第14、15行怎么i和j从3和2开始啊？（个人见解，如有不对，敬请lz和楼下各位点明，万分感激） 这是我搜到的，经过改写的代码  第六行那叫做参数的初始化。 从3和2开始，是因为 —————————— 1 1 1 1 2 1 —————————— 头两行和第一列都已经赋值为1了。[/quote]  1.什么是参数？   2.什么是初始化 int a; cin >> a;是不是初始化？[/quote]请使用纯C。。CPP我看不懂==

user: user-3
content: 引用 2 楼 w82076322 的回复:[quote=引用 1 楼 u012421456 的回复:] lz代码问题不少啊！第六行你怎么给 n 赋值啊，你不是打算输入吗？第十行该是a[i][0]吧 还有让我不解的是第14、15行怎么i和j从3和2开始啊？（个人见解，如有不对，敬请lz和楼下各位点明，万分感激） 这是我搜到的，经过改写的代码  第六行那叫做参数的初始化。 从3和2开始，是因为 —————————— 1 1 1 1 2 1 —————————— 头两行和第一列都已经赋值为1了。[/quote]  1.什么是参数？   2.什么是初始化 int a; cin >> a;是不是初始化？

user: user-4
content: 引用 2 楼 w82076322 的回复:第六行那叫做参数的初始化。 从3和2开始，是因为 —————————— 1 1 1 1 2 1 —————————— 头两行和第一列都已经赋值为1了。 哦，原来如此，  lz你的代码从输入3就不行啊

user: user-0
content: 引用 1 楼 u012421456 的回复:lz代码问题不少啊！第六行你怎么给 n 赋值啊，你不是打算输入吗？第十行该是a[i][0]吧 还有让我不解的是第14、15行怎么i和j从3和2开始啊？（个人见解，如有不对，敬请lz和楼下各位点明，万分感激） 这是我搜到的，经过改写的代码  第六行那叫做参数的初始化。 从3和2开始，是因为 —————————— 1 1 1 1 2 1 —————————— 头两行和第一列都已经赋值为1了。

user: user-4
content: lz代码问题不少啊！第六行你怎么给 n 赋值啊，你不是打算输入吗？第十行该是a[i][0]吧 还有让我不解的是第14、15行怎么i和j从3和2开始啊？（个人见解，如有不对，敬请lz和楼下各位点明，万分感激） 这是我搜到的，经过改写的代码——#include  <stdio.h>   int main(void)  {  	int i, j, n =0 , a[34][34] = {0};  	printf("请输入你想要的杨辉三角的层数："); 	scanf("%d", &n); 	     for(i=0; i<34; i++)  		a[i][0] = 1;        	for(i=1; i<34; i++)  		for(j=1; j<=i; j++)  			a[i][j] = a[i-1][j-1] + a[i-1][j]; 		 	for(i=0; i<n; i++)    	{  		for(j=0; j<=i; j++)  			printf("%6d", a[i][j]);  		printf("\n");  	}  	return 0; }