松冈千菜star642:关于我写出的TC程序的死循环

来源:百度文库 编辑:高校问答 时间:2024/05/04 13:43:30
具体程序如下:
我写这个程序是为了打印出扬辉三角的,可是出现了死循环,没有语法错误~~~~
main()
{
long int i,j,n,k,a=0,x;
printf("please putin the x number!");
scanf("%d",&x);
for (i=1;i<=x;i++)
{for (j=1;j<=i;j++)
{for (n=1;n<=i-j;n++)
{for (k=n;k<=i-j;k++)
a+=i-j-k;
}
printf("%5d ",a);
}
}
while (i==j)
{printf("\n");}
}
1.回答的时候请附上正确的杨辉三角打印方法,谢谢...
2.请指出我程序里面有错误的地方...给出杨辉三角的打印方法只是次要的...这在书上或网上都有答案.所以我会好好考虑你们的答案的.
3.经验证4楼5楼答案均不能打印出杨辉三角!

//chch6_10
//扬辉三角形
//行数唯一决定了形状

# include <iostream.h>
# include <iomanip.h>

const H=10,L=2*H+1; //H最大取值13,L最小取值2×H+1;

void yh(int s[][L],int,int);

void main()
{
int sh[H][L];
int i,j;
for(i=0;i<H;i++)
for(j=0;j<L;j++)
sh[i][j]=0; //局部变量初始化不可少!
yh(sh,H,L);
for ( i=0;i<H;i++)
{
for( j=0;j<L;j++)
if(sh[i][j]!=0)
cout<<setw(3)<<sh[i][j];
else cout<<setw(3)<<' ';
cout<<endl; //注意何时换行
}
}

void yh(int s[][L],int a,int b)
{
int i,j;
for(i=0;i<a;i++)
for(j=0;j<b;j++)
if((i>0)&&(j>0)&&(j<b-1)) //避免数组越界
s[i][j]=s[i-1][j-1]+s[i-1][j+1];
else
if(i==0) s[i][H]=1;
}

杨辉三角形前n行的c函数。

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

main()
{
int i,j,x,y;
int a[10][19];
x=9;y=9;
for (i=0;i<=9;i++)
for (j=0;j<=18;j++) a[i][j]=0;
for (i=0;i<=9;i++)
{a[i][x]=1;a[i][y]=1;x=x-1;y=y+1;}
for (i=2;i<=9;i++)
{for (j=2;j<=16;j++)
if ((j%2!=0&&i%2==0)||(j%2==0&&i%2!=0)) a[i][j]=a[i-1][j-1]+a[i-1][j+1];
}
for (i=0;i<=9;i++)
{
for (j=0;j<=18;j++)
{if (a[i][j]!=0) printf ("%-4d",a[i][j]);
else printf("%-4c",'\0');}
printf ("\n");
}

}

main()
{
int i,j,x,y;
int a[10][19];
x=9;y=9;
for (i=0;i<=9;i++)
for (j=0;j<=18;j++) a[i][j]=0;
for (i=0;i<=9;i++)
{a[i][x]=1;a[i][y]=1;x=x-1;y=y+1;}
for (i=2;i<=9;i++)
{for (j=2;j<=16;j++)
if ((j%2!=0&&i%2==0)||(j%2==0&&i%2!=0)) a[i][j]=a[i-1][j-1]+a[i-1][j+1];
}
for (i=0;i<=9;i++)
{
for (j=0;j<=18;j++)
{if (a[i][j]!=0) printf ("%-4d",a[i][j]);
else printf("%-4c",'\0');}
printf ("\n");
}

}
可以用的,我检验过的

main()
{int i,j,a[10][10];
clrscr();
for(i=0;i<10;i++)
{a[i][0]=1;a[i][i]=1;}
for(i=2;i<10;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<10;i++)
{for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");}
getch();}

你程序错误的原因是while (i==j)
{printf("\n");}
是条件不成立不会执行。
j==i+1

不用看了 绝对是死循环,while本身就是个循环语句,你的while括号里又没有使得i或j变化的语句,所以一旦i==j之后,就无限的printf("\n")了,你把while换成if吧

printf放在下面试,等其他算出来以后打印
不要程序还没有运行就开始打印了