求一组数中的最大值、最小值及总和。要求定义函数int f(int a[],int n,int *pmax,int *pmin)函数返回总和,并分别通过指针pmax 和 pmin将最大输出

文章讨论了一个C语言程序,涉及到函数定义中的类型匹配、无返回值、参数重定义等问题。作者分享了如何修复这些问题,如正确使用指针、初始化变量和在循环外设置最大值/最小值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>

int f(int a[], int n, int *pmax, int *pmin);
int main() {

	int n;
	int a[n];
	int sum;
	int *pmax, *pmin;
	scanf("%d", &n);
	scanf("%d", a[n]);

	sum= f( a[],  n,int *pmax,int *pmin);
	printf("%d%d%d", sum, pmax, pmin);

}
int f(int a[], int n, int* pmax, int* pmin)
{
	int sum, n,i=0;
	for (int i = 0; i < n; i++)
		sum += a[i];
	*pmax = a[0];
	if (*pmax < a[i])
		*pmax = a[i];
	if (*pmin > a[i])
		*pmin = a[i];

}

这是我写的,有很多问题

1首先,函数里的应该和声明里的是一样的,地址就是地址应该出现地址,我还记得在寝室,室友听到过   、

2然后是函数没有返回值

3然后是重定义,不应该在主函数和缝合函数一起比如我的n

4还有定义的时候就不要在定义和函数里的形参一样的变量名了,定义别的

5还有一个,我遍历数组都没有遍历

6函数里的sum我没有定义初始值(一定要定义,不然默认是随机数)

7然后在计算最大最小的时候,循环和定义那个*pmax的值的位置关系出了问题,应该在循环之前写出来,不然每次都会重定义一遍,就会出问题

总结:1,每次写完函数都要写上return

2每次定义不管接下来会不会赋值,都先给他赋值

3定义变量值永远在前

上面是我无数遍拷打gpt,加上自己反复的检查出来的问题

下面是gpt第一遍就对了的代码(室友的差不多)

#include <stdio.h>

int f(int a[], int n, int *pmax, int *pmin) {
    int sum = 0;
    *pmax = *pmin = a[0];  // 初始化最大值和最小值为数组的第一个元素

    for (int i = 0; i < n; i++) {
        sum += a[i];  // 计算总和

        if (a[i] > *pmax) {
            *pmax = a[i];  // 更新最大值
        }

        if (a[i] < *pmin) {
            *pmin = a[i];  // 更新最小值
        }
    }

    return sum;  // 返回总和
}

int main() {
    int n, max, min;
    int sum;

    // 输入数组大小和数组元素
    scanf("%d", &n);
    int a[n];

    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    // 调用函数计算最大值、最小值和总和
    sum = f(a, n, &max, &min);

    // 输出最大值、最小值和总和
    printf("%d %d %d\n", max, min, sum);

    return 0;
}

                                                                                                                                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值