大大大大大大大大大大大大大大大 2024-10-05 15:03 采纳率: 33.3%
浏览 3
已结题

问题 F: 指针练习-2

求解题
时间限制 : 1.000 sec 内存限制 : 128 MB
题目描述
编写一个函数mySum,其功能是计算一个数组中的所有奇数之和与偶数之和。
函数原型可参考如下:
void mySum(int *p, int len, int *sumOdd, int *sumEven);
其中,p为指向数组首元素的指针,len为数组中的元素个数,sumOdd为指向所求奇数之和的指针,sumEven为指向所求偶数之和的指针。

img

编写程序,从键盘输入一个正整数n(1<=n<=100),代表数据元素个数,接着输入n个整数,代表数组元素的初始值,调用mySum函数处理完毕后,在主函数中输出计算出的奇数之和与偶数之和。输出的两个数据之间用空格分隔。

img

img

  • 写回答

3条回答 默认 最新

  • a5156520 2024-10-05 15:15
    关注

    定义函数mySum(),可以遍历数组每个元素,然后分别将奇数与偶数累加到对应的指针指向的地址中,而主函数中则获取n个元素到数组中,然后调用函数mySum()来计算数组奇数和偶数之和,最后再打印结果即可。

    代码如下:

    #include <stdio.h>
    
    void mySum(int *p, int len, int *sumOdd, int *sumEven){
        
        int i;
        *sumOdd=0;  // 奇数之和先初始化为0
        *sumEven=0; // 偶数之和先初始化为0 
        
        // 遍历数组arr的每个元素的下标,以计算元素的奇数之和与偶数之和 
        for(i=0;i<len;i++){
            
            if(p[i]%2==0){  // 如果当前整数是偶数,则累加到偶数之和sumEven中 
                *sumEven+=p[i]; 
            }else{    // 如果当前整数是奇数,则累加到奇数之和sumOdd中 
                *sumOdd+=p[i];
            }
            
        }    
        
    }
    
    int main(void){
        
        int n, arr[100],i, sumOdd, sumEven;
        
        scanf("%d",&n);  // 从输入获取n的值 
        
        // 从输入获取n个整数,存入数组arr中 
        for(i=0;i<n;i++){
            scanf("%d",&arr[i]);
        }
        
        // 调用函数mySum(),计算数组的奇数之和与偶数之和 
        mySum(arr,n,&sumOdd, &sumEven);
        
        // 打印结果 
        printf("%d %d",sumOdd, sumEven);
        
        return 0;
        
    } 
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月13日
  • 已采纳回答 10月5日
  • 创建了问题 10月5日