有几道能执行但执行结果不对的题目。
这几个代码都能执行,但不知道为什么执行的结果却另人匪夷所思,应该是内存读写错了吧,我猜想是不是函数结束的时候所有定义的数的空间都被释放了,所以无法返回正确的值?那这国家二级机试考试也太……无语了……代码如下:(这是求所有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 编辑 ]









