读书人

help!循环的有关问题

发布时间: 2012-03-01 10:25:46 作者: rapoo

help!!循环的问题
# include <stdio.h>
# define X 3
# define Y 3

void prt(int a[X][Y])
{
int i,j;
for(i=0;i <X;i++)
{
for(j=0;j <Y;j++)
printf( " %5d ",a[i][j]);
printf( "\n ");
}
}


void inp(int a[X][Y])
{
int i,j,t;
for(i=0;i <Y;i++)
for(j=0;j <Y;j++)
{
printf( "a[%d][%d]= ",i,j);
scanf( "%d ",&t);
a[i][j]=t;
}
}

void madd(int a[X][Y],int b[X][Y],int m[X][Y])
{
int i,j;
for(i=0;i <X;i++)
for(j=0;j <Y;j++)
m[i][j]=a[i][j]+b[i][j];
prt(m);
}


void msub(int a[X][Y],int b[X][Y],int m[X][Y])
{
int i,j;
for(i=0;i <X;i++)
for(j=0;j <Y;j++)
m[i][j]=a[i][j]-b[i][j];
prt(m);
}


void mmul(int a[X][Y],int b[X][Y],int m[X][Y])
{
int i,j,k;
for(i=0;i <X;i++)
for(j=0;j <Y;j++)
m[i][j]=0;

for(i=0;i <X;i++)
for(j=0;j <Y;j++)
for(k=0;k <Y;k++)
m[i][j]+=a[i][k]*b[k][j];
prt(m);
}


int main()
{
int sel=0,agn=1,cpt=1;
int a[X][Y], b[X][Y], m[X][Y];
while(agn==1)
{
printf( "请输入矩阵a!\n ");
inp(a);
printf( "请输入矩阵b!\n ");
inp(b);
while (cpt==1)
{
printf( "请选择矩阵运算:[1]+ [2]- [3]*\n\t ");
scanf( "%d ",&sel);
if (sel==1) madd(a,b,m);
if (sel==2) msub(a,b,m);
if (sel==3) mmul(a,b,m);
printf( "重新运算?[1]是 [0]否 ");
scanf( "%d ",&cpt);
}
printf( "是否重新输入矩阵?[1]是 [0]否 "); 这一步可以返回while(agn==1)
的循环,
但是运行到inp(b);
后跳过while (cpt==1)的循环;
又回到这里,应该怎样修改??



scanf( "%d ",&agn);
}
return 0;
}


[解决办法]

inp(b);
cpt=1; //重新给cpt赋值
while (cpt==1)
{
printf( "请选择矩阵运算:[1]+ [2]- [3]*\n\t ");
scanf( "%d ",&sel);
if (sel==1) madd(a,b,m);
if (sel==2) msub(a,b,m);
if (sel==3) mmul(a,b,m);
printf( "重新运算?[1]是 [0]否 ");
scanf( "%d ",&cpt);
}
printf( "是否重新输入矩阵?[1]是 [0]否 "); //当这里输入0退出小循环后 cpt==0
}

[解决办法]
不是在inp(b);后加上cpt=1;即可

读书人网 >C语言

热点推荐