集美大学 - 2840 - 实验7-1 - 编程题

2023-05-16

实验7-1-1-一维数组 简化的插入排序

本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。

输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。

输入样例:

5
1 2 4 5 7
3

输出样例:

1 2 3 4 5 7 
#include<stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int i;
    int a[10];
    for (i = 0; i < n; i++) scanf("%d", &a[i]);
    int x;
    scanf("%d", &x);
    i = 0;
    if (x >= a[n - 1]) a[n] = x;
    else {
        while (i < n + 1) {
            if (a[i] >= x) {
                for (int j = n; j > i; j--) {
                    a[j] = a[j - 1];
                }
                break;
            }
            i++;
        }
        a[i] = x;
    }
    for (int i = 0; i <= n; i++) printf("%d ", a[i]);
    return 0;
}

实验7-1-2-一维数组/for 求最大值及其下标

本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。

输出格式:
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。

输入样例:

6
2 8 10 1 9 10

输出样例:

10 2
#include<stdio.h>

int main() {
    int a[11];
    int x;
    scanf("%d", &x);
    int i = 0;
    for (i = 0; i < x; i++) scanf("%d", &a[i]);
    int max = a[0];
    for (i = 1; i < x; i++) {
        if (a[i] >= max) max = a[i];
        else max = max;
    }
    printf("%d ", max);
    for (i = 0; i < x; i++) {
        if (a[i] == max) {
            printf("%d", i);
            break;
        }
    }
    return 0;
}

实验7-1-3-一维数组/for 将数组中的数逆序存放

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。

输入格式:
输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。

输出格式:
在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。

输入样例:

4
10 8 1 2

输出样例:

2 1 8 10
#include<stdio.h>

int main() {
    int a[11];
    int n, i;
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    int x = n - 1;
    for (x = n - 1; x >= 0; x--) {
        printf("%d", a[x]);
        if (x >= 1) printf(" ");
    }
    return 0;
}

实验7-1-4-一维数组 找出不是两个数组共有的元素

给定两个整型数组,本题要求找出不是两者共有的元素。

输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。

输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。

输入样例:

10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1

输出样例:

3 5 -15 6 4 1
#include<stdio.h>

int main() {
    int m, i, a[20];
    scanf("%d", &m);
    for (i = 0; i < m; i++) scanf("%d", &a[i]);
    int n, j, b[20];
    scanf("%d", &n);
    for (j = 0; j < n; j++) scanf("%d", &b[j]);
    int cnt;
    int k[40];
    int p = 0;
    for (i = 0; i < m; i++) {
        cnt = 0;
        for (j = 0; j < n; j++) {
            if (a[i] != b[j]) {
                cnt++;
                for (int x = 0; x < i; x++) {
                    if (a[i] == a[x]) cnt = 0;
                }
            }
        }
        if (cnt == n) {
            k[p] = a[i];
            p++;
        }
    }
    for (j = 0; j < n; j++) {
        cnt = 0;
        for (i = 0; i < m; i++) {
            if (b[j] != a[i]) {
                cnt++;
                for (int x = 0; x < j; x++) {
                    if (b[j] == b[x]) cnt = 0;
                }
            }
        }
        if (cnt == m) {
            k[p] = b[j];
            p++;
        }
    }
    printf("%d", k[0]);
    for (i = 1; i < p; i++) printf(" %d", k[i]);
    return 0;
}

实验7-1-5-一维数组 选择法排序

本题要求将给定的n个整数从大到小排序后输出。

输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

4
5 1 7 6

输出样例:

7 6 5 1
#include<stdio.h>

int main() {
    int a[11];
    int n;
    scanf("%d", &n);
    int i;
    for (i = 0; i < n; i++) scanf("%d", &a[i]);
    int j;
    int x;
    for (j = 0; j < n; j++) {
        for (i = 0; i < n - j - 1; i++) {
            if (a[i] < a[i + 1]) {
                x = a[i];
                a[i] = a[i + 1];
                a[i + 1] = x;
            }
        }
    }
    for (i = 0; i < n; i++) {
        printf("%d", a[i]);
        if (i < n - 1) printf(" ");
    }
    return 0;
}

实验7-1-6-一维数组 求一批整数中出现最多的个位数字

给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入格式:
输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。

输出格式:
在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

输入样例:

3
1234 2345 3456

输出样例:

