| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1750 人关注过本帖
标题:函数调用
只看楼主 加入收藏
善丑恶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-28
结帖率:0
收藏
 问题点数:0 回复次数:7 
函数调用
主函数中定义了一个长度为10的整型数组array,从键盘输入10个整数赋值给数组。

请定义一个子函数,用于计算数组中的所有奇数的和、所有偶数的和,并返回这两个数据

请在主函数中调用一次这个子函数,把结果存到odd和even中

部分代码已给出,请补完程序,使其能正确运行并通过数据测试。


#include <stdio.h>
1.

int main()
{
    int array[10];
    int i;
    int odd;    //奇数和
    int even;    //偶数和
    for(i=0;i<10;i++)
        scanf("%d",&array[i]);
2.

    printf("奇数和=%d\n",odd);
    printf("偶数和=%d\n",even);
    return 0;
}
搜索更多相关主题的帖子: 调用 奇数 int 函数 偶数 
2021-03-12 22:23
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:0 
程序代码:
#include <stdio.h>

void odd_even(int *array,int array_len,int *odd,int *even)
{
    int i;
    *odd=0;
    *even=0;
    for(i=0; i<array_len; i++)
    {
        if(array[i]%2==0)
            *even+=array[i];
        else
            *odd+=array[i];
    }
}

int main()
{
    int array[10];
    int i;
    int odd;    //奇数和
    int even;    //偶数和
    for(i=0; i<10; i++)
        scanf("%d",&array[i]);

    odd_even(array,sizeof(array)/sizeof(int),&odd,&even);

    printf("奇数和=%d\n",odd);
    printf("偶数和=%d\n",even);
    return 0;
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2021-03-13 18:04
zjailjt
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-3-13
收藏
得分:0 
回复 2楼 纯蓝之刃
这个必须要用到指针吗,我刚刚自己敲了一下,没用指针,然后编译之后报错,请问这是为啥
2021-03-13 23:49
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:0 
array数组可以不使用指针传递进去,因为你不需要数组返回后的值,但是odd和even你需要通过指针传递进子函数,这样在子函数中进行运算更改后,主函数可以得到更改后的值并进行输出

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2021-03-14 08:22
zjailjt
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2021-3-13
收藏
得分:0 
回复 4楼 纯蓝之刃
#include<stdio.h>
void fun1(int a[3][4],int b[],int m,int n)
{
    int i,j,k,temp;
    for(i=0;i<=m;i++)
    {
        for(j=0;j<=m;j++)
        {
            if(a[j][i]<=a[j+1][i])
            {
                temp=a[j][i];
            }
        }
        b[i]=temp;
    }
}
void fun2(int b[],int len)
{
    int i,temp;
    for(i=0;i<=len;i++)
    {
        for(int j=1;j<=len-i;j++)
        {
            if(b[i]>b[i+1])
            {
                temp=b[i];
                b[i]=b[i+1];
                b[i+1]=b[i];
            }
        }
    }
}
int main()
{
    int i;
    void fun1(int a[3][4],int b[],int m,int n);
    void fun2(int b[],int len);
    int array[3][4]={{1,5,6,9},{12,16,85,43},{45,54,86,27}};
    int b[4];
    printf("排序前b数列如下:\n");
    for(i=0;i<=3;i++)
    {
        printf("%d ",b[i]);
    }
    for(int i=0;i<=3;i++)
    printf("%d ",fun2(b[4],3));
    return 0;
}
2021-03-14 10:29
善丑恶
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2020-11-28
收藏
得分:0 
回复 2楼 纯蓝之刃
可以解释一下吗
学的不是很明白
2021-03-27 14:49
slbos
Rank: 2
等 级:论坛游民
威 望:2
帖 子:26
专家分:64
注 册:2021-3-20
收藏
得分:0 
void odd_even(int *array,int array_len,int *odd,int *even);
传入了数组首地址、数组元素个数、变量odd的指针、变量even的指针
函数传入参数的时候都是复制一份拷贝传入函数,拷贝只在函数中生效,函数结束就释放分配给拷贝的空间,所以要访问主函数里面的变量需要用到指针
指针相当于钥匙,无论复制几份都能开门(访问到对应的变量),而如果复制的是变量的拷贝相当于开了个新门在函数用完就丢,和原门没有关系
2021-04-10 11:27
YSA
Rank: 1
等 级:新手上路
威 望:1
帖 子:2
专家分:0
注 册:2021-4-10
收藏
得分:0 
回复 楼主 善丑恶
#include<stdio.h>
#include<math.h>
int array[10];
int jishu();
int i;
int odd=0;
int even=0;
int main()
{
   
    for(i=0;i<10;i++)
    {
        scanf("%d",&array[i]);
    jishu();
    }
    printf("奇数和=%d\n",odd);
    printf("偶数和=%d\n",even);
    return 0;
}
int jishu()
{
    int j=array[i];
        if(j%2==1)
            odd+=j;
        else
            even+=j;
        return 0;
}
这样可以吗?新手
2021-04-10 17:14
快速回复:函数调用
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014717 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved