标题:这个函数的调用怎么弄呢?
只看楼主
凉冬
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2018-3-13
 问题点数:0 回复次数:7 
这个函数的调用怎么弄呢?
#include <stdio.h>
#include <windows.h>
#include <conio.h>
#define M 100



int main()
{

   
    int ALL[M];
    system("pause");
    return 0;
}

void dev_fun(int ALL[M],int i,int m,int n)
{
    for(i=1;i<=200;i++)
    {
        m=i%7;
        n=i%13;
        if(m==0||n==0)
        {
         ALL[M]=i;
         printf("%d",ALL[M]);
        }
    }
}
这道题是用一个函数算出200以内能被7或者13整除的数,并把这些数放在主函数的数组内,我编了个函数求解,不过在主函数中怎么调用,并打印出来呢
搜索更多相关主题的帖子: 函数 调用 include int 主函数 
2018-04-08 18:09
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
这代码……

不改你的算法
程序代码:
#include <stdio.h>

unsigned foo( unsigned arr[] );

int main( void )
{
    unsigned arr[100];
    unsigned arr_size = foo( arr );

    for( unsigned i=0; i!=arr_size; ++i )
        printf( "%u ", arr[i] );
}

unsigned foo( unsigned arr[] )
{
    unsigned size = 0;
    for( unsigned i=1; i<=200; ++i )
        if( i%7==0 || i%13==0 )
            arr[size++] = i;
    return size;
}

就算法而言,我觉得
unsigned foo( unsigned arr[] )
{
    unsigned size = 0;
    for( unsigned i=7; i<=200; i+=(7-i%7<13-i%13?7-i%7:13-i%13) )
        arr[size++] = i;
    return size;
}
更好一点儿。也就是 i += (7-i%7 与 13-i%13的最小值)

2018-04-09 09:36
螃蟹爱吃小鱼
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:51
专家分:145
注 册:2018-3-6
得分:0 
#include<stdio.h>
#include<malloc.h>
int f(int n)
{
    if(n%7==0||n%13==0)
        return 1;
    else
        return 0;
}
void main()
{
    int i;
    int *p =(int*)malloc(100*sizeof(int));
    int count = 0;
    for(i = 1; i<=200; i++)
    {
        if(f(i)==1)
        {
            p[count]=i;
            count++;
        }
        else
            continue;
    }
    for(i = 0; i < count; i++)
    {
        printf("%d\t",p[i]);
    }
}
2018-04-09 14:28
凉冬
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2018-3-13
得分:0 
回复 2楼 rjsp
思路清奇,萌新膜拜,还有一点不懂...在自定义的那个foo函数中,当i=7时,size原值0不是经过自加变成1了吗?也就是arr【1】=7;为什么打印输出的时候是arr【0】=7呢?
2018-04-09 17:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
以下是引用凉冬在2018-4-9 17:28:26的发言:

思路清奇,萌新膜拜,还有一点不懂...在自定义的那个foo函数中,当i=7时,size原值0不是经过自加变成1了吗?也就是arr【1】=7;为什么打印输出的时候是arr【0】=7呢?

size是变为1了,但 size++ 是个表达式,它返回0,它不是返回size,size变为任何东西都与它无关。
如下代码
int i = 100;
int x = i++;
中 int x = i++; 发生两个“副作用”,即“i变为101”和“x变为100”
2018-04-10 08:37
凉冬
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2018-3-13
得分:0 
回复 5楼 rjsp
我对size++的作用和它的返回值,还是有点迷,下面是我的两个想法,还请大牛帮我解惑


① 是size每次做自增运算返回值都是0吗?这样的话那size++的作用是什么呢?i所有的值岂不是都存放在数组第一个元素的地址上了吗?这样printf输出索取地址时该怎么索取呢?


② 还是说size++本身值是0,自加之后变成1然后返回值是1,再次自加是2再次返回2……这样的话arr【size++】的下标为:0 1 2 3...和输出函数索取地址arr【i】的下标:0 1 2 3 ...刚好就对应了



[此贴子已经被作者于2018-4-10 16:44编辑过]

2018-04-10 16:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 6楼 凉冬
我在5楼给了个例子,劳驾看一下
2018-04-10 18:10
凉冬
Rank: 1
等 级:新手上路
帖 子:17
专家分:8
注 册:2018-3-13
得分:0 
回复 7楼 rjsp
您给的那个例子,第一次执行x=100,i=101。第二次的话呢,x=101,i=102...是不是说明我第二个猜想是对的呢 ?  麻烦您了

[此贴子已经被作者于2018-4-10 20:24编辑过]

2018-04-10 20:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485849-1-1.html




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

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