
[搬]pta习题集 c++
蘑菇栗子
这个作者很懒,什么都没留下…
展开
-
7-4 一帮一(10 分)
“一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的学生与名次最靠后的异性学生分为一组。输入格式:输入第一行给出正偶数N(≤50),即全班学生的人数。此后N行,按照名次从高到低的顺序给出每个学生的性别(0代表女生,1代表男生)和姓名(不...原创 2020-04-10 21:07:01 · 1763 阅读 · 0 评论 -
7-3 查找书籍(10 分)
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。输出格式:在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。输入样例:3Programming...原创 2020-04-10 21:06:14 · 3160 阅读 · 0 评论 -
7-2 输出学生成绩(10 分)
本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。输入格式:输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。输出格式:按照以下格式输出:average = 平均成绩max = 最高成绩min = 最低成绩结果均保留两位小数。输入样例:385 90 95输出样例:ave...原创 2020-04-10 21:04:54 · 2319 阅读 · 0 评论 -
7-1 有理数均值(10 分)
本题要求编写程序,计算N个有理数的平均值。输入格式:输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。输出格式:在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。输入样例1:41/2 1/6 3/6 -5...原创 2020-04-10 21:04:01 · 1838 阅读 · 0 评论 -
6-5 字符串的连接(7 分)
本题要求实现一个函数,将两个字符串连接起来。函数接口定义:char *str_cat( char *s, char *t );函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。输入样例:abcdef输出样例:abcdefabcdef裁判测试程序样例:#include <stdio.h>#include <string.h>...原创 2020-04-10 21:02:28 · 1906 阅读 · 0 评论 -
6-4 输出月份英文名(15 分)
本题要求实现函数,可以返回一个给定月份的英文名称。函数接口定义:char *getmonth( int n );函数getmonth应返回存储了n对应的月份英文名称的字符串头指针。如果传入的参数n不是一个代表月份的数字,则返回空指针NULL。输入样例1:5输出样例1:May输入样例2:15输出样例2:wrong input!裁判测试程序样例:#include <std...原创 2020-04-10 21:01:01 · 4763 阅读 · 0 评论 -
6-3 求单链表结点的阶乘和(10 分)
本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int范围内。函数接口定义:int FactorialSum( List L );其中单链表List的定义如下:typedef struct Node PtrToNode;struct Node {int Data; / 存储结点数据 /PtrToNode Next; / 指向下一个结点的指针 /...原创 2020-04-10 20:59:40 · 391 阅读 · 0 评论 -
6-2 计算最长的字符串长度(10 分)
本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。函数接口定义:int max_len( char *s[], int n );其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。输入样例:4blueyellowredgreen输出样例:6裁判测试程序样例:#include <stdio.h>#include &...原创 2020-04-10 20:58:34 · 1673 阅读 · 0 评论 -
6-1 判断回文字符串(8 分)
本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。函数接口定义:bool palindrome( char *s );函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false。输入样例1:thisistrueurtsisiht输出样例1:Yesthis...原创 2020-04-10 20:57:19 · 2358 阅读 · 0 评论 -
6-10 使用函数输出指定范围内的Fibonacci数(10 分)
本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。函数接口定义:int fib( int n );void PrintFN( int m, int n );其中函数fib须返回第n项Fibonacci...原创 2020-04-10 20:56:22 · 278 阅读 · 0 评论 -
6-9 使用函数输出水仙花数(10 分)
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写两个函数,一个判断给定整数是否水仙花数,另一个按从小到大的顺序打印出给定区间(m,n)内所有的水仙花数。函数接口定义:int narcissistic( int number );void PrintN( int m, int n );函数narcis...原创 2020-04-10 20:55:23 · 1804 阅读 · 0 评论 -
6-8 使用函数求素数和(10 分)
本题要求实现一个判断素数的简单函数、以及利用该函数计算给定区间内素数和的函数。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );int PrimeSum( int m, int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数PrimeSum返回区间[m, n]内所有素数的和。题目保证用户传入的参数m...原创 2020-04-10 20:54:14 · 4325 阅读 · 0 评论 -
6-7 递归计算P函数(10 分)
本题要求实现下列函数P(n,x)的计算,其函数定义如下:函数接口定义:double P( int n, double x );其中n是用户传入的非负整数,x是双精度浮点数。函数P返回P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。输入样例:10 1.7输出样例:3.05裁判测试程序样例:#include <stdio.h>double P( int n,...原创 2020-04-10 20:53:14 · 2664 阅读 · 0 评论 -
6-6 递归求Fabonacci数列(10 分)
本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。函数接口定义:int f( int n );函数f应返回第n个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。输入样例:6输出样例:8裁判测试程序样例:#include <stdio.h>...原创 2020-04-10 20:51:38 · 1830 阅读 · 0 评论 -
6-5 递归计算Ackermenn函数(10 分)
本题要求实现Ackermenn函数的计算,其函数定义如下:函数接口定义:int Ack( int m, int n );其中m和n是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型范围内。输入样例:2 3输出样例:9裁判测试程序样例:#include <stdio.h>int Ack( int m, int n );i...原创 2020-04-10 20:49:35 · 987 阅读 · 0 评论 -
6-4 递归求简单交错幂级数的部分和(10 分)
本题要求实现一个函数,计算下列简单交错幂级数的部分和:f(x,n)=x−pow(x,2)+pow(x,3)−pow(x,4)+⋯+pow(-1,n-1)pow(x,n);函数接口定义:double fn( double x, int n );其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。输入样例:0.5 12输出样例:...原创 2020-04-10 20:46:40 · 1046 阅读 · 0 评论 -
6-3 递归实现指数函数(10 分)
本题要求实现一个计算x的n次方n≥1)的函数。函数接口定义:double calc_pow( double x, int n );函数calc_pow应返回x的n次幂的值。建议用递归实现。题目保证结果在双精度范围内。输入样例:2 3输出样例:8裁判测试程序样例:#include <stdio.h>double calc_pow( double x, int n );...原创 2020-04-10 20:44:59 · 1363 阅读 · 0 评论 -
6-2 递归求阶乘和(10 分)
本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+…+n! 的值。函数接口定义:double fact( int n );double factsum( int n );函数fact应返回n的阶乘,建议用递归实现。函数factsum应返回 1!+2!+…+n! 的值。题目保证输入输出在双精度范围内。输入样例1:10输出样例1:fact(10) = 36288...原创 2020-04-10 20:41:04 · 1955 阅读 · 0 评论 -
6-1 使用递归函数计算1到n之和(10 分)
本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。函数接口定义:int sum( int n );该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。输入样例1:10输出样例1:55输入样例2:0输出样例2:0裁判测试程序样例:#include <stdio.h>int s...原创 2020-04-10 20:39:36 · 3964 阅读 · 0 评论 -
7-3 平面向量加法(15 分)
本题要求编写程序,计算两个二维平面向量的和向量。输入格式:输入在一行中按照“x1 y1 x2 y2”的格式给出两个二维平面向量v1=(x1,y1)和v2=(x2,y2)的分量。输出格式:在一行中按照(x, y)的格式输出和向量,坐标输出小数点后一位(注意不能输出−0.0)。#include<stdio.h>int ma...原创 2020-04-10 20:37:50 · 785 阅读 · 0 评论 -
7-2 时间换算(15 分)
本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。输入格式:输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。输出格式:输出在一行中给出hh:mm:ss格式的结果时间。#include<stdio.h>int main(void){ int hh,mm,ss,time,n...原创 2020-04-10 20:36:51 · 5768 阅读 · 1 评论 -
7-1 输出学生成绩(20 分)
本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。输入格式:输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。输出格式:按照以下格式输出:average = 平均成绩max = 最高成绩min = 最低成绩结果均保留两位小数。#include<stdio.h>#i...原创 2020-04-10 20:35:15 · 4063 阅读 · 0 评论 -
6-2 使用函数实现字符串部分复制(20 分)
本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。函数接口定义:void strmcpy( char *t, int m, char *s );函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。void strmcpy( char *t, int m, char *...原创 2020-04-10 20:33:43 · 2882 阅读 · 0 评论 -
6-1 利用指针找最大值(10 分)
本题要求实现一个简单函数,找出两个数中的最大值。函数接口定义:void findmax( int *px, int *py, int *pmax );其中px和px是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。void findmax( int *px, int *py, int *pmax ){ if(*px>*p...原创 2020-04-10 20:33:04 · 4530 阅读 · 0 评论 -
7-10说反话-加强版(10 分)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。输出格式:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。 #include <stdio.h> ...原创 2020-04-10 20:32:22 · 946 阅读 · 0 评论 -
7-9字符串循环左移(10 分)
输入一个字符串和一个非负整数N,要求将字符串循环左移N次。输入格式:输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。输出格式:在一行中输出循环左移N次后的字符串。#include<stdio.h> int main() { int n,i; char a[101],b[101]; gets(a); scanf("%d...原创 2020-04-10 20:27:58 · 1868 阅读 · 0 评论 -
7-8删除字符串中的子串(10 分)
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。输入格式:输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。输出格式:在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。#include <stdio.h> #include <string.h> int main(v...原创 2020-04-10 20:26:17 · 405 阅读 · 0 评论 -
7-7藏头诗(5 分)
输入格式:输入为一首中文藏头诗,一共四句,每句一行。注意:一个汉字占两个字节。输出格式:取出每句的第一个汉字并连接在一起形成一个字符串并输出。同时在末尾输入一个换行符。#include<stdio.h>int main(){ int i=4,j=0; char a[20],b[9]={0}; while(i--) { gets(a...原创 2020-04-10 20:24:45 · 1347 阅读 · 0 评论 -
7-6找鞍点(10 分)
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。输入格式:输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。输出格式:输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。#include<s...原创 2020-04-10 20:23:22 · 2296 阅读 · 1 评论 -
7-5矩阵运算(10 分)
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。输入格式:输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。输出格式:在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。#include<stdio.h>int main(void){ i...原创 2020-04-10 20:22:00 · 710 阅读 · 0 评论 -
7-4输出数组元素(10 分)
本题要求编写程序,对顺序读入的n个整数,顺次计算后项减前项之差,并按每行三个元素的格式输出结果。输入格式:输入的第一行给出正整数n(1<n≤10)。随后一行给出n个整数,其间以空格分隔。输出格式:顺次计算后项减前项之差,并按每行三个元素的格式输出结果。数字间空一格,行末不得有多余空格。#include<stdio.h>int main(void){ int i,k,n...原创 2020-04-10 20:20:09 · 1510 阅读 · 0 评论 -
7-3 数字加密(10 分)
方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。输入格式:输入在一行中给出一个四位的整数x,即要求被加密的数。输出格式:在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。...原创 2020-04-10 20:19:13 · 1148 阅读 · 0 评论 -
7-2选择法排序(10 分)
本题要求将给定的n个整数从大到小排序后输出。输入格式:输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。输出格式:在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。#include<stdio.h>int main(void){ int n,a[10],i,k,index,temp; scanf("%d",&n);...原创 2020-04-10 20:17:12 · 4454 阅读 · 0 评论 -
7-1求一批整数中出现最多的个位数字(10 分)
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。输入格式:输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。输出格式:在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大...原创 2020-04-10 20:16:29 · 776 阅读 · 0 评论 -
6-8使用函数输出一个整数的逆序数(10 分)
本题要求实现一个求整数的逆序数的简单函数。函数接口定义:int reverse( int number );其中函数reverse须返回用户传入的整型number的逆序数。int reverse( int number ){ int a,sum; if(number<0){ a = -number; } while(number){ a = numbe...原创 2020-04-10 20:15:36 · 1024 阅读 · 1 评论 -
6-7 使用函数输出指定范围内的完数(15 分)
本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。函数接口定义:int factorsum( int number );void PrintPN( int m, int n );其中函数factorsum须返回int nu...原创 2020-04-10 20:13:46 · 748 阅读 · 0 评论 -
6-6 找两个数中最大者(10 分)
int max( int a, int b ){ if(a>b) return a; else return b;}原创 2020-04-10 20:12:31 · 1897 阅读 · 0 评论 -
6-5使用函数验证哥德巴赫猜想(15 分)
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );void Goldbach( int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解...原创 2020-04-04 16:20:30 · 413 阅读 · 0 评论 -
6-4统计各位数字之和是5的数(15 分)
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。函数接口定义:int is( int number );void count_sum( int a, int b );函数is判断number的各位数字之和是否等于5,是则返回1,否则返回0。函数count_sum利用函数is统计给定区间[a, b]内...原创 2020-04-04 16:19:42 · 3469 阅读 · 0 评论 -
6-3 统计个位数字(10 分)
本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。函数接口定义:int Count_Digit ( const int N, const int D );其中N和D都是用户传入的参数。N的值不超过int的范围;D是[0, 9]区间内的个位数。函数须返回N中D出现的次数。int Count_Digit ( const int N, ...原创 2020-04-04 16:18:57 · 871 阅读 · 0 评论