A. 实验7_1_平均成绩

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

题目描述

已知某个学生n门课的成绩,求平均成绩。
输入与输出要求:首先输入一个整数n,代表课程数,n不会超过100。然后输入n个整数,代表该学生的n门课成绩,每门成绩的取值范围是0-100。这n个成绩必须使用数组存储。输出该同学的平均成绩,保留两位小数,占一行。为了提高精度,求出的平均成绩建议使用double类型存储。

输入样例

5
80 75 67 90 97

输出样例

81.80

示例代码

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int x[n];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &x[i]);
    }
    double all = 0;
    for (int i = 0; i < n; i++)
    {
        all += x[i];
    }
    all /= n;
    printf("%.2lf\n", all);
    return 0;
}

B. 实验7_2_数组查找

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

题目描述

有n个互不相同的整数,存储在数组中。在这n个整数中查找m个整数,如果存在,则打印出与之相邻的整数;否则就显示无此数。
输入与输出要求:首先输入一个整数n以及n个整数(n的范围是1—1000),然后输入整数m,代表查询次数(m的范围是1—100),接着输入m个待查询的数。输出m行查询的结果,每次的查询结果中可能有一个数、两个数或没有数。若没有数则输出“NULL”。

输入样例

5
89 7890 22 56 87
6
89 7890 22 56 87 999

输出样例

7890
89 22
7890 56
22 87
56
NULL

示例代码

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[n];
    for (int i = 0; i < n; i++) 
    {
        scanf("%d", &a[i]);
    }
    int m;
    scanf("%d", &m);
    int s[m];
    for (int i = 0; i < m; i++) 
    {
        scanf("%d", &s[i]);
    }
    for (int i = 0; i < m; i++)
    {
        int state = 1;
        for (int j = 0; j < n; j++)
        {
            if (s[i] == a[j])
            {
                if (j - 1 >= 0 && j + 1 < n)
                {
                    printf("%d %d\n", a[j - 1], a[j + 1]);
                }
                else if (j - 1 >= 0)
                {
                    printf("%d\n", a[j - 1]);
                }
                else if (j + 1 < n)
                {
                    printf("%d\n", a[j + 1]);
                }
                else
                {
                    printf("NULL\n");
                }
                state = 0;
            }
        }
        if (state)
        {
            printf("NULL\n");
        }
    }
    return 0;
}

C. 实验7_3_奇数偶数

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

题目描述

已知一个长度为n的整数数组,在保证原顺序的前提下,将该数组中所有的偶数放到所有的奇数之前,存到一个新数组中,并将新数组输出。
输入与输出要求:首先输入一个整数n,代表输入整数个数(n的范围是1—200)。然后输入n个整数,每个整数的取值范围是int型范围。输出新数组中的元素,数与数之间用空格分开,第n个数后是换行符。

输入样例

10
3 9 4 5 8 7 10 2 6 1

输出样例

4 8 10 2 6 3 9 5 7 1

示例代码

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[n];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    int b[n];
    int bb = 0;
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 2 == 0)
        {
            b[bb++] = a[i];
        }
    }
    for (int i = 0; i < n; i++)
    {
        if (a[i] % 2 == 1)
        {
            b[bb++] = a[i];
        }
    }
    for (int i = 0; i < n; i++)
    {
        printf("%d ", b[i]);
    }
    return 0;
}

D. 实验7_8_最长平台

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

题目描述

给定一个长度为n的整数数组,数组中连续的相等元素构成的子序列称为平台。试设计算法,求出数组中最长平台的长度。
输入与输出要求:首先输入一个整数n,代表数组元素的个数,n不会超过1000。然后是n个整数,每个整数的取值范围是int型范围。输出最长平台的长度,占一行。

输入样例

15
1 1 2 2 4 5 7 7 7 7 7 7 3 3 9

输出样例

6

示例代码

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[n];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    int max = 0;
    for (int i = 0; i < n;)
    {
        int count = 0;
        int xx = a[i];
        while(a[i] == xx)
        {
            count++;
            i++;
        }

        if (count > max)
        {
            max = count;
        }
    }
    printf("%d\n", max);
    return 0;
}

E. 实验7_9_发工资

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

题目描述

每到月底,公司就要给员工发工资。每个员工的工资都是由(100,50,20,10,5,2,1) 7种面值的钞票组成的。为了发工资的简便,公司会尽量给员工发较大面值的钞票,例如某个员工的工资为1260,那么公司会给员工12张100元的、1张50元的、1张10的钞票。你的任务是,告诉你某员工的工资,你来计算如何给员工发工资。
输入与输出要求:首先输入一个正整数n(可以用int存储),代表某位员工的工资。输出给该员工发的钞票面值与数量。

输入样例

1201
2352

输出样例

100:12
1:1
100:23
50:1
2:1

示例代码

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[7];
    int b[7] = {100, 50, 20, 10, 5, 2, 1};
    for (int i = 0; i < 7; i++) 
    {
        a[i] = n / b[i];
        n %= b[i];
    }
    for (int i = 0; i < 7; i++)
    {
        if (a[i])
        {
            printf("%d:%d\n", b[i], a[i]);
        }
    }
    return 0;
}

F. 实验7_10_数组交换

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

题目描述

设有整数数组A和B,它们长度均为n。A数组中的元素为任意整数,不超过int型数据范围。B数组中元素的值互不相同,且取值介于0至n-1之间。现要求按数组B的内容调整A中数据的次序,比如当B[0]=9时,则要求将A[0]的内容与A[9]互换。
输入与输出要求:首先输入一个整数n(0<n<=10),代表数组A、B元素的个数。然后输入n个整数代表数组A中的元素。最后输入 n个整数代表数组B中的元素,注意B中元素的要求。输出调整后A数组的内容,数与数之间用空格分开,注意第n个数后没有空格而是换行符。

输入样例

10
5 10 3 9 4 12 8 7 11 2
1 3 6 9 2 7 0 8 5 4

输出样例

3 9 4 2 5 12 10 11 7 8

示例代码

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[n];
    int b[n];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &b[i]);
    }
    for (int i = 0; i < n; i++)
    {
        int tmp = a[i];
        a[i] = a[b[i]];
        a[b[i]] = tmp;
    }
    for (int i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
    return 0;
}
分类: OJ代码