有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 编辑 ]