有几道能执行但执行结果不对的题目。
这几个代码都能执行,但不知道为什么执行的结果却另人匪夷所思,应该是内存读写错了吧,我猜想是不是函数结束的时候所有定义的数的空间都被释放了,所以无法返回正确的值?那这国家二级机试考试也太……无语了……代码如下:(这是求所有2到100素数的和的代码:)搞错了,实在不好意思,因为问题积累的原因,一眼扫了过去,以为是2到100素数和,题目不是这样的。
原题目我找到了,是这样的:计算并输出high最大的10个素数之和。我的错……我的错……
程序代码:
# include <stdio.h> # include <math.h> int fun(int high) { int sum=0, i, n=0, yes; while ((high>=2) && (n<=10)) { yes = 1; for (i=0; i<high/2; i++) if(high%i == 0) { yes=0; break; } if(yes) { sum += high; n++; } high--; } return sum; } int main(void) { int high, sum; printf("请输入high的值:"); scanf("%d", &high); sum = fun(high); printf("%d", sum); return 0; }
计算一个通项式的累加和:
程序代码:
# include <stdio.h> # include <math.h> double fun(double x, int n) { double sum=1, t=-1.0; int i; for (i=0; i<n; i++) { t *= (-1)*x/i; sum += t; } return sum; } int main(void) { double x, sum; int n; printf("请输入x和n的值\n"); printf("x = "); scanf("%lf", &x); printf("n = "); scanf("%d", &n); sum=fun(x, n); printf("结果是:%lf\n", sum); return 0; }
求一个排列组合数:
程序代码:
# include <stdio.h> int fun(void) { int i, j, k, sum=0; for (i=1; i<4; i++) { for (j=1; i<6; j++) { k = 8-i-j; if((k>=0) && (k<=6)) { printf("红球:%d\n", i); printf("白球: %d\n", j); printf("黑球:%d\n", k); printf("\n"); } sum++; } } return sum; //返回的时候是不是sum的内存空间被释放所以赋值不了? } int main(void) { int sum; sum = fun(); printf("总共的组合数为:%d", sum); return 0; }
[ 本帖最后由 ai8343512 于 2011-8-28 15:40 编辑 ]