3: 3 4
#include<stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[1000];
    int i;
    int k[100000];
    int p = 0;
    int q;
    for (i = 0; i < n; i++) scanf("%d", &a[i]);
    i = 0;
    while (i < n) {
        if (a[i] == 0) {
            k[p] = 0;
            p++;
        } else {
            while (a[i] != 0) {
                q = a[i] % 10;
                k[p] = q;
                p++;
                a[i] /= 10;
            }
        }
        i++;
    }
    int b[10] = {0};
    for (i = 0; i < p; i++) {
        if (k[i] == 0) b[0]++;
        else if (k[i] == 1) b[1]++;
        else if (k[i] == 2) b[2]++;
        else if (k[i] == 3) b[3]++;
        else if (k[i] == 4) b[4]++;
        else if (k[i] == 5) b[5]++;
        else if (k[i] == 6) b[6]++;
        else if (k[i] == 7) b[7]++;
        else if (k[i] == 8) b[8]++;
        else if (k[i] == 9) b[9]++;
    }
    int max = 0;
    for (i = 0; i < 10; i++) {
        if (b[i] >= max) max = b[i];
    }
    printf("%d:", max);
    for (i = 0; i < 10; i++) {
        if (b[i] == max) printf(" %d", i);
    }
    return 0;
}

实验7-1-7-一维数组 查找整数

本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。

输入格式:
输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

输出格式:
在一行中输出X的位置,或者“Not Found”。

输入样例1:

5 7
3 5 7 1 9

输出样例1:

2

输入样例2:

5 7
3 5 8 1 9

输出样例2:

Not Found
#include<stdio.h>

int main() {
    int n, x;
    scanf("%d %d", &n, &x);
    int i, cnt = 0;
    int a[21];
    for (i = 0; i < n; i++) scanf("%d", &a[i]);
    for (i = 0; i < n; i++) {
        if (a[i] == x) {
            printf("%d", i);
            cnt++;
            break;
        }
    }
    if (cnt == 0) printf("Not Found");
    return 0;
}

实验7-1-8-一维数组 输出数组元素

本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。

输入格式:
输入的第一行给出正整数n(1<n≤10)。随后一行给出n个整数,其间以空格分隔。

输出格式:
顺次计算后项减前项之差,并按每行三个元素的格式输出结果。数字间空一格,行末不得有多余空格。

输入样例:

10
5 1 7 14 6 36 4 28 50 100

输出样例:

-4 6 7
-8 30 -32
24 22 50
#include<stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    int a[11];
    int i;
    for (i = 0; i < n; i++) scanf("%d", &a[i]);
    int y = 1;
    i = 0;
    if (n == 2) printf("%d\n", a[1] - a[0]);
    else {
        while (i < n - 1) {
            printf("%d", a[i + 1] - a[i]);
            if (y < n - 1) {
                if (y % 3 != 0)printf(" ");
                if (y % 3 == 0) printf("\n");
            }
            y++;
            i++;
        }
    }
    return 0;
}

实验7-1-9-一维数组 数字加密

输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。

输入格式:
输入在一行中给出一个四位的整数x,即要求被加密的数。

输出格式:
在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。

输入样例:

1257

输出样例:

The encrypted number is 4601
#include<stdio.h>

int main() {
    int x;
    scanf("%d", &x);
    int a[5];
    int i = 0;
    for (i = 0; i < 4; i++) {
        a[i] = (x % 10 + 9) % 10;
        x /= 10;
    }
    printf("The encrypted number is %0.4d", 1000 * a[1] + 100 * a[0] + 10 * a[3] + a[2]);
    return 0;
}

实验7-1-10-一维数组 交换最小值和最大值

本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。

注意:题目保证最大和最小值都是唯一的。

输入格式:
输入在第一行中给出一个正整数N(≤10),第二行给出N个整数,数字间以空格分隔。

输出格式:
在一行中顺序输出交换后的序列,每个整数后跟一个空格。

输入样例:

5
8 2 5 1 4

输出样例:

1 2 5 4 8 
int main() {
    int a[10];
    int n;
    scanf("%d", &n);
    int i;
    for (i = 0; i < n; i++) scanf("%d", &a[i]);
    int b;
    int min = 100000000;
    for (i = 0; i < n; i++) {
        if (a[i] <= min) min = a[i];
    }
    for (i = 0; i < n; i++) {
        if (a[i] == min) {
            b = a[i];
            a[i] = a[0];
            a[0] = b;
        }
    }
    int max = -100000000;
    for (i = 0; i < n; i++) {
        if (a[i] >= max) max = a[i];
    }
    for (i = 0; i < n; i++) {
        if (a[i] == max) {
            b = a[i];
            a[i] = a[n - 1];
            a[n - 1] = b;
        }
    }
    for (i = 0; i < n; i++) printf("%d ", a[i]);
    return 0;
}

实验7-1-11-维数组/嵌套循环 求整数序列中出现次数最多的数

本题要求统计一个整型序列中出现次数最多的整数及其出现次数。

输入格式:
输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。

输出格式:
在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

输入样例:

10 3 2 -1 5 3 4 3 0 3 2

输出样例:

3 4
#include<stdio.h>

