算法1-3~4 将数组中元素反转存放分数 15
作者 陈越
单位 浙江大学
给定 n 个 int 型范围内的整数。请编写程序,将 n 个整数存在数组中,再将这些数组元素反转存放,最后顺序输出反转后数组中的元素。注:虽然不需要改变数组中元素的位置,也可以按反转的顺序输出,但建议练习者尝试反转数组元素的算法。
输入格式:输入第一行给出正整数 n(≤104)。第二行给出 n 个 int 型范围内的整数。同行数字间以空格分隔。
输出格式:在一行中输出反转输入顺序后的结果,每个数字后跟 1 个空格。
输入样例:1251 2 3 4 5
输出样例:15 4 3 2 1
答案1(静态数组)12345678910111213141516171819202122232425#include<iostream>using namespace std;// 反转数组void reverseArray(int *a, int length) { int j = length - 1; for (int i = 0; i < j; i++, j--) { ...
算法1-1~2 求数组与整数乘积的最大值分数 15
作者 陈越
单位 浙江大学
给定 n 个正整数和另一个整数因子 m。请编写程序,将 n 个整数存在数组中,逐一乘以 m,并求所有乘积中的最大值。注:虽然题目要求将输入的 n 个整数存储在数组中,再进行解决,但完全不用数组存储也是可以得到解的。
输入格式:输入第一行给出一对正整数 n(≤104)和 m(≤100)。第二行给出 n 个 [1,103] 区间内的正整数。同行数字间以空格分隔。
输出格式:在一行中输出题面中要求的最大值。
输入样例:125 3123 45 678 9 10
输出样例:12034
答案1234567891011121314151617#include <iostream>using namespace std;int main() { int n, m; cin >> n >> m; // 读取整数因子m和整数个数n int a[n]; // 用数组a存放n个整数 int max = 0; // max变量用来存放数组中的最大值 fo ...
算法0-0 求两个正整数的最大公约数分数 15
作者 陈越
单位 浙江大学
请编写程序,求两个正整数的最大公约数。
输入格式:输入在一行中给出一对正整数 0<x,y≤106,数字间以空格分隔。
输出格式:在一行中输出 x 和 y 的最大公约数。
输入样例:173472 48503
输出样例:1287
答案1234567891011121314151617181920212223#include <iostream>using namespace std;// 欧几里得算法(辗转相除法)求最大公约数int gcd(int m, int n) { // 当b为0时,a就是最大公约数 while (n != 0) { int temp = m % n; // 计算a除以b的余数 m = n; // 把b的值赋给a n = temp; // 把余数赋给b } return m;}int main() { in ...
算法2-8 从单链表 list 中删除第 i 个元素分数 15
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。随后对任意给定的位序 i,删除链表中第 i 个结点。注意:i 代表位序,从 1 开始。删除结束后,输出链表长度,并顺序输出链表中的每个结点的数值。
输入格式:输入首先在第一行给出正整数 n(≤104);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔;最后一行给出删除位序 i,为 int 范围内的整数。
输出格式:如果删除的位置不合法,则不能删除,在一行中输出句子 错误:删除位置不合法。。无论是否删除成功,都按照题面描述的要求,在一行中输出链表信息,格式为:
1表长: x1 x2 ... xn
注意数字间有 1 个空格分隔,行首尾无多余空格。
输入样例 1:12351 2 3 4 53
输出样例 1:14: 5 4 2 1
输入样例 2:12354 3 6 8 00
输出样例 2:12错误:删除位置不合法。5: 0 8 6 3 4
答案123456789101112131415161718192021222324 ...
算法2-7 在单链表 list 的第 i 个位置上插入元素 x分数 15
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数插入初始为空的单链表,第 i 个整数插入在第 i 个位置上。注意:i 代表位序,从 1 开始。插入结束后,输出链表长度,并顺序输出链表中的每个结点的数值。最后,尝试将最后一个整数插入到链表的第 0 个、第 n+2 个位置上,以测试错误信息的输出。
输入格式:输入首先在第一行给出正整数 n(≤20);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔。
输出格式:按照题面描述的要求,首先在第 1 行输出链表信息,格式为:
1表长: x1 x2 ... xn
注意数字间有 1 个空格分隔,行首尾无多余空格。在第 2、3 行分别输出将最后一个整数插入到链表的第 0 个、第 n+2 个位置上的信息 —— 当插入位置不合法时,应输出 错误:插入位置不合法。。
输入样例:1251 2 3 4 5
输出样例:1235: 1 2 3 4 5错误:插入位置不合法。错误:插入位置不合法。
答案123456789101112131415161718192021222 ...
算法2-6 在单链表 list 中查找元素 x 所在结点分数 15
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。对任一给定的整数 x,查找其是否在链表中。
输入格式:输入首先在第一行给出非负整数 n(≤20);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔。最后一行给出待查找的 x,为 int 范围内的整数。
输出格式:如果找到了 x 所在的位置,则输出该位置上链表结点的数据;否则在一行中输出 x 未找到。,其中 x 是输入的 x 的值。
输入样例 1:12351 2 3 4 54
输出样例 1:14
输入样例 2:12351 2 3 4 50
输出样例 2:10 未找到。
答案12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <iostream>using namespace std;typedef struct LNode { int data ...
算法2-5 返回单链表 list 中第 i 个元素值分数 15
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。对任一给定的位序 i(从 1 开始),输出链表中第 i 个元素的值。
输入格式:输入首先在第一行给出非负整数 n(≤20);随后一行给出 n 个 int 范围内的正整数,数字间以空格分隔。最后一行给出位序 i,为 int 范围内的非负整数。
输出格式:在一行中输出链表中第 i 个元素的值。如果这个元素不存在,则输出 -1。
输入样例 1:12351 2 3 4 54
输出样例 1:12
输入样例 2:12351 2 3 4 50
输出样例 2:1-1
答案123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include<iostream>using namespace std;typedef struct LNode { int data; struct L ...
算法2-4 求单链表list中的元素个数,即表长分数 15 作者 陈越 单位 浙江大学
请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。最后输出单链表的表长。本题旨在训练学习者熟悉单链表的基本操作,不建议直接输出 n。
输入格式:输入首先在第一行给出非负整数 n(≤15);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔。
输出格式:在一行中输出单链表的表长。
输入样例:1251 2 3 4 5
输出样例:15
答案12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include <iostream>using namespace std;typedef struct LNode { int data; struct LNode *next;} LNode, *LinkList;// 初始化链表,使其指向头结点void InitList(LinkList &L) { ...
算法2-1 在顺序表 list 中查找元素 x分数 10
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数存入顺序表,对任一给定整数 x,查找其在顺序表中的位置。
输入格式:输入首先在第一行给出正整数 n(≤104);随后一行给出 n 个 int 范围内的不重复的整数,数字间以空格分隔;最后一行给出待查找的元素 x,也是 int 范围内的整数。
输出格式:在一行中输出 x 在顺序表中的位置,即数组下标。如果没找到,则输出 -1。注意数组下标从 0 开始。
输入样例 1:12351 2 3 4 54
输出样例 1:13
输入样例 2:12354 3 6 8 01
输出样例 2:1-1
答案123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include<iostream>using namespace std;// 顺序表结构:存储元素的数组和当前长度typedef struct { int *elem; ...
算法2-2 在顺序表 list 的第 i 个位置上插入元素 x分数 15
作者 陈越
单位 浙江大学
请编写程序,将 n 个整数存入顺序表,对任一给定整数 x,将其插入顺序表中指定的第 i 个位置。注意:i 代表位序,从 1 开始,不是数组下标。
输入格式:输入首先在第一行给出正整数 n(≤104);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔;最后一行给出插入位置 i 和待插入的元素 x,均为 int 范围内的整数。
输出格式:分以下几种情况输出:
如果顺序表中已经有 104 个元素了,则不能插入,在一行中输出句子 错误:表满不能插入。。
如果插入的位置不合法,则不能插入,在一行中输出句子 错误:插入位置不合法。。
无论是否插入成功,都在一行中顺序输出表中的元素,每个元素后面跟一个空格。
输入样例 1:12351 2 3 4 53 8
输出样例 1:11 2 8 3 4 5
输入样例 2:12354 3 6 8 00 1
输出样例 2:12错误:插入位置不合法。4 3 6 8 0
答案1234567891011121314151617181920212 ...


