问题:我正在使用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;
}
答案 0 :(得分:2)
这里,虽然在数组的扫描数字循环中没有给出\ n 在scanf中的%d之后或之前解决问题..而不是
scanf("%d",&arr1[i]);
答案 1 :(得分:1)
这都是因为你使用scanf的方式。 将所有内容更改为以下内容:
scanf(" %d",&arr1[i]);
那就是:之前的空间,没有之后的空间(之后没有空格,没有&#34; \ n&#34;没有&#34; \ t&#34;没有这个)。