• C语言经典例题-11


    1.序列中整数去重

    题目描述:

    输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。

    输入描述:

    输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。

    输出描述:

    输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。

    输入:

    5

    10 12 93 12 75

    输出:

    10 12 93 75

    参考代码:

    #include 
    
    int main()
    {
        int n = 0;
        scanf("%d", &n);
        int i = 0;
        int j = 0;
        int arr[5000] = { 0 };
        for (i = 0; i < n; i++)
        {
            scanf("%d", &arr[i]);
        }
        for (i = 0; i < n; i++)
        {
            for (j = i + 1; j < n; j++)
            {
                if (arr[i] == arr[j])
                {
                    int k = 0;
                    for (k = j; k < n - 1; k++)
                    {
                        arr[k] = arr[k + 1];
                    }
                    n--;
                    j--;
                }
            }
        }
        for (i = 0; i < n; i++)
        {
            printf("%d ", arr[i]);
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    2.班级成绩输入输出

    题目描述:

    输入一个班级5个学生各5科成绩,输出5个学生各5科成绩及总分。

    输入描述:

    五行,每行输入一个学生各5科成绩(浮点数表示,范围0.0~100.0),用空格分隔。

    输出描述:

    五行,按照输入顺序每行输出一个学生的5科成绩及总分(小数点保留1位),用空格分隔。

    输入:

    98.5 96.0 100 99 88

    60.5 77 88.5 99 60

    80 80.5 89 91 92

    93 94 95.5 96 97.5

    100 98 88.5 88 78.5

    输出:

    98.5 96.0 100.0 99.0 88.0 481.5

    60.5 77.0 88.5 99.0 60.0 385.0

    80.0 80.5 89.0 91.0 92.0 432.5

    93.0 94.0 95.5 96.0 97.5 476.0

    100.0 98.0 88.5 88.0 78.5 453.0

    参考代码:

    #include 
    
    int main()
    {
        int i = 0;
        int j = 0;
        for (i = 0; i < 5; i++)
        {
            double sum = 0.0;
            double score = 0.0;
            for (j = 0; j < 5; j++)
            {
                scanf("%lf", &score);
                sum += score;
                printf("%.1lf ", score);
            }
            printf("%.1lf\n", sum);
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    3.序列重组矩阵

    题目描述:

    KK现在得到一个包含nm个数的整数序列,现在他需要把这nm个数按顺序规划成一个n行m列的矩阵并输出,请你帮他完成这个任务。

    输入描述:

    一行,输入两个整数n和m,用空格分隔,第二行包含n*m个整数(范围-231~231-1)。(1≤n≤10,1≤m≤10)

    输出描述:

    输出规划后n行m列的矩阵,每个数的后面有一个空格。

    输入:

    2 3

    1 2 3 4 5 6

    输出:

    1 2 3

    4 5 6

    参考代码:

    #include 
    
    int main()
    {
        int n = 0;
        int m = 0;
        int num = 0;
        scanf("%d%d", &n, &m);
        int i = 0;
        int j = 0;
        for (i = 1; i <= n*m; i++)
        {
            scanf("%d", &num);
            printf("%d ", num);
            if (i % m == 0)
            {
                printf("\n");
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    4.矩阵相等判断

    题目描述:

    KK得到了两个n行m列的矩阵,他想知道两个矩阵是否相等,请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)。

    输入描述:

    第一行包含两个整数n和m,表示两个矩阵包含n行m列,用空格分隔。从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。

    从n+2行到2n+1,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第二个矩阵中的元素。

    1 < n,m < 10

    输出描述:

    一行,如果两个矩阵相等输出"Yes"并换行,否则输出"No"并换行。

    输入:

    2 2

    1 2

    3 4

    1 2

    3 4

    输出:

    Yes

    参考代码:

    #include 
    
    int main()
    {
        int n = 0;
        int m = 0;
        scanf("%d%d", &n, &m);
        int i = 0;
        int j = 0;
        int arr1[10][10] = { 0 };
        int arr2[10][10] = { 0 };
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < m; j++)
            {
                scanf("%d", &arr1[i][j]);
            }
        }
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < m; j++)
            {
                scanf("%d", &arr2[i][j]);
            }
        }
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < m; j++)
            {
                if (arr1[i][j] != arr2[i][j])
                {
                    printf("No\n");
                    return 0;
                }
            }
        }
        printf("Yes\n");
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    5.矩阵转置

    题目描述:

    KK有一个矩阵,他想知道转置后的矩阵(将矩阵的行列互换得到的新矩阵称为转置矩阵),请编程帮他解答。

    输入描述:

    第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示第一个矩阵中的元素。

    输出描述:

    输出m行n列,为矩阵转置后的结果。每个数后面有一个空格。

    输入:

    2 3

    1 2 3

    4 5 6

    输出:

    1 4

    2 5

    3 6

    参考代码:

    #include 
    
    int main()
    {
        int n = 0;
        int m = 0;
        scanf("%d%d", &n, &m);
        int i = 0;
        int j = 0;
        int arr[10][10] = { 0 };
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < m; j++)
            {
                scanf("%d", &arr[i][j]);
            }
        }
    
        for (i = 0; i < m; i++)
        {
            for (j = 0; j < n; j++)
            {
                printf("%d ",arr[j][i] );
            }
            printf("\n");
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    【CSS】grid 布局一行自动填充,每行最大限定px
    学生作业管理系统的设计与实现-计算机毕业设计源码20912
    【Nginx34】Nginx学习:安全链接、范围分片以及请求分流模块
    Shell编程之函数与数组
    信息的定量描述
    Reading Notes For Introduction To Linux
    uniapp 获取cookie与携带cookie请求数据
    GPT的优势和GPT缺点
    优雅编码之——传统项目中,使用openfeign替换掉项目中的httpclient
    SpringMVC的视图
  • 原文地址:https://blog.csdn.net/zhongziqia/article/details/138186063