Code平台函数专项训练

问题 A: 求最大值

【题目描述】

请编写函数GetMax,其功能是求两整数的最大值。要求在主函数中调用该函数计算并输出从键盘任意输入的两个整数的最大值。

(注:这是让你了解环境的一道水题。)

【输入】

整数num1和num2

【输出】

两个整数的最大值

【样例输入】

10 20

【样例输出】

MAX=20

【提示】

只需要完成并提交GetMax即可

【前置代码】

#include <stdio.h>

【后置代码】

int main(int argc, const char * argv[]) {
    int n;
    scanf("%d%d",&num1,&num2);
    max=GetMax(num1,num2);
    printf("MAX=%d",max);
    return 0;
}

【参考代码】

int GetMax (int a,int b)
{
    if (a>=b)
        return a;
    else
        return b;
}

通过这些题目我们能清晰地发现,Online Judge中的函数题会带有前置和后置代码,我们提交的代码会插入在两部分之间运行,我们写程序时一方面可以运用前置代码提供的方便,另一方面函数的接口要符合后置代码的要求。这类题有点类似于计算机二级考试中的填空题,但是其限制没有填空题那么死,至少函数的思路还是由你决定。看看下面这道题,这可不是水题了。

问题 B: 哥德巴赫猜想

【题目描述】

哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。但是哥德巴赫自己无法证明它,于是就写信请教赫赫有名的大数学家欧拉帮忙证明,但是一直到死,欧拉也无法证明。现在就请你编写程序帮他证明一下吧。

【输入】

一个大于2的偶数

【输出】

分解后的结果,只需要输出1条即可。

【样例输入】

8

【样例输出】

8 = 3 + 5

【提示】

本题只需要提交BrokeDown函数即可

【前置代码】

#include <stdio.h>
int IsPrime (int n)
{
    int i;
    for (i=2; i<n; i++)
        if (n%i==0)
            return 0;
    if (n==1)
        return 0;
    else
        return 1;
}

【后置代码】

int main(int argc, const char * argv[]) {
    int n;
    scanf("%d",&n);
    BrokeDown(n);
    return 0;
}

【参考代码】

#include <stdlib.h>
void BrokeDown (int n)
{
    for(int i=2; i<n; i++)
    {
        if (IsPrime(i)==0)
            continue;
        else for (int j=2; j<n; j++)
            if (IsPrime(j)==0)
                continue;
        else if(i+j==n)
        {
            printf("%d = %d + %d\n",n,i,j);
            exit(0);
        }
    }
}
分享