首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

help!循环的有关问题

2012-03-01 
help!!循环的问题#includestdio.h#defineX3#defineY3voidprt(inta[X][Y]){inti,jfor(i0i Xi++){for

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;即可

热点排行