A. 实验5_1_设计函数fun

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

已知分段函数,当x<1时,y=x;当1<=x<=10时,y=2x-1;当10< x <=100时,y=3x-11;当x>100时,y=x*x-24。
设计函数int fun(int x),根据分段函数计算y值。
函数返回值范围不会超过int型变量。
输入为一个整数x,即自变量x。输出为函数值y的结果。

输入样例

Sample 1:
-99
Sample 2:
100

输出样例

Sample 1:
The result is:y=-99
Sample 2:
The result is:y=289

示例代码

#include<stdio.h>

int fun(int);

int main()
{
    int x;
    scanf("%d", &x);
    printf("The result is:y=%d", fun(x));
    return 0;
}

int fun(int x)
{
    if (x < 1)
    {
        return x;
    }
    else if (x <= 10)
    {
        return 2 * x - 1;
    }
    else if (x <= 100)
    {
        return 3 * x - 11;
    }
    else
    {
        return x * x - 24;
    }
}

B. 实验5_3_设计函数getDays

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

问题描述:
设计函数int getDays(int year,int month),根据给定的年year和月份month,计算该月的天数并返回。要注意闰年的判断

输入与输出要求:
输入两个整数y,m,即年份与月份。输出该年内该月的天数,占一行。

输入样例

1995 7
2000 2

输出样例

There are 31 days in month 7 year 1995. 
There are 29 days in month 2 year 2000.

示例代码

#include<stdio.h>

int day(int, int);

int main()
{
    int year, month;
    scanf("%d %d", &year, &month);
    printf("There are %d days in month %d year %d.", day(year, month), month, year);
    return 0;
}

int day(int year, int month)
{
    if ((year % 4 == 0 && (year % 100 != 0 ||year % 400 == 0)) && month == 2)
    {
        return 29;
    }
    else
    {
        switch (month)
        {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                return 31;
            case 2:
                return 28;
            default:
                return 30;
        }
    }
}

C. 实验5_4_设计函数getDigit

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

问题描述:
设计函数int getDigit(long long n),计算并返回正整数n的长度。

输入与输出要求:
输入一个正整数n,n的取值范围不会超过long long类型变量。输出该正整数的位数,如“The integer 20 has 2 digits.”,占一行。注意单词digits的单复数形式。

输入样例

1234567890
2

输出样例

The integer 1234567890 has 10 digits.
The integer 2 has 1 digit.

示例代码

#include<stdio.h>

int getDigit(long long int);

int main()
{
    long long int x;
    scanf("%lld", &x);
    if (getDigit(x) == 1)
    {
        printf("The integer %lld has %d digit.", x, getDigit(x));
    }
    else
    {
        printf("The integer %lld has %d digits.", x, getDigit(x));
    }
    return 0;
}

int getDigit(long long int x)
{
    int i = 19;
    for (long long int j = 1000000000000000000; x / j == 0; j /= 10)
    {
        i--;
    }
    return i;
}

D. 实验5_5_设计函数reverseNum

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

问题描述:
设计函数int reverseNum(int n),返回正整数n反转后的形式,如reverseNum(12345)的值为54321。

输入与输出要求:
输入一个正整数n,n的取值范围不会超过int类型变量,n不会有前导0,n的结尾也不会有0。输出该正整数的反转形式,输出如“The reverse form of number 12345 is 54321.”,占一行。

输入样例

12345
88776

输出样例

The reverse form of number 12345 is 54321.
The reverse form of number 88776 is 67788.

输出样例

#include<stdio.h>

int reverseNum(int);

int main()
{
    int x;
    scanf("%d", &x);
    printf("The reverse form of number %d is %d.", x, reverseNum(x));
    return 0;
}

int reverseNum(int x)
{
    int ans = 0;
    while (x != 0)
    {
        ans *= 10;
        ans += x % 10;
        x /= 10;
    }
    return ans;
}

E. 实验5_6_设计函数mypow

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

问题描述:
设计函数int mypow(int x,int n),返回正整数x的n次幂,如mypow(2,10)值为1024。

输入与输出要求:
输入两个非负整数x、和n,x的n次幂不会超过int型范围。输出计算结果,占一行。

输入样例

2 10
2 30

输出样例

1024
1073741824

示例代码

#include<stdio.h>

int mypow(int, int);

