求助以下C程序源文件有什么问题
#include<stdio.h>
int main()
{
int a[3][4],b[3][4],i,j,t;
printf("please input a:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("a[i][j]=%d",&a[i][j]);
printf("please input b:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("b[i][j]=%d",&b[i][j]);
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
t=a[i][j];
a[i][j]=b[i][j];
b[i][j]=t;
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("a[i][j]=%d",a[i][j]);
}
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
printf("b[i][j]=%d",b[i][j]);
}
}
补充:1.输入数组的数一定在一行并按空格输入?
2.2.为什么输入完数组a,数组b就不能输入?且数组a的输出乱七八糟的?
追问:for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
t=a[i][j];
a[i][j]=b[i][j];
b[i][j]=t;
}
}
第一个for 后的大括号可以去掉?为什么?1.这里的{ 放for语句后面,这样交换值才对,为什么?
更改以后还是出现以下问题:
2.输入数组的数一定在一行并按空格输入?
3.2.为什么输入完数组a,数组b就不能输入?且数组a的输出乱七八糟的?1.for(;;){语句1;语句2;语句3;}或for(;;) 语句;
这是for双循环语句,第二个for是重属于第一个for的,我之前也试过因此可以在第一个for结束后加{即:
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
t=a[i][j];
a[i][j]=b[i][j];
b[i][j]=t;
}
2.即要这么输入:a[i][j]=2回车,你试试输入吧,输入第一个数回车后就出现错误了“3.你把a[i][j]=删了,输入整数格式没问题了,每次都要输a[i][j]=也麻烦”
没错,删除是可以运行,但如果不删除a[i][j,每次都原样输入a[i][j](i,,j不取值)就算i,j有0,0一直取到2,3也是一样,结果还是一样运行显示出错的,不知道为什么????
答案:1.输入的数可以输一个后回车,或者按空格,输入回车的话当输入a数组的12个成员后会打印出please input b:,然后 你可以接着输入b数组的数组成员了。如果使用空格的话当你超过12个它不会打印出please input b:,直到你回车时它才打印这句话,当存入的时候还是会把前12个数存到a数组,从第13个开始存到数组b。
2.scanf的用法不对,只能使用scanf("%d", &a[i][j]); %d表示按整形输入,双引号里不能加a[i][j]=,
3. for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
t=a[i][j];
a[i][j]=b[i][j];
b[i][j]=t;
}
}
第二个for语句后要加上大括号,要不然只执行 t=a[i][j]了,和你交换两个二维数组的成员的初衷就相违背了。
给楼主提点建议,多写写程序,自己多动手调试,然后就是要舍得使用大括号。
其他:for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
t=a[i][j];
a[i][j]=b[i][j];
b[i][j]=t;
}
这里的{ 放for语句后面,这样交换值才对。 编程风格太差
上一个:若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。(1分) A、a:=b+1 B、a=b=c+2 C、int 18.5%3
下一个:c语言问题