| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3985 人关注过本帖, 1 人收藏
标题:有printf()语句的函数,怎么获取它的返回值
只看楼主 加入收藏
Amycoa
Rank: 2
等 级:论坛游民
帖 子:18
专家分:56
注 册:2012-10-27
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:3 
有printf()语句的函数,怎么获取它的返回值
程序代码:
/************************************************************
*Copyright (C), 2012, RedCity.
*Project: 17st.函数[素数项目重写].vcxproj
*FileName: 17st.函数[素数项目重写].c
*Author:AmyCc
*Description: 函数调用练习
*Version:1.0   
*Function List: ErgodicAndPrint(); IsPrime()
*History:
*    AmyCc 2012/11/05 22:07 v1.0 创建项目
*        关于素数:
*           如果M不是素数(除1和本身)外:
*            1. 一定存在两个相等的数乘积等于它,这两个数就是根号M;
*            2. 如果两个数都在根号M以下,乘起来小于M;
*            3. 如果两个数都在根号M以上,乘起来一定大于M;
*            综上,两个数分布于根号M两边,那么只要找到其中一半即可。
************************************************************/

# include <stdio.h>
# include <math.h>

int IsPrime(int val);
int ErgodicAndPrint(int Val);

int main(void)
{
    int EndVal;
    // int t =  ErgodicAndPrint(EndVal);    //并不能获取返回值,需要怎么才能获取到这个函数里    return SuShuCnt;的值?

    printf("\n请输入您需要查找的范围内末尾整数:  ");
    scanf("%d", &EndVal);

    ErgodicAndPrint(EndVal);    // 函数调用(内含输出格式);

    system("pause");
    return 213;
}

int IsPrime(int val)
{
    int i;
    int t = sqrt((float)(val)) + 1;        // 筛选素数只判断根号val左边的整数即可,+1防止精确度可能存在误差,(开方:sqrt(x); 幂:pow(x,y);)

    //    if (val == -858993460)    return -1;    // 判断非法字符以整数类型传递到函数内(VS2012中,scanf接受到不匹配类型会置变量为该值

    for (i=2; i<t; i++)
    {
        if (val%i == 0)        // 余数为0,则表示val有其他因数
        {
            return 0;
        }
    }

    return 1;
}

int ErgodicAndPrint(int Val)
{
    int i, SuShuCnt;    //SuShuCnt计数素数的个数

    printf("\n经遍历计算,在1至%d范围内的素数(含首尾)列表如下:\n\n", Val);

    for (i=1,SuShuCnt=0; i<=Val; i++)
    {
        if (IsPrime(i) == 1)
        {
            printf("%d;\n",i);
            SuShuCnt++;
        }
    }

    printf("\n共计%d个素数,列表完毕!\n\n\7", SuShuCnt);

    return SuShuCnt;
}

 int t =  ErgodicAndPrint(EndVal);    //并不能获取返回值,需要怎么才能获取到这个函数里return的值?

[ 本帖最后由 Amycoa 于 2012-11-5 23:16 编辑 ]
搜索更多相关主题的帖子: Copyright 项目 
2012-11-05 23:13
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
  // int t =  ErgodicAndPrint(EndVal);    //并不能获取返回值,需要怎么才能获取到这个函数里    return SuShuCnt;的值?

应该没问题吧

DO IT YOURSELF !
2012-11-06 08:08
hfhf2006
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:169
注 册:2012-6-29
收藏
得分:15 
回复 楼主 Amycoa
对你的程序进了三处修改,看看我的标记
程序代码:
/************************************************************
*Copyright (C), 2012, RedCity.
*Project: 17st.函数[素数项目重写].vcxproj
*FileName: 17st.函数[素数项目重写].c
*Author:AmyCc
*Description: 函数调用练习
*Version:1.0  
*Function List: ErgodicAndPrint(); IsPrime()
*History:
*    AmyCc 2012/11/05 22:07 v1.0 创建项目
*        关于素数:
*           如果M不是素数(除1和本身)外:
*            1. 一定存在两个相等的数乘积等于它,这两个数就是根号M;
*            2. 如果两个数都在根号M以下,乘起来小于M;
*            3. 如果两个数都在根号M以上,乘起来一定大于M;
*            综上,两个数分布于根号M两边,那么只要找到其中一半即可。
************************************************************/

# include <stdio.h>
# include <math.h>
# include <conio.h>
# include <stdlib.h>/*第一处修改:这句要加上,不然system(“puse”);会出错*/
int IsPrime(int val);
int ErgodicAndPrint(int Val);

int main(void)
{
    int EndVal,result;
    // int t =  ErgodicAndPrint(EndVal);    //并不能获取返回值,需要怎么才能获取到这个函数里    return SuShuCnt;的值?

    printf("\n请输入您需要查找的范围内末尾整数:  ");
    scanf("%d", &EndVal);

    result=ErgodicAndPrint(EndVal);    // 函数调用(内含输出格式);
    printf("\n共计%d个素数,列表完毕!\n\n\7", result);/*修改第二处:得到函数结果了*/
    system("pause");
    return 213;
}

int IsPrime(int val)
{
    int i;
    int t = (int)sqrt((float)(val)) + 1;        /*修改第三处:进行显示类型转换,不然又警告*/// 筛选素数只判断根号val左边的整数即可,+1防止精确度可能存在误差,(开方:sqrt(x); 幂:pow(x,y);)

    //    if (val == -858993460)    return -1;    // 判断非法字符以整数类型传递到函数内(VS2012中,scanf接受到不匹配类型会置变量为该值

    for (i=2; i<t; i++)
    {
        if (val%i == 0)        // 余数为0,则表示val有其他因数
        {
            return 0;
        }
    }

    return 1;
}

int ErgodicAndPrint(int Val)
{
    int i, SuShuCnt;    //SuShuCnt计数素数的个数

    printf("\n经遍历计算,在1至%d范围内的素数(含首尾)列表如下:\n\n", Val);

    for (i=1,SuShuCnt=0; i<=Val; i++)
    {
        if (IsPrime(i) == 1)
        {
            printf("%d;\n",i);
            SuShuCnt++;
        }
    }

   

    return SuShuCnt;
}



2012-11-06 13:22
Amycoa
Rank: 2
等 级:论坛游民
帖 子:18
专家分:56
注 册:2012-10-27
收藏
得分:0 
回复 3楼 hfhf2006
谢谢 知道了, 在获取返回值的同时必定会打印出来

C/ASM ReGo ! .. ...Amy.Coa
2012-11-06 17:44
快速回复:有printf()语句的函数,怎么获取它的返回值
数据加载中...
 
   



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

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