吉林大学 超星慕课 高级语言程序设计 学习通部分题目极其答案

ops/2024/11/17 10:22:28/

题目编号:Exp04-Basic06,GJBook3-06-04

题目名称:循环右移

题目描述:编写程序,不使用其它辅助数组,把一维整型数组中的各个素循环右移位。

输入:
第一行输入两个整数,n表示数组长度(0<n<=100),j表示循环右移的位数(j>=0);
第工行依次从键盘随机输入n个整数作为数组元素值。
输出:
循环右移后的整数数组,各元素间以一个西文空格间隔,最后一个元素后无字符。

#include<stdio.h>
int main() {
int a[100], n, j, i;
scanf("%d %d", &n, &j);
for (i = 0; i < n; i++)scanf("%d", &a[i]);
if (j > n) j %= n;
for (i = (n - j); i < n; i++) {
printf("%d ", a[i]);
}
for (i = 0; i < n - j; i++) {
printf("%d", a[i]);
if (i < n - j-1)printf(" ");
}
}

题目编号:Exp04-Extend04

题目名称:中位数

题目描述:

中位数是指将数据按大小顺序排列起来,形成一个数列,居于数列中间位置的那个数。例如求解23、29、20、32、23、21、33、25 序列的中位数,首先将该组数据进行排序得到:20、21、23、23、25、29、32、33;因为共由8个数据,即n为偶数,故按中位数计算方法,得到中位数24,即第四个数和第五个数的平均数。若n为奇数,则中位数是排序后位于中间位置的数据。编程序计算输入序列的中位数。

输入:第一行给出一个正整数N(0<N≤5000)表示输入序列所含数据个数。随后依次输入N个整数。

输出:输出中位数,精确到小数点后2位。


#include <stdio.h>
#include <stdlib.h>int compare(const void *a, const void *b) {return (*(int *)a - *(int *)b);
}int main() {int n;scanf("%d", &n);int arr[n];for (int i = 0; i < n; i++) {scanf("%d", &arr[i]);}qsort(arr, n, sizeof(int), compare); // 使用快速排序对数组进行排序double median;if (n % 2 == 0) {median = (arr[n / 2 - 1] + arr[n / 2]) / 2.0; // 偶数个元素时取中间两个数的平均值} else {median = arr[n / 2]; // 奇数个元素时取中间位置的数}printf("%.2lf\n", median);return 0;
}

【计2017级期末试题】排序。

问题描述:编写函数,将整型数组中的n个元素按照从小到大排序,并在程序中以注释的形式标明排序方法。函数声明为:void sort(int a[], int n)。

输入:n和n个元素(假定数组元素个数不超过10)

输出:排好序的数组,每个数据后边均有1个空格

样例1:

输入:5 3 4 1 2 7

输出:1 2 3 4 7

样例2:

输入:8 31 21 -11 0 6 9 10 -10

输出:-11 -10 0 6 9 10 21 31 
#include <stdio.h>void sort(int a[], int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (a[j] > a[j + 1]) {int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}
}int main() {int n;scanf("%d", &n);int arr[n];for (int i = 0; i < n; i++) {scanf("%d", &arr[i]);}sort(arr, n);for (int i = 0; i < n; i++) {printf("%d ", arr[i]);}return 0;
}

【计2016级期中试题】删除所有偶数。

问题描述: 编写函数,对于任意整型数组删除其中的所有偶数,使得剩余元素连续存放,并保持在数组中的原来出现次序。其中,函数原型为:int del(int a[], int n); 其中0<0≤10。

注:本题不允许开辟除数组a之外的新数组。

输入:依次输入数组尺寸n,n个元素值

输出:顺序输出删除后剩余元素。注意:输出时每个数字后有一个空格。如果数组中所有元素均被删除,则输出None

样例1:

输入:5 10 1 8 7 34

输出:1 7

样例2:

输入:3 89 21 100

输出:89 21

样例3:

输入:5 2 4 6 8 10

输出:None

#include <stdio.h>int del(int a[], int n) {int newSize = 0; // 记录删除偶数后剩余元素的个数for (int i = 0; i < n; i++) {if (a[i] % 2 != 0) { // 如果是奇数,保留并将其放在前面a[newSize++] = a[i];}}return newSize; // 返回新数组的大小
}int main() {int n;scanf("%d", &n);int arr[n];for (int i = 0; i < n; i++) {scanf("%d", &arr[i]);}int newSize = del(arr, n);if (newSize == 0) {printf("None\n"); // 如果没有剩余元素,输出 "None"} else {for (int i = 0; i < newSize; i++) {printf("%d", arr[i]);if (i < newSize - 1) printf(" ");}printf("\n");}return 0;
}

【计2016级期末试题】元素判断。

问题描述:编写int函数,判断给定的整数数组a[n]中是否存在元素a[i] (0<i<n,,n不大于10),等于其前边的所有元素之和,即a[i]=a[0]+a[1]+…+a[i-1]。

输入:依次输入n和n个整数。

输出:根据判断情况输出Y/N。

样例1:

输入:3 1 2 1

输出:N

样例2:

输入:10 3 4 5 6 7 25 1 56 134 111

输出:Y


#include <stdio.h>int checkElement(int a[], int n) {for (int i = 1; i < n; i++) {int sum = 0;for (int j = 0; j < i; j++) {sum += a[j]; // 计算 a[0] 到 a[i-1] 的和}if (a[i] == sum) {return 1; // 如果找到满足条件的元素,返回 1}}return 0; // 如果没有找到,返回 0}int main() {int n;scanf("%d", &n);int arr[n];for (int i = 0; i < n; i++) {scanf("%d", &arr[i]);}if (checkElement(arr, n)) {printf("Y\n");} else {printf("N\n");}return 0;}

http://www.ppmy.cn/ops/134398.html

相关文章

3271.哈希分割字符串

3271.哈希分割字符串 2.1、题目描述 给你一个长度为 n 的字符串 s 和一个整数 k &#xff0c;n 是 k 的 倍数 。你的任务是将字符串 s 哈希为一个长度为 n / k 的新字符串 result 。 首先&#xff0c;将 s 分割成 n / k 个 子字符串 &#xff0c;每个子字符串的长度都为 k 。…

【C++】list 与 string 基础与实现字符串操作

【C】使用 list 与 string 实现基础字符串操作 文章目录 一、字符串的基础操作1.1 - startsWith1.2 - endsWith1.3 - trim1.4 - indexOf1.5 - replaceAll 二、list 基础操作2.1 - 遍历2.1.1 - 使用迭代器访问2.1.2 - 使用基于范围的 for 循环遍历2.1.3 - 使用标准算法库遍历 2.…

python面向对象基础入门

面向对象 基本的实现方法大概如此 class Student(object):def __init__(self, name, score):self.name nameself.score scoredef print_score(self):print(%s: %s % (self.name, self.score))在面向对象的思想中&#xff0c;面对一个问题&#xff0c;首先应该考虑这个问题所…

Android 最新的AndroidStudio引入依赖失败如何解决?如:Failed to resolve:xxxx

错误信息&#xff1a; 在引入依赖时报错&#xff1a;Failed to resolve: xxx.xxxx:1.1.0 解决方案&#xff1a; 需要修改maven库的代理&#xff0c;否则就需要翻墙编译 新的AndroidStudio版本比较坑&#xff0c;修改代理的位置发生了变化&#xff1a; 最新变化&#xff1a;…

python 同时控制多部手机

在这个智能时代,我们的手机早已成为生活和工作中不可或缺的工具。无论是管理多个社交媒体账号,还是处理多台设备上的事务,如何更高效地控制多个手机成为了每个人的痛点。 今天带来的这个的软件为你提供了一键控制多部手机的强大功能。无论是办公、娱乐,还是社交,你都能通过…

Docker 命令大全

Docker 命令大全 Docker 是一种开源的应用容器引擎&#xff0c;它允许开发者打包他们的应用以及依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。 本文将…

CSS基础知识05(弹性盒子、布局详解,动画,3D转换,calc)

目录 0、弹性盒子、布局 0.1.弹性盒子的基本概念 0.2.弹性盒子的主轴和交叉轴 0.3.弹性盒子的属性 flex-direction row row-reverse column column-reverse flex-wrap nowrap wrap wrap-reverse flex-dirction和flex-wrap的组合简写模式 justify-content flex-s…

【RK3588 Linux 5.x 内核编程】-内核中的链表(Linked List)及使用

内核中的链表(Linked List)及使用 文章目录 内核中的链表(Linked List)及使用1、Linked List介绍2、Linux内核中的链表3、链表的操作3.1链表初始化3.2 创建节点3.3 添加节点3.4 删除节点3.5 替换节点3.6 移动节点3.7 链表旋转3.8 链表检测3.9 链表分割与合并3.10 链表遍历4、驱…