int main(void) {
    int n, a, j, max = 0, t;
    scanf("%d", &n);
    int num[1000];
    int i;
    for (i = 0; i < n; i++) scanf("%d", &num[i]);
    for (i = 0; i < n; i++) {
        a = 1;
        for (j = 0; j < n; j++) {
            if (num[i] == num[j]) {
                a++;
            }
        }
        if (max < a) max = a, t = i;
    }
    printf("%d %d", num[t], max - 1);
    return 0;
}

实验7-1-12-一维数组 组个最小数

给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

现给定数字,请编写程序输出能够组成的最小的数。

输入格式:
输入在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。

输出格式:
在一行中输出能够组成的最小的数。

输入样例:

2 2 0 0 0 3 0 0 1 0

输出样例:

10015558
#include<stdio.h>

int main() {
    int a[10];
    int i, j, temp;
    for (i = 0; i < 10; i++) scanf("%d", &a[i]);
    for (i = 1; i < 10; i++) {
        if (a[i] != 0) {
            printf("%d", i);
            temp = i;
            break;
        }
    }
    for (i = 0; i < 10; i++) {
        if (i == temp) a[i] = a[i] - 1;
        for (j = 0; j < a[i]; j++) {
            printf("%d", i);
        }
    }
    return 0;
}

实验7-1-13-一维数组/贪心算法 装箱问题

假设有N项物品,大小分别为 s 1 、 s 2 、 . . . 、 s i 、 . . . 、 s N s_1、s_2、...、s_i、...、s_N s1s2...si...sN ,其中 s i s_i si为满足 1 ⩽ s i ⩽ 100 1 \leqslant s_i \leqslant 100 1si100的整数。要把这些物品装入到容量为100的一批箱子(序号1-N)中。装箱方法是:对每项物品, 顺序扫描箱子,把该物品放入足以能够容下它的第一个箱子中。请写一个程序模拟这种装箱过程,并输出每个物品所在的箱子序号,以及放置全部物品所需的箱子数目。

输入格式:
输入第一行给出物品个数N(≤1000);第二行给出N个正整数 s i s_i si 1 ⩽ s i ⩽ 100 1 \leqslant s_i \leqslant 100 1si100),表示第i项物品的大小)。

输出格式:
按照输入顺序输出每个物品的大小及其所在的箱子序号,每个物品占1行,最后一行输出所需的箱子数目。

输入样例:

8
60 70 80 90 30 40 10 20

输出样例:

60 1
70 2
80 3
90 4
30 1
40 5
10 1
20 2
5
#include<stdio.h>

int main() {
    int s[1000];
    int n, i, j, t = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++)scanf("%d", &s[i]);
    int a[1000][2];
    for (i = 0; i < n; i++) a[i][0] = 0;
    for (i = 0; i < n; i++) a[i][1] = i + 1;
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            if (a[j][0] + s[i] <= 100) {
                printf("%d %d\n", s[i], a[j][1]);
                a[j][0] = a[j][0] + s[i];
                if (j >= t) t = j;
                break;
            }
        }
    }
    printf("%d", a[t][1]);
    return 0;
}

说明:这题代码写得很丑也很乱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

