二维数组问题
#include<stdio.h>int main()
{
int a,i,j;
printf("Enter data by line :\n");
for(i=0;i<2;i++)
for(j=0;i<3;j++)scanf("%d",&a);
printf("Output a 2-dimension array ;\n");
for(j=0;j<2;j++)
{
for(i=0;i<3;i++);
printf("%4d",a);
printf("\n");
}
}
我这个按enter为什么不输出,没问题呀 本帖最后由 风过无痕1989 于 2020-8-13 21:46 编辑
先占个楼
#include<stdio.h>
int main()
{
int a,i,j;
printf("Enter data by line :\n");
for(i = 0;i < 2;i++)
{
for(j = 0;j < 3;j++)
{
scanf("%d",&a);
getchar(); // 吸收输入时的回车键
}
}
printf("Output a 2-dimension array ;\n");
for(i = 0;i < 2;i++)
{
for(j = 0;j < 3;j++)
{
printf("%d\t",a);
}
if(j == 2) // 第一行满三列,换行
{
printf("\n");
}
}
printf("\n");
} #include<stdio.h>
int main() {
int a, i, j;
printf("Enter data by line :\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &a);
}
}
printf("Output a 2-dimension array ;\n");
for (j = 0; j < 2; j++) {
for (i = 0; i < 3; i++) {
printf("%4d", a);
}
printf("\n");
}
} 按 ENTER 键不输出,原因就出在那个 scanf() 函数上,这个函数,每输入一个数都要有一个回车键,这样就导致你的输入难以完成,我在修改你的原程序时,加了一句:getchar() 就是为了吸收这个回车的 风过无痕1989 发表于 2020-8-13 21:50
按 ENTER 键不输出,原因就出在那个 scanf() 函数上,这个函数,每输入一个数都要有一个回车键,这样就导致 ...
可是你代码我用了没换行,但是可以输出出来{:10_277:},下次给你最佳吧,因为没有换行出来,蓝色梦想代码我试了,可以换行。抱歉哈{:10_254:} 崔铭1315 发表于 2020-8-13 21:54
可是你代码我用了没换行,但是可以输出出来,下次给你最佳吧,因为没有换行出来,蓝色梦想代码 ...
他完全说错了,你的错误是第7行的 for 循环条件里把 i 写成了 j{:10_277:} 崔铭1315 发表于 2020-8-13 21:54
可是你代码我用了没换行,但是可以输出出来,下次给你最佳吧,因为没有换行出来,蓝色梦想代码 ...
而 scanf 会自动屏蔽换行,那个 getchar 啥用没有{:10_277:} 永恒的蓝色梦想 发表于 2020-8-13 22:18
他完全说错了,你的错误是第7行的 for 循环条件里把 i 写成了 j
他不仅仅是将 i 写成了 j !
他的数组将二维写成了一维:a --->a 崔铭1315 发表于 2020-8-13 21:54
可是你代码我用了没换行,但是可以输出出来,下次给你最佳吧,因为没有换行出来,蓝色梦想代码 ...
我在机上运行是正常的,发上来时,由于代码不整齐,经过了两次修改,将换行的语句不知怎么就到了方括号之下了。
其实蓝色梦想说得没错,我加那个 getchar() 语句,以及后面加的 if (j == 2) 在这个程序里作用不大,属于可有可无的,只是想起到一个双保险的作用罢了。
我也是个初学者,至今学了40多天吧,回复帖子,只是想加深一下所学知识的印象,最不最佳对我来说,没那么重要。
下面将我再次试机的程序,重新发上来:
#include<stdio.h>
int main()
{
int a,i,j;
printf("Enter data by line :\n");
for(i = 0;i < 2;i++)
{
for(j = 0;j < 3;j++)
{
scanf("%d",&a);
getchar(); // 吸收输入时的回车键
}
}
printf("Output a 2-dimension array ;\n");
for(i = 0;i < 2;i++)
{
for(j = 0;j < 3;j++)
{
printf("%4d",a);
if (j == 2)
{
printf("\n");
}
}
}
printf("\n");
}
风过无痕1989 发表于 2020-8-13 23:16
他不仅仅是将 i 写成了 j !
他的数组将二维写成了一维:a --->a
这个并不是错误,只是他没有用代码格式发布,变成了斜体标识
页:
[1]