关于c语言if结构的问题
问题描述:
#include<stdio.h>
int main()
{
printf("1.P_Reverrse_3\n");
printf("2.Clock_Move_5_1\n");
printf("3.Exit\n");
int b[3][3],c[5][5],d[5][5];
int a=0,i,j,f,m,g;
printf("你要进入的程序");
a=scanf("%d",&a);
while(a!=3)
{
if(a==1)
{
printf("Please input 9 numbers:");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&b[i][j]);
}
}
for(j=0;j<3;j++)
{
for(i=0;i<3;i++)
{
printf("%3d ",b[i][j]);
if((i+1)%3==0)
{
printf("\n");
}
}
}
}
else
{
printf("Please Input 16 numbers:");
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++)
{
scanf("%d",&c[i][j]);
d[4-j][i] = c[i][j];
}
for( i = 0; i < 5; i++)
{
for(j = 0 ; j <5; j++)
{
printf("%5d",d[i][j]);
}
printf("\n");
}
}
break;
}
printf("1.P_Reverrse_3\n");
printf("2.Clock_Move_5_1\n");
printf("3.Exit\n");
printf("你要进入的程序");
a=scanf("%d",&a);
while(a!=3)
{
if(a==1)
{
printf("Please input 9 numbers:");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&b[i][j]);
}
}
for(j=0;j<3;j++)
{
for(i=0;i<3;i++)
{
printf("%3d ",b[i][j]);
if((i+1)%3==0)
{
printf("\n");
}
}
}
}
else
{
printf("Please Input 16 numbers:");
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
{
scanf("%d",&c[i][j]);
d[4-j][i] = c[i][j];
}
}
for( i = 0; i < 5; i++)
{
for(j = 0 ; j <5; j++)
{
printf("%5d",d[i][j]);
}
printf("\n");
}
}
break;
}
return 0;
}
请求各位大神帮助!! if结构为什么会失灵?每次输入2时都会进入1的程序并且while语句也用不了。
答
a=scanf("%d",&a); 这句有问题,scanf()返回值是1,使得a=1,改为
scanf("%d",&a);