| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 470 人关注过本帖
标题:帮我看看这两道题哪里有问题吧,谢谢了。
取消只看楼主 加入收藏
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
帮我看看这两道题哪里有问题吧,谢谢了。
这是计算high以内最大的10个素数之和的代码,能执行:问题是照理来说输入10输出应该是17,可它为什么是21???
程序代码:
# 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=2; 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\n", sum);

    return 0;
}


这道题是把前半部分元素的值与后半部分元素的值对换,如果是奇数个,则中间的数保持不变。
如1,2,3,4,5,6,7,8,9变换后就成了,6,7,8,9,5,1,2,3,4
问题是编译组建都没有错误,可就是执行错误……代码如下:

程序代码:
# include <stdio.h>
# define N 9

void fun(int a[], int n)
{
    int i, t, p;

    p = (n%2==0)?(n/2):(n/2+1);

    for (i=0; i<p; i++)
    {
        t = a[i];
        a[i] = a[p+i];
        a[p+i] = t;
    }
}

int main(void)
{
    int b[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int i;

    printf("\nThe original data :\n");
    for (i=0; i<N; i++)
        printf("%4d", b[i]);
    printf("\n");

    fun(b, N);

    printf("\nThe data after moving :\n");
    for (i=0; i<N; i++)
        printf("%4d", b[i]);
    printf("\n");

    return 0;
}


[ 本帖最后由 ai8343512 于 2011-8-28 16:50 编辑 ]
搜索更多相关主题的帖子: color 最大的 
2011-08-28 16:49
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
第一个问题明白了,就是第二个问题……
可能我电脑装得这个VC6.0软件不支持三目运算符吧……

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2011-08-29 08:33
快速回复:帮我看看这两道题哪里有问题吧,谢谢了。
数据加载中...
 
   



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

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