我试图插入一个整数,如果数组位置等于3
但不幸的是,当我打印我的数组a
时,我得到了这样的结果:
0
0
2
然而,预期的结果是:
0
0
128
0
0
我的代码是:
#include<stdio.h>
int substitute_and_sum(int *a, int len)
{
int sum = 0, i;
for (i = 0; i < 5; i++)
{
if (i == 3)
{
a[i] = 128;
}
}
printf("%d\n", *a);
return 0;
}
int main()
{
int arr[] = { 0, 0, 2, 0, 0 };
int j = 5, i;
for (i = 0; i < 5; i++)
{
substitute_and_sum(&arr[i], j);
}
}
答案 0 :(得分:3)
你只需要像下面这样打电话
int main(){
int arr[]={0,0,2,0,0};
int j=5,i;
//for(i=0;i<5;i++)
//{
substitute_and_sum(arr,j);
//}
}
或使用: -
void substitute_and_sum(int *a)
{
*a = 128;
}
在main
:
for (i = 0; i < 5; i++)
{
if (i == 2) //Note its index 2, not 3
substitute_and_sum(&arr[i]);
}
答案 1 :(得分:3)
你有两个for
循环不能很好地融合在一起。删除其中一个。例如:
int main()
{
int arr[] = { 0, 0, 2, 0, 0 };
int j = 5;
substitute_and_sum(arr, j);
for (int i = 0; i < 5; i++)
{
printf("%d\n", a[i]);
}
}
请注意,我已将printf
移至main
。你现有的程序非常奇怪。
答案 2 :(得分:1)
在两个函数中循环遍历数组,只需在其中一个函数中执行。
答案 3 :(得分:1)
一个for循环就够了
#include<stdio.h>
int substitute_and_sum(int* a, int len) {
int sum =0, i;
for(i=0;i< len;i++)
{
if(i==3)
{
a[i] = 128;
}
printf("%d\n" , a[i]);
}
return 0;
}
int main(){
int arr[]={0,0,2,0,0};
int j=5,i;
substitute_and_sum(&arr[i],j);
}
将5
替换为len
,否则参数的重点是什么,最后printf()
是无意义的,因为它只打印第一个元素的值;
答案 4 :(得分:1)
这是有效的,每当你发送数组的单个值时,就养成发送索引的习惯,如果需要,例如像你的那样。
#include<stdio.h>
int substitute_and_sum(int *a, int i)
{
if (i == 3)
{
*a = 128;
}
printf("%d\n", *a);
return 0;
}
int main()
{
int arr[] = { 0, 0, 2, 0, 0 };
int i;
for (i = 0; i < 5; i++)
{
substitute_and_sum(&arr[i], i);
}
}