int main()
{
    int x, n;
    scanf("%d %d", &x, &n);
    printf("%d", mypow(x, n));
    return 0;
}

int mypow(int x,int n)
{
    int ans = 1;
    while (n--)
    {
        ans *= x;
    }
    return ans;
}

F. 实验5_10_设计函数judgeTriangle

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

问题描述:
设计函数int judgeTriangle(int a,int b,int c),判断a、b、c三边是否能构成三角形,如果能,那么进一步判断是属于哪种三角形(等边、等腰、直角、不规则三角形)。这里的a、b、c没有顺序之分。
当a、b、c三边不能构成三角形时,返回-1;当a、b、c三边构成不规则三角形时,返回0;当a、b、c三边构成直角三角形时,返回1;当a、b、c三边构成等腰三角形时,返回2;当a、b、c三边构成等边三角形时,返回3。

输入与输出要求:
输入三个正整数a、b、c,分别代表三角形的三边,输出判断结果。当无法构成三角形时输出“It is not a triangle.”;当构成不规则三角形时输出“It is a scalenous triangle.”;当构成直角三角形时输出“It is a right-angled triangle.”;当构成等腰三角形时输出“It is an isosceles triangle.”;当构成等边三角形时输出“It is a equilateral triangle.”。

输入样例

13 5 12
5 5 5
8 1 8
1 6 5
3 6 5

输出样例

It is a right-angled triangle.
It is a equilateral triangle.
It is an isosceles triangle.
It is not a triangle.
It is a scalenous triangle.

示例代码

#include<stdio.h>

int judgeTriangle(int, int, int);

int main()
{
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    switch (judgeTriangle(a, b, c))
    {
    case 0:
        printf("It is not a triangle.");
        break;
    
    case 1:
        printf("It is a equilateral triangle.");
        break;

    case 2:
        printf("It is an isosceles triangle.");
        break;

    case 3:
        printf("It is a right-angled triangle.");
        break;

    case 4:
        printf("It is a scalenous triangle.");
        break;
    }
    return 0;
}

int judgeTriangle(int a,int b,int c)
{
    if (a + b > c && a + c > b && b + c > a)
    {
        if (a == b && a == c && b ==c)
        {
            return 1;
        }
        else if (a == b || a == c || b == c)
        {
            return 2;
        }
        else if (a * a + b * b == c * c || c * c + b * b == a * a || c * c + a * a == b * b)
        {
            return 3;
        }
        else
        {
            return 4;
        }
    }
    else
    {
        return 0;
    }
}

G. 实验5_11_设计函数isPerfect与printPerfect

运行时间限制: 1000运行内存限制: 65536
作者: scshuanghai是否specialjudge: False

题目描述

问题描述:
如果一个整数的各因子(包括1但不包括该整数本身)值之和等于该整数,则该整数称为“完全数”(perfect number)。例如,6是一个完全数,因为6=1+2+3。你的任务是设计函数isPerfect和printPerfect,判断并打印出区间[a,b](1<=a<b<=20000)内的所有完全数,并统计完全数的总个数。
isPerfect函数原型:int isPerfect(int n);用于判断正整数n是否为完全数,若是,则返回值为1,否则为0。
printPerfect函数原型:void printPerfect(int n);用于打印出一个完全数n的所有因子,当执行printPerfect(6)时,打印效果为:6=1+2+3。

输入与输出要求:
输入两个正整数a和b,输出区间[a,b]内的所有完全数及完全数的总个数。

输入样例

1 10000

输出样例

6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064
The total number is 4.

示例代码

#include<stdio.h>

int isPerfect(int);
void printPerfect(int);

int main()
{
    int a, b, count = 0;
    scanf("%d %d", &a, &b);
    for (int i = a; i <= b; i++)
    {

        if (isPerfect(i))
        {
            count++;
        }
    }
    printf("The total number is %d.", count);
    return 0;
}

int isPerfect(int x)
{
    int sum = 0;
    for (int i = 1; i < x; i++)
    {
        if (x % i == 0)
        {
            sum += i;
        }
    }
    if (sum == x)
    {
        printPerfect(x);
        return 1;
    }
    return 0;
}

void printPerfect(int x)
{
    printf("%d=1", x);
    for (int i = 2; i < x; i++)
    {
        if (x % i == 0)
        {
            printf("+%d", i);
        }
    }
    printf("\n");
}
分类: OJ代码