为什么数组扫描1比C中指定的元素多

时间:2015-10-31 15:05:09

标签: c arrays

screenshot of output

问题:我正在使用for循环扫描和打印两个数组。在扫描第一个数组时,它会扫描1个额外的元素,例如。如果数组大小为5则扫描6个元素,并且在扫描第二个数组时,它扫描的元素少于数组大小。
第一个数组的额外扫描元素被打印为第二个数组的第一个元素,我试图在屏幕截图中显示产量
注意: 遵守并在Dev Cpp v4.9.9.2中运行

代码:

#include<stdio.h>
#include<conio.h>
int main()
{
int i,arr1[10],arr2[10],num;
printf("no of elements to be enterd in array\t");
scanf("%d",&num);
printf("enter elements for 1st array\n");
for(i=0;i<num;i++)
{
                  scanf("%d\n",&arr1[i]);
}
printf("\nOutput for 1st array\n\n");
for(i=0;i<num;i++)
{
                  printf("%d\t",arr1[i]);
}

printf("\n\nenter elements for 2nd array\n");
for(i=0;i<num;i++)
{
                  scanf("\n%d",&arr2[i]);
}
printf("Output for 2nd array\n\n");
for(i=0;i<num;i++)
{
                  printf("%d\t",arr2[i]);
}
getch();
return 0;
}

2 个答案:

答案 0 :(得分:2)

  

这里,虽然在数组的扫描数字循环中没有给出\ n   在scanf中的%d之后或之前解决问题..而不是

 scanf("%d",&arr1[i]);

答案 1 :(得分:1)

这都是因为你使用scanf的方式。 将所有内容更改为以下内容:

scanf(" %d",&arr1[i]);

那就是:之前的空间,没有之后的空间(之后没有空格,没有&#34; \ n&#34;没有&#34; \ t&#34;没有这个)。