
PTA-浙大版《C语言程序设计(第3版)》题目集
题目集
Herschel_co
这个作者很懒,什么都没留下…
展开
-
习题11-8 单链表结点删除
习题11-8 单链表结点删除 (20 分)本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *deletem( struct ListNode *L, int m );函数readlist从标准输入读入一系列正整数,按原创 2021-05-11 23:05:18 · 548 阅读 · 1 评论 -
习题11-7 奇数值结点链表
习题11-7 奇数值结点链表 (20 分)本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *getodd( struct ListNode **L );函数readlist从标准输入读入一系列正整数,按照读入顺序原创 2021-05-11 21:22:19 · 285 阅读 · 0 评论 -
(***)习题11-6 查找子串
习题11-6 查找子串 (20 分)本题要求实现一个字符串查找的简单函数。函数接口定义:char *search( char *s, char *t );函数search在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL。裁判测试程序样例:#include <stdio.h>#define MAXS 30char *search(char *s, char *t);void ReadString( char s[] ); /* 裁判提供原创 2021-04-09 02:08:21 · 394 阅读 · 0 评论 -
习题11-5 指定位置输出字符串
习题11-5 指定位置输出字符串 (20 分)本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。函数接口定义:char *match( char *s, char ch1, char ch2 );函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。裁判测试程序样例:#include <stdio.h>#define MAXS 10char *mat原创 2021-04-09 01:19:33 · 349 阅读 · 0 评论 -
习题11-4 字符串的连接
习题11-4 字符串的连接 (15 分)本题要求实现一个函数,将两个字符串连接起来。函数接口定义:char *str_cat( char *s, char *t );函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。裁判测试程序样例:#include <stdio.h>#include <string.h>#define MAXS 10char *str_cat( char *s, char *t );int ma原创 2021-04-08 22:49:53 · 353 阅读 · 0 评论 -
习题11-3 计算最长的字符串长度
习题11-3 计算最长的字符串长度 (15 分)本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。函数接口定义:int max_len( char *s[], int n );其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。裁判测试程序样例:#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAXN 10#原创 2021-04-08 22:00:44 · 283 阅读 · 0 评论 -
习题11-2 查找星期
习题11-2 查找星期 (15 分)本题要求实现函数,可以根据下表查找到星期,返回对应的序号。序号 星期 0 Sunday 1 Monday 2 Tuesday 3 Wednesday 4 Thursday 5 Friday 6 Saturday 函数接口定义:int getindex( char *s );函数getindex应返回字符串s序号。如果传入的参数s不是一个代表星期的字符串,则返回-1。裁判测原创 2021-04-08 21:40:23 · 262 阅读 · 0 评论 -
习题11-1 输出月份英文名
习题11-1 输出月份英文名 (15 分)本题要求实现函数,可以返回一个给定月份的英文名称。函数接口定义:char *getmonth( int n );函数getmonth应返回存储了n对应的月份英文名称的字符串头指针。如果传入的参数n不是一个代表月份的数字,则返回空指针NULL。裁判测试程序样例:#include <stdio.h>char *getmonth( int n );int main(){ int n; char *s;原创 2021-04-08 21:21:45 · 391 阅读 · 0 评论 -
习题10-8 递归实现顺序输出整数
习题10-8 递归实现顺序输出整数 (15 分)本题要求实现一个函数,对一个整数进行按位顺序输出。函数接口定义:void printdigits( int n );函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。裁判测试程序样例:#include <stdio.h>void printdigits( int n );int main(){ int n; scanf("%d", &n);原创 2021-04-08 20:41:31 · 400 阅读 · 0 评论 -
(***)习题10-7 十进制转换二进制
习题10-7 十进制转换二进制 (15 分)本题要求实现一个函数,将正整数n转换为二进制后输出。函数接口定义:void dectobin( int n );函数dectobin应在一行中打印出二进制的n。建议用递归实现。裁判测试程序样例:#include <stdio.h>void dectobin( int n );int main(){ int n; scanf("%d", &n); dectobin(n);原创 2021-04-08 20:37:51 · 251 阅读 · 0 评论 -
习题10-6 递归求Fabonacci数列
习题10-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数。题目保证输入输出在长整型范围内。建议用递归实现。裁判测试程序样例:#include <stdio.h>int f( int n );int main(){.原创 2021-04-08 19:49:12 · 593 阅读 · 0 评论 -
习题10-5 递归计算Ackermenn函数
习题10-5 递归计算Ackermenn函数 (15 分)本题要求实现Ackermenn函数的计算,其函数定义如下:函数接口定义:int Ack( int m, int n );其中m和n是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型范围内。裁判测试程序样例:#include <stdio.h>int Ack( int m, int n );int main(){ int m, n;原创 2021-04-08 19:43:18 · 6101 阅读 · 0 评论 -
(***)习题10-4 递归求简单交错幂级数的部分和
(***)习题10-4 递归求简单交错幂级数的部分和 (15 分)本题要求实现一个函数,计算下列简单交错幂级数的部分和:f(x,n)=x−x2+x3−x4+⋯+(−1)n−1xn函数接口定义:double fn( double x, int n );其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。裁判测试程序样例:#include <stdio.h>double fn原创 2021-04-07 22:43:21 · 192 阅读 · 0 评论 -
习题10-3 递归实现指数函数
习题10-3 递归实现指数函数 (15 分)本题要求实现一个计算xn(n≥1)的函数。函数接口定义:double calc_pow( double x, int n );函数calc_pow应返回x的n次幂的值。建议用递归实现。题目保证结果在双精度范围内。裁判测试程序样例:#include <stdio.h>double calc_pow( double x, int n );int main(){ double x; int n;原创 2021-04-07 21:54:16 · 283 阅读 · 0 评论 -
习题10-2 递归求阶乘和
习题10-2 递归求阶乘和 (15 分)本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+...+n! 的值。函数接口定义:double fact( int n );double factsum( int n );函数fact应返回n的阶乘,建议用递归实现。函数factsum应返回 1!+2!+...+n! 的值。题目保证输入输出在双精度范围内。裁判测试程序样例:#include <stdio.h>double fact( int n原创 2021-04-07 21:47:34 · 488 阅读 · 0 评论 -
习题10-1 判断满足条件的三位数
习题10-1 判断满足条件的三位数 (15 分)本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。函数接口定义:int search( int n );其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101,n]区间内所有满足条件的数的个数。裁判测试程序样例:#include <stdio.h>#include <math.h>int search( int n.原创 2021-04-07 21:34:58 · 432 阅读 · 0 评论 -
练习10-1 使用递归函数计算1到n之和
练习10-1 使用递归函数计算1到n之和 (10 分)本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。函数接口定义:int sum( int n );该函数对于传入的正整数n返回1+2+3+…+n的和;若n不是正整数则返回0。题目保证输入输出在长整型范围内。建议尝试写成递归函数。裁判测试程序样例:#include <stdio.h>int sum( int n );int main(){ int n; scanf("%d", &原创 2021-04-07 20:43:22 · 773 阅读 · 0 评论 -
习题9-6 按等级统计学生成绩
习题9-6 按等级统计学生成绩 (20 分)本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。函数接口定义:int set_grade( struct student *p, int n );其中p是指向学生信息的结构体数组的指针,该结构体的定义为:struct student{ int num; char name[20]; int score; char grade;};n是数组元素个数。学号num、姓名name和成绩sco原创 2021-04-07 16:23:37 · 416 阅读 · 0 评论 -
习题9-2 计算两个复数之积
习题9-2 计算两个复数之积 (15 分)本题要求实现一个计算复数之积的简单函数。函数接口定义:struct complex multiply(struct complex x, struct complex y);其中struct complex是复数结构体,其定义如下:struct complex{ int real; int imag;};裁判测试程序样例:#include <stdio.h>struct complex{ i原创 2021-04-07 15:54:26 · 234 阅读 · 0 评论 -
习题9-5 通讯录排序
习题9-5 通讯录排序 (20 分)输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。输入格式:输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。输出格式:按照年龄从大到小输出朋友的信息,格式同输出。输入原创 2021-04-03 23:42:16 · 3659 阅读 · 0 评论 -
习题9-4 查找书籍
习题9-4 查找书籍 (20 分)给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。输出格式:在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。输入样例:3Programming in C21.5Programming in VB1原创 2021-04-03 22:59:23 · 2314 阅读 · 0 评论 -
习题9-1 时间换算
习题9-1 时间换算 (15 分)本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。输入格式:输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。输出格式:输出在一行中给出hh:mm:ss格式的结果时间。输入样例:11:59:4030输出样例:12:00:10代码:#include<stdio.h>struct time{ int原创 2021-04-03 21:48:41 · 507 阅读 · 0 评论 -
习题8-9 分类统计各类字符个数
习题8-9 分类统计各类字符个数 (15 分)本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。函数接口定义:void StringCount( char *s );其中char *s是用户传入的字符串。函数StringCount须在一行内按照大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数的格式输出。裁判测试程序样例:#include <stdio.h>#define MAXS 15void ..原创 2021-04-03 14:31:10 · 294 阅读 · 0 评论 -
习题8-8 判断回文字符串
习题8-8 判断回文字符串 (20 分)本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。函数接口定义:bool palindrome( char *s );函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false。裁判测试程序样例:#include <stdio.h>#include <string.h>#defin原创 2021-04-03 14:09:07 · 605 阅读 · 0 评论 -
习题8-6 删除字符
习题8-6 删除字符 (20 分)本题要求实现一个删除字符串中的指定字符的简单函数。函数接口定义:void delchar( char *str, char c );其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。裁判测试程序样例:#include <stdio.h>#define MAXN 20void delchar( char *str, char c );void ReadStri原创 2021-04-03 13:45:41 · 1472 阅读 · 0 评论 -
习题8-5 使用函数实现字符串部分复制
习题8-5 使用函数实现字符串部分复制 (20 分)本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。函数接口定义:void strmcpy( char *t, int m, char *s );函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。裁判测试程序样例:#include <stdio.h>#define MAXN 20void原创 2021-04-03 01:01:27 · 1424 阅读 · 0 评论 -
习题8-4 报数(***)
习题8-4 报数 (20 分)报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。本题要求编写函数,给出每个人的退出顺序编号。函数接口定义:void CountOff( int n, int m, int out[] );其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C原创 2021-03-30 21:58:14 · 146 阅读 · 0 评论 -
习题8-3 数组循环右移
习题8-3 数组循环右移 (20 分)本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0a1⋯an−1)变换为(an−m⋯an−1a0a1⋯an−m−1)(最后m个数循环移至最前面的m个位置)。函数接口定义:int ArrayShift( int a[], int n, int m );其中a[]是用户传入的数组;n是数组的大小;m是右移的位数。函原创 2021-03-30 17:22:37 · 222 阅读 · 0 评论 -
习题8-2 在数组中查找指定元素
习题8-2 在数组中查找指定元素 (15 分)本题要求实现一个在数组中查找指定元素的简单函数。函数接口定义:int search( int list[], int n, int x );其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。裁判测试程序样例:#include <stdio.h>#define MAXN 10int search(原创 2021-03-30 16:52:22 · 289 阅读 · 0 评论 -
习题8-1 拆分实数的整数与小数部分
习题8-1 拆分实数的整数与小数部分 (15 分)本题要求实现一个拆分实数的整数与小数部分的简单函数。函数接口定义:void splitfloat( float x, int *intpart, float *fracpart );其中x是被拆分的实数(0≤x<10000),*intpart和*fracpart分别是将实数x拆分出来的整数部分与小数部分。裁判测试程序样例:#include <stdio.h>void splitfloat( float x,原创 2021-03-30 16:47:36 · 312 阅读 · 0 评论 -
练习8-8 移动字母
练习8-8 移动字母 (10 分)本题要求编写函数,将输入字符串的前3个字符移到最后。函数接口定义:void Shift( char s[] );其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。裁判测试程序样例:#include <stdio.h>#include <string.h>#define MAXS 10void Shift( char s[] );void原创 2021-03-30 16:33:29 · 131 阅读 · 0 评论 -
练习8-2 计算两数的和与差
练习8-2 计算两数的和与差 (10 分)本题要求实现一个计算输入的两数的和与差的简单函数。函数接口定义:void sum_diff( float op1, float op2, float *psum, float *pdiff );其中op1和op2是输入的两个实数,*psum和*pdiff是计算得出的和与差。裁判测试程序样例:#include <stdio.h>void sum_diff( float op1, float op2, float *psum,原创 2021-03-30 15:52:33 · 490 阅读 · 0 评论 -
习题8-10 输出学生成绩
习题8-10 输出学生成绩 (20 分)本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。输入格式:输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。输出格式:按照以下格式输出:average = 平均成绩max = 最高成绩min = 最低成绩结果均保留两位小数。输入样例:385 90 95输出样例:average = 90.00max =原创 2021-03-29 22:11:38 · 481 阅读 · 0 评论 -
习题8-7 字符串排序
习题8-7 字符串排序 (20 分)本题要求编写程序,读入5个字符串,按由小到大的顺序输出。输入格式:输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。输出格式:按照以下格式输出排序后的结果:After sorted:每行一个字符串输入样例:red yellow blue green white输出样例:After sorted:bluegreenredwhiteyellow分析:字符串类型题,可以用原创 2021-03-29 21:18:58 · 1463 阅读 · 0 评论 -
习题7-8 字符串转换成十进制整数
习题7-8 字符串转换成十进制整数 (15 分)输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。输入格式:输入在一行中给出一个以#结束的非空字符串。输出格式:在一行中输出转换后的十进制数。题目保证输出在长整型范围内。输入样例:+-P-xf4+-1!#输出样例:-3905分析:该题输入一串混合型字符,因此主要有几原创 2021-03-24 13:54:39 · 1159 阅读 · 0 评论 -
习题7-7 字符串替换
习题7-7 字符串替换 (15 分)本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:原字母 对应字母 A Z B Y C X D W … … X C Y B Z A 输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出替换完成后的字符串。输入样例:Only the 11 CAPItaL LeTtERS are replaced.原创 2021-03-24 11:11:46 · 419 阅读 · 0 评论 -
习题7-6 统计大写辅音字母
习题7-6 统计大写辅音字母 (15 分)英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出字符串中大写辅音字母的个数。输入样例:HELLO World!输出样例:4代码: #include<stdio.h>int main(){ char s[80]; int i=0;原创 2021-03-24 10:49:59 · 164 阅读 · 0 评论 -
习题7-5 找鞍点
习题7-5 找鞍点 (20 分)一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。输入格式:输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。输出格式:输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。输入样例1:41 7 4 14 8 3 61 6 1 20 7 8 9原创 2021-03-24 00:21:56 · 955 阅读 · 1 评论 -
习题7-4 求矩阵各行元素之和
习题7-4 求矩阵各行元素之和 (15 分)本题要求编写程序,求一个给定的m×n矩阵各行元素之和。输入格式:输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。输出格式:每行输出对应矩阵行元素之和。输入样例:3 26 31 -83 12输出样例:9-715代码:#include<stdio.h>int main(){ int m,n; scanf("%d %d",&am原创 2021-03-23 21:52:59 · 441 阅读 · 0 评论 -
习题7-3 判断上三角矩阵
习题7-3 判断上三角矩阵 (15 分)上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵。输入格式:输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。输出格式:每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。输入样例:231 2 3原创 2021-03-23 21:42:57 · 256 阅读 · 0 评论