例如
6 7 8 9 10 (输入第一个数组元素)
1 2 3 4 5(输入第二个数组元素)
每个数中间空一格 谢谢啦
实现方法:
自定义按行读入数组的函数 int reada( int *a, int max)
先读一个数到数组
再读一个字符,
判断是否回车符,是则结束读入,否则,下一步
判断读到的个数是否达到max,达到则结束读入,否则循环到a
循环结束后,清除缓存中的数据
返回读到的整数个数
定义两个数组
调用该函数reada去分别读取两个数组
参考代码:
#include <stdio.h>int reada( int *a, int max )
{
char ch=0;
int i;
for( i=0;i<max;i++ )
{
scanf("%d", &a[i]);
ch=getchar();
if( ch=='\n'){
i++;
break ;
}
}
while(ch!='\n')ch=getchar();
return i;
}
void main()
{
int a[5],b[5];
int m,n ,i;
m=reada(a,5);
n=reada(b,5);
for( i=0;i<m;i++ )
printf("%d ", a[i] );
printf("\n");
for( i=0;i<n;i++ )
printf("%d ", b[i] );
}
void main()
{ int a[5],b[5],i;
for ( i=0;i<5;i++ ) scanf("%d",&a[i]);
for ( i=0;i<5;i++ ) scanf("%d",&b[i]);
printf("A数组:“); for ( i=0;i<5;i++ ) printf("%d ",a[i]); printf("\n");
printf("B数组:“); for ( i=0;i<5;i++ ) printf("%d ",b[i]); printf("\n");
}
int main()
{
int i=0,b[10],c[10];
char ch;
while(scanf("%d",&b[i]))
{
ch=getchar();
i++;
if(ch=='\n')
break;
}
i=0;
while(scanf("%d",&c[i]))
{
ch=getchar();
i++;
if(ch=='\n')
break;
}
return 0;
}本回答被提问者采纳
判断的时候你判断下一个字符是不是换行符就行了
例如
while(getchar()!='\n')追问
不太明白 我是这样写
int a[5],b[5],i,j;
char char1[4],char2[4];
for(i=0;i<=4;i++) scanf("%d ",&a[i]);
for(j=0;j<=4;j++) scanf("%d ",&a[i]);
这样错哪了?然后怎么改才对?
for(i=0;i<4;i++)//数组最大下标为3,因为是从0开始的
scanf("%d ",&a[i]);
for(j=0;j<4;j++)
scanf("%d ",&b[j]);
//scanf("%d ",&a[i]);//这里你是想输入到a还是b,还有,数组下标应该为j
char line[50];
int array1[5];
int array2[5];
fgets(line,50,stdin);
sscanf(line,"%d%d%d%d%d%d",&array1[0],&array1[1],&array1[3],&array1[4],&array1[5]);
fgets(line,50,stdin);
sscanf(line,"%d%d%d%d%d%d",&array2[0],&array2[1],&array2[3],&array2[4],&array2[5]);