题目
关于c、c++题目解答
WUNNAN
这个作者很懒,什么都没留下…
展开
-
附加1 两个有序链表序列的合并 (20 分)
附加1 两个有序链表序列的合并 (20 分)已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5 -12 4 6 8 10 -1结尾无空行输出样例:1 2 3 4 5 6 8 10结尾无空行原创 2021-10-03 11:10:00 · 349 阅读 · 0 评论 -
7-7 One Way In, Two Ways Out (25 分)
题目Consider a special queue which is a linear structure that allows insertions at one end, yet deletions at both ends. Your job is to check, for a given insertion sequence, if a deletion sequence is possible. For example, if we insert 1, 2, 3, 4, and 5 in原创 2021-11-09 16:51:49 · 1023 阅读 · 3 评论 -
7-6 列车调度 (25 分)
题目:火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?输入格式:输入第一行给出一个整数N (2 ≤ N ≤10^5),下一行给出从1到N的整数序号的一个重排列。数字间以空格分隔。输出格式:在原创 2021-11-14 09:59:34 · 300 阅读 · 0 评论 -
7-1 还原二叉树 (25 分)
题目给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。输入格式:输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。输出格式:输出为一个整数,即该二叉树的高度。输入样例:9ABDFGHIECFDHGIBEAC结尾无空行输出样例:5结尾无空行思路实现两个函数,第一个是根据先序遍历和中序遍历创建二叉树,第二个是分别求二叉树的左子树和和右子树高度进行比较得出树的高度根据先序遍原创 2021-11-30 19:22:53 · 2263 阅读 · 0 评论 -
进阶实验2-3.3 两个有序链表序列的交集
已知两个非降序链表序列S1与S2,设计函数构造出S1与S2的交集新链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 2 5 -12 4 5 8 10 -1结尾无空行输出样例:2 5结尾无空行原代码#include <stdio.h>#include原创 2021-10-02 17:13:22 · 390 阅读 · 0 评论 -
6-2 Evaluate Postfix Expression (25 分)
题目:Write a program to evaluate a postfix expression. You only have to handle four kinds of operators: +, -, x, and /.Format of functions:ElementType EvalPostfix( char *expr );where expr points to a string that stores the postfix expression. It is guara原创 2021-11-14 16:19:19 · 719 阅读 · 0 评论 -
基础实验 3-2.1 一元多项式求导
基础实验 3-2.1 一元多项式求导 (20 分)设计函数求一元多项式的导数。输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。输入样例:3 4 -5 2 6 1 -2 0结尾无空行输出样例:12 3 -10 1 6 0结尾无空行思路:结构体数组保存数据,for循环一遍求导,输出时注意只有常数项的多项式输出后为0 0代原创 2021-10-03 11:04:33 · 732 阅读 · 0 评论 -
7-2 符号配对 (20 分) c语言版
题目请编写程序检查C语言源程序中下列符号是否配对:/与/、(与)、[与]、{与}。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。输入样例1:void test(){int i, A[10];for (i=0; i<原创 2021-11-08 19:23:58 · 6944 阅读 · 5 评论 -
7-2 愿天下有情人都是失散多年的兄妹 (25 分)
题目呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?输入格式:输入第一行给出一个正整数N(2 ≤ N ≤104),随后N行,每行按以下格式给出一个人的信息:本人ID 性别 父亲ID 母亲ID其中ID是5位数字,每人不同;性别M代表男性、F代表女性。如果某人的父亲或母亲已经不可考,则相应的ID位置上标记为-1。接下来给出一个正整数K,随后K行,每行给出一对有情人的原创 2021-11-30 19:25:40 · 1251 阅读 · 3 评论 -
7-5 求前缀表达式的值 (25 分) c语言
题目算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,不同对象(运算数、运算符号)之间以空格分隔。输出格式:输出前缀表达式的运算结果,保留小数点后1位,或错误信息ERROR。输入样例:++ 2 * 3 - 7 4 / 8 4结尾无空原创 2021-11-08 20:44:13 · 3836 阅读 · 1 评论 -
7-3 树的遍历 (25 分)
题目给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7结尾无空行输出样例:4 1 6 3 5 7 2结尾无空行思路根据后序遍历的特点可知,后原创 2021-11-30 19:26:44 · 1876 阅读 · 0 评论 -
7-2 堆栈模拟队列 (25 分)
题目设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0;int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0;void Push(Stack S, ElementType item ):将元素item压入堆栈S;ElementType Pop(Stack S ):删除并返回S的栈顶元素。实现队列的操作,即入队void AddQ(Ele原创 2021-11-14 14:08:19 · 452 阅读 · 0 评论 -
递增的整数序列链表的插入
链表插入编程实现:输入一个正整数 n(0<n<=9)和一组(n个)升序的整数,建立单向链表,再输入一个整数 x,把 x 插入到这组数据中,使该组数据仍然有序。输入样例:5 (数据的个数n=5)1 2 4 5 7 (5个有序整数)3 (待插入整数x=3)输出样例:1 2 3 4 5 7主要代码展示:原代码:struct Node *addlist(struct Node *head,int x){ i原创 2021-02-17 17:47:58 · 2228 阅读 · 2 评论 -
6-3 Height of BST (25 分)
题目You are supposed to write a function of finding the height of a binary search tree with the given preorder sequence.Format of function:int Height_of_BST( int preorder[], int N );where the preorder sequence is stored in int preorder[], and the intege原创 2021-11-30 19:21:49 · 1152 阅读 · 0 评论 -
有序单链表去重
根据程序提供的LNode结构,删除以h为头结点的有序单链表中的重复元素,并返回删除的元素构成的新单链表(保持原来表中的相对顺序)。函数接口定义:LNode* DelR(LNode *h);其中h为无附加表头的单链表的首结点地址。要求函数删除单链表中的重复元素,并将删除的元素构成新链表返回(当然是表头结点地址)。裁判测试程序样例:在这里给出函数被调用进行测试的例子。例如:#include “stdio.h”#include “stdlib.h” typedef int dataType;原创 2021-06-20 14:52:44 · 920 阅读 · 0 评论 -
带头结点的单链表就地逆置
本题要求实现一个函数,对带有头结点的单链表进行就地逆置。函数接口定义:void reverse ( LinkList L );L是带头结点的单链表的头指针。裁判测试程序样例:#include <stdio.h>#include <stdlib.h> typedef int ElemType; typedef struct LNode {ElemType data;struct LNode *next; }LNode,LinkList; LinkList Cre原创 2021-06-20 15:14:26 · 2253 阅读 · 0 评论 -
删除单链表中最后一个与给定值相等的结点
本题要求在链表中删除最后一个数据域取值为x的节点。L是一个带头结点的单链表,函数ListLocateAndDel_L(LinkList L, ElemType x)要求在链表中查找最后一个数据域取值为x的节点并将其删除。例如,原单链表各个节点的数据域依次为1 3 1 4 3 5,则ListLocateAndDel_L(L,3)执行后,链表中剩余各个节点的数据域取值依次为1 3 1 4 5。函数接口定义:void ListLocateAndDel_L(LinkList L, ElemType x);原创 2021-06-20 14:37:39 · 1509 阅读 · 0 评论 -
7-4 列出叶结点 (25 分)
题目对于给定的二叉树,本题要求你按从上到下、从左到右的顺序输出其所有叶节点。输入格式:首先第一行给出一个正整数 N(≤10),为树中结点总数。树中的结点从 0 到 N−1 编号。随后 N 行,每行给出一个对应结点左右孩子的编号。如果某个孩子不存在,则在对应位置给出 “-”。编号间以 1 个空格分隔。输出格式:在一行中按规定顺序输出叶节点的编号。编号间以 1 个空格分隔,行首尾不得有多余空格。输入样例:81 -- -0 -2 7- -- -5 -4 6结尾无空行输出样例:原创 2021-11-30 19:27:25 · 1984 阅读 · 0 评论 -
7-5 银行排队问题之单队列多窗口服务 (25 分)
假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间,并且统计每个窗口服务了多少名顾客。输入格式:输入第1行给出正整数N(≤1000),为顾客总人数;随后N行,每行给出一位顾客的到达时间T和事务处理时间P,并且假设输入数据已经按到达时间先后排好了顺序;最后一行给出正整数K(≤10),为开设的营业原创 2021-10-23 18:41:53 · 506 阅读 · 1 评论 -
6-3 另类堆栈 (15 分)
在栈的顺序存储实现中,另有一种方法是将Top定义为栈顶的上一个位置。请编写程序实现这种定义下堆栈的入栈、出栈操作。如何判断堆栈为空或者满?函数接口定义:bool Push( Stack S, ElementType X );ElementType Pop( Stack S );其中Stack结构定义如下:typedef int Position;typedef struct SNode *PtrToSNode;struct SNode {ElementType Data; / 存储元原创 2021-11-03 19:35:15 · 838 阅读 · 0 评论 -
7-4 银行排队问题之单窗口“夹塞”版 (30 分) C语言版
排队“夹塞”是引起大家强烈不满的行为,但是这种现象时常存在。在银行的单窗口排队问题中,假设银行只有1个窗口提供服务,所有顾客按到达时间排成一条长龙。当窗口空闲时,下一位顾客即去该窗口处理事务。此时如果已知第i位顾客与排在后面的第j位顾客是好朋友,并且愿意替朋友办理事务的话,那么第i位顾客的事务处理时间就是自己的事务加朋友的事务所耗时间的总和。在这种情况下,顾客的等待时间就可能被影响。假设所有人到达银行时,若没有空窗口,都会请求排在最前面的朋友帮忙(包括正在窗口接受服务的朋友);当有不止一位朋友请求某位顾客帮原创 2021-10-23 20:41:38 · 1161 阅读 · 2 评论 -
PAT 1038 统计同成绩学生
PAT 1038 统计同成绩学生思路一:(wa)开数组储存数据,输入k后,遍历数组cnt++,得到对应成绩的人数结果#include <bits/stdc++.h>using namespace std;int a[100001];int main() { int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &a[i]); int k;原创 2021-03-19 19:26:56 · 96 阅读 · 0 评论 -
PAT 1014 福尔摩斯的约会
PAT 1014 福尔摩斯的约会思路:按题意进行模拟#include <bits/stdc++.h>#include <string.h>using namespace std;#define N 100char a1[N],a2[N];char s1[N],s2[N];char m[7][5] = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};int main(void){ scanf("%s %s原创 2021-03-19 19:32:45 · 68 阅读 · 0 评论 -
PAT 1056 组合数的和
PAT 1056 组合数的和思路:找规律#include <bits/stdc++.h>using namespace std;int a[11];int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); int s=0; for(int i=0;i<n;i++){ s+=(n-1)*a[i]原创 2021-03-22 18:47:17 · 41 阅读 · 0 评论 -
PAT 1064 朋友数
PAT 1064 朋友数思路:先按题意模拟,sort升序排序后,用unique函数元素去重,保证输出的朋友证号为唯一的#include <bits/stdc++.h>using namespace std;int s[10001];int a[10001];int main(){ int n; scanf("%d",&n); int cnt=0;//计数 for(int i=0;i<n;i++){ scanf("%d原创 2021-03-19 19:51:17 · 48 阅读 · 0 评论 -
PAT 1036 跟奥巴马一起编程
PAT 1036 跟奥巴马一起编程思路:模拟题,找到规律即可#include<bits/stdc++.h>using namespace std;int main(){ int n; char c; scanf("%d %c",&n,&c); int m=(n+1)/2-2;//题目要求是四舍五入,所以n+1,再减去首尾两行 for(int i=0;i<n;i++) printf("%c原创 2021-03-21 17:50:20 · 67 阅读 · 0 评论 -
PAT 1023 组个最小数
PAT 1023 组个最小数思路:要组成最小数,先要找到第一位数字,因为0不能放在首位位置,for要从1遍历到9;先输出第一位数字后,其所在数组要减一,再循环a[0]输出全部0,最后双重for循环输出其余#include <bits/stdc++.h>using namespace std;int a[10];int main(){ for(int i=0;i<10;i++) scanf("%d",&a[i]); int ind原创 2021-03-20 18:59:11 · 110 阅读 · 0 评论 -
PTA 说反话-加强版
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。输出格式:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。输入样例:Hello World Here I Come输出样例:Come I Here World Hello代码展示#include <stdi原创 2021-01-26 20:45:59 · 153 阅读 · 0 评论 -
PTA 统计字符[2]
本题要求编写程序,输入N个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。输入格式:输入在第一行中给出正整数N,第二行输入N个字符,最后一个回车表示输入结束,不算在内。输出格式:在一行内按照letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数的格式输出。请注意,等号的左右各有一个空格,逗号后有一个空格。输入样例:10aZ &09 Az输出样例:letter = 4, blank = 3,原创 2021-01-26 20:42:58 · 17654 阅读 · 5 评论 -
PTA 数列求和-加强版
给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。输入格式:输入数字A与非负整数N。输出格式:输出其N项数列之和S的值。输入样例:1 3输出样例:123思路:如果只是用for普通的循环相加,最后的数据是会爆掉long long 范围,所以要采用数组存储,考察的就是每位数字对应相加以及满十进一代码:#include <stdio.h>int a[10原创 2021-01-15 15:41:20 · 4221 阅读 · 2 评论 -
PTA 字符转换
本题要求提取一个字符串中的所有数字字符(‘0’……‘9’),将其转换为一个整数输出。输入格式:输入在一行中给出一个不超过80个字符且以回车结束的字符串。输出格式:在一行中输出转换后的整数。题目保证输出不超过长整型范围。输入样例:free82jeep5输出样例:825思路 一开始是想到新开一个数组,用来保存数字后输出,但是测试点里有前导0的情况,所有想到要将前导0全部去除,再将剩余的输出,但是如果是在数字全部为0的情况下,最后的输出结果应只有0;代码展示#include <stdi原创 2021-01-11 19:36:38 · 2262 阅读 · 0 评论 -
PTA 空心的数字金字塔
本题要求实现一个函数,输出n行空心的数字金字塔。函数接口定义:void hollowPyramid( int n );其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行空心的数字金字塔,请注意,最后一行的第一个数字前没有空格。输入样例:5输出样例:12 23 34 4555555555void hollowPyramid( int n ){ int i,j; for(i=1;i<=n;i++){原创 2020-11-20 14:59:06 · 9085 阅读 · 2 评论 -
PTA 实验4-1-4 求整数的位数及各位数字之和
对于给定的正整数N,求它的位数及其各位数字之和。输入格式:输入在一行中给出一个不超过10^9的正整数N。输出格式:在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。输入样例:321输出样例:3 6代码展示#include<stdio.h>int main(void){ int x; scanf("%d",&x); int count,a; double sum; do{ count++; a=x%原创 2020-10-06 14:49:38 · 842 阅读 · 0 评论 -
PTA实验4-1-7 特殊a串数列求和
给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。输入格式:输入在一行中给出不超过9的正整数a和n。输出格式:在一行中按照“s = 对应的和”的格式输出。输入样例:2 3输出样例:s = 246代码展示#include<stdio.h>#include<math.h>int main(void){ int a,n,s=0; scanf("%d %d",&a,&n); int原创 2020-10-05 15:24:40 · 829 阅读 · 0 评论 -
PTA 实验3-1 求一元二次方程的根
本题目要求一元二次方程的根,结果保留2位小数。输入格式:输入在一行中给出3个浮点系数a、b、c,中间用空格分开。输出格式:根据系数情况,输出不同结果:1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;3)如果方程只有一个根,则直接输出此根;4)如果系数都为0,则输出"Zero Equation";5)如果a和b为0,c不为0,则输出"Not An Equation"。原创 2020-10-05 09:38:40 · 1639 阅读 · 0 评论