帮偶看看这个C语言的题,谢谢了

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:49:29
两个元素个数相同的数组
将其对应位相加得第三个数组
但就是不对了,有点错位
===============
#include <stdio.h>
void main()

{
int num1[5],num2[5],num3[5],*ptr1,*ptr2,*ptr3,i,j,k;
ptr1=num1;
ptr2=num2;
ptr3=num3;
printf("请输入num1的值:\n");
for(i=0;i<5;i++)
{
scanf("%d ",&*(ptr1+i));
}
printf("\n");
printf("请输入num2的值:\n");
for(j=0;j<5;j++)
{
scanf("%d ",&*(ptr2+j));
}
printf("\n");
for(k=0,i=0,j=0;k<5;k++,i++,j++)
*(ptr3+k)=*(ptr1+i)+(*(ptr2+j));
printf("数组num1和数组num2的和为:\n");
for(k=0,i=0,j=0;k<5;k++,i++,j++)
printf("%d ",*(ptr3+k));
printf("\n");
}
为什么不可以用数字定义数组啊?
我在数组里放的是数字啊。

好了,帮你改了下.
#include <stdio.h>
void main()

{
int num1[5],num2[5],num3[5],*ptr1,*ptr2,*ptr3,i,j,k;
ptr1=num1;
ptr2=num2;
ptr3=num3;
printf("请输入num1的值:\n");
for(i=0;i<5;i++)
{
scanf("%d",ptr1+i);
}
printf("\n");
printf("请输入num2的值:\n");
for(j=0;j<5;j++)
{
scanf("%d",ptr2+j);
}
printf("\n");
for(k=0,i=0,j=0;k<5;k++,i++,j++)
*(ptr3+k)=*(ptr1+i)+*(ptr2+j);
printf("数组num1和数组num2的和为:\n");
for(k=0;k<5;k++)
printf("%d ",*(ptr3+k));
printf("\n");
}

注意scanf函数的格式,它是以空格.回车来判断数据的输入了,
你原来的:scanf("%d ",ptr1+i);
有个空格,所以你输入数据时必须以空格结尾,然后来要加一个空格的让函数知道输入结束.
按我的代码,输入如下:
1 2 3 4 5(回车)
1 2 3 4 5(回车)

希望LZ再好好看看scanf的格式要求.

大哥 数组能是数字定义吗!晕死

当然可以用数字定义数组
你的scanf的%d后面多了个空格,