集美大学 - 2840 - 实验7-1 - 编程题 的相关文章

  • 解决 qt.qpa.xcb: could not connect to display 问题

    2022 07 21更新 现在WSL2已经可以直接运行 Linux GUI 了 xff01 xff01 xff01 不再需要安装Xserver xff08 XLaunch xff09 之类的 xff01 xff01 xff01 参考微软的官
  • 解决在VScode中调试C++代码断点无效、断点错位的问题

    问题背景 最近在学习高翔博士的经典教程 视觉SLAM十四讲 xff08 第2版 xff09 xff0c 使用其配套的Github中C 43 43 代码进行学习 xff0c 在调试时发现断点无效 错位的问题 xff0c 查阅了一些资料 xff
  • Ubuntu系统安装在移动固态硬盘,实现在不同电脑即插即用

    Ubuntu系统安装在移动固态硬盘 xff0c 实现在不同电脑即插即用 一 前期准备二 制作系统启动盘2 1 Ubuntu20 04系统下载2 2 制作U盘启动盘 三 磁盘分区 xff08 重点 xff09 四 Ubuntu系统安装 xff
  • 详解C/C++代码的预处理、编译、汇编、链接全过程

    1 C C 43 43 运行的四个步骤 编写完成一个C C 43 43 程序后 xff0c 想要运行起来 xff0c 必须要经过四个步骤 xff1a 预处理 编译 汇编和链接 每个步骤都会生成对应的文件 xff0c 如下图所示 xff08
  • VSCode调试C++代码的多种方案

    以下内容均针对 Linux 操作系统 xff08 包括Windows的Linux子系统WSL2 xff09 本文是对Linux系统中使用VSCode编译调试C 43 43 代码的系列文章的总结 xff0c 前面三篇文章如下 xff1a 详解
  • 【ROS】rostopic常用命令

    记录ROS查看话题的常用命令 xff1a rostopic 查看节点列表 xff1a rostopic list 查看节点信息 xff0c 如相机节点的内参K矩阵 畸变D矩阵 分辨率等等 rostopic echo camera camer
  • 【ROS笔记】设置、修改ROS环境变量

    ROS设置环境变量 ROS安装到Ubuntu后 xff0c 默认在 opt路径下 xff0c 由于在使用过程中需要频繁在终端使用ROS命令 xff0c 需要对其环境变量进行设置 Ubuntu默认使用终端为bash xff0c 在bash中设
  • 【ROS笔记】工作空间(workspace)、功能包(package)的介绍及创建

    初接触ROS时 xff0c 对其文件结构容易产生困惑和混淆 xff0c 比如 catkin ws到底是什么 xff1f catkin ws src目录下存放的是什么 xff1f catkin ws src路径下怎么还会有其他的src 目录
  • RecyclerView中倒计时item的优雅方案

    本文介绍在RecyclerView中使用倒计时楼层 xff0c 并且每秒刷新显示倒计时 没有纠结于样式 xff0c 主要介绍代码结构和设计模式 先看一下效果 xff1a 我们采取的是观察者模式的方法 xff0c 启动一个handler xf
  • bluerov

    ov这个东西其实不难 xff0c 比较麻烦的是密封 xff0c 防水等工作 xff0c 而非一些技术性工作 xff08 所谓技术性工作就是算法 xff0c 人工智能等 xff09 现在供玩家玩的Rov xff0c 基本模式是这样的 xff0
  • 在线教程 | 用「网红项目」DeepSOCIAL 进行社交距离监测

    首发自 xff1a 公众号 HyperAI超神经 内容一览 xff1a YOLO v4 是一个实时的 高精度的目标检测模型 xff0c 本教程将详细讲解如何基于 YOLO v4 和 SORT 算法 xff0c 实现在多目标条件下的人群距离检
  • C#实现服务端/客户端的tcp异步通信完整示例

    demo 通过一个简单的demo xff0c 实现服务器和客户端之间的tcp异步通信 消息进行了Des加密和解密 运行动图如下 xff1a 图中有三个程序在运行 xff0c 最左边是服务端 xff0c 另外两个是客户端 xff0c 客户端可
  • C++封装HTTP

    C 43 43 封装HTTP Client 简介HTTP请求头封装HTTP请求头基本格式post请求头封装post请求头 HTTP Client 以及HTTP Server交互HTTP消息解析TCP封装HTTP Client的坑 Trans
  • android 自定义多功能进度条

    自定义进度条 xff0c 直接在布局文件里传入颜色值 xff0c 不用自己再去写样式 xff0c 还可以 效果图 xff1a git地址
  • 树莓派L298N电机驱动程序连接图文教程

    手里有一块树莓派3闲置很久 xff0c 不知干点啥好呢 看到不少网友用树莓派做智能小车 xff0c 好像很好玩的酱紫 xff0c 就到淘宝买了一些配件 对于硬件小白的我来说安装过程并不轻松 xff0c 网上看了很多资料但有的地方介绍的并不很
  • 一个比较好用的socket 类封装(封装http 请求)

    name myhttp h function http 请求 copyright author mark date 2008 05 13 ifndef MY HTTP INCLUDE define MY HTTP INCLUDE inclu
  • Odroid U3 烧写镜像文件

    在Ubuntu下往Odroid U3板子的eMMC卡里烧写xubuntu镜像文件 xff0c 主要步骤如下 xff1a 1 下载要烧写的镜像文件 xff0c 按照需要 xff0c 我下载的是桌面版的xubuntu 13 04 desktop
  • 解决odroid-XU3的HDMI输出问题

    odroid XU3的板子直接通过microHDMI口连接显示器 xff0c 并没有显示 解决方法是修改 media boot boot ini文件 xff0c 取消屏蔽与HDMI设置相关语句 重启之后 xff0c 解决问题 由于不同的显示
  • 现有的 TypeRef 应有对应的 TypeDef(Impl),但它没有

    现有的 TypeRef 应有对应的 TypeDef Impl xff0c 但它没有 本人需要在C 中调用C 43 43 代码 xff0c 故而建立了一个CLR项目 xff0c 建立了四个文件 xff0c 分别是两个纯C 43 43 文件 C
  • [zed2i] 相机内参数获取

    内置对应的程序 xff1a 双目SDK校正方法 关灯避免反射 xff0c 使得房间的灯光尽可能的黑 xff0c 拿着相机对准屏幕的标定板 xff08 可以不关灯 xff09 开始校正 xff0c 红圈是目标 xff0c 需要移动蓝圈 xff

随机推荐