对于家庭作业问题,我被要求编写一个程序来跟踪不同类型莎莎的销售情况。打印出莎莎的种类及其销售量,总量,最多和最少销售的莎莎酱。我似乎一切正常,除了某些原因在我的循环中,我打印出售出量的值,它只显示第一个值。
int *f(int a) {
int b = 2 * a;
return &b;
}
int main(void) {
int *p4, *p8;
p4 = f(4);
p8 = f(8);
printf("p4: %i / p8: %i\n", *p4, *p8);
}
任何人都可以帮我确定哪里出错了?我使用相同的方法将整数输入到数组中并在之前打印它们从来没有遇到过这个问题是否有任何与jars []数组冲突的内容?
答案 0 :(得分:5)
在most()
和least()
方法中,您正在修改参数中传递的数组的内容,因此它会覆盖原始值。以下是所需的更改:
在most()
方法中,将x[i]=z;
更改为z=x[i];
并且,在least()
方法中,将x[i]=z;
更改为z=x[i];
x[i]=z
实际上用所提供的数组中的最小值替换了所有值(在我们的例子中为jars
),这就是为什么print方法显示相同的值。
答案 1 :(得分:1)
在方法most
和least
中,您需要z=x[i];
代替x[i]=z;
您实际上是通过执行x[i]=z
来替换原始数组中的值,而不是找到最少和最多的值。