
PTA浙大版《C语言程序设计实验与习题指导(第3版)》题目集
Re:从零开始的代码生活
菜鸟一个
展开
-
实验11-2-9 链表逆置 (20 分)
本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:struct ListNode { int data; struct ListNode *next;};函数接口定义:struct ListNode *reverse( struct ListNode *head );其中head是用户传入的链表的头指针;函数reverse将链表head逆置,并返回结果链表的头指针。裁判测试程序样例:#include <stdio.h>#原创 2021-02-09 15:56:00 · 1009 阅读 · 1 评论 -
实验11-2-8 单链表结点删除 (20 分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *deletem( struct ListNode *L, int m );函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应原创 2021-02-09 14:25:43 · 1729 阅读 · 1 评论 -
实验11-2-7 统计专业人数 (15 分)
本题要求实现一个函数,统计学生学号链表中专业为计算机的学生人数。链表结点定义如下:struct ListNode { char code[8]; struct ListNode *next;};这里学生的学号共7位数字,其中第2、3位是专业编号。计算机专业的编号为02。函数接口定义:int countcs( struct ListNode *head );其中head是用户传入的学生学号链表的头指针;函数countcs统计并返回head链表中专业为计算机的学生人数。裁判测试原创 2021-02-09 14:20:02 · 848 阅读 · 0 评论 -
实验11-2-6 奇数值结点链表 (20 分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *getodd( struct ListNode **L );函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单原创 2021-02-09 14:09:22 · 1608 阅读 · 2 评论 -
实验11-2-5 链表拼接 (20 分)
本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下:struct ListNode { int data; struct ListNode *next;};函数接口定义:struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);其中list1和list2是用户传入的两个按data升序链接的链表的头指针;函数mergelists将两个链表合并成一个按data升序链接的链表,并返原创 2021-02-09 13:28:56 · 624 阅读 · 0 评论 -
实验11-2-4 删除单链表偶数节点 (20 分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下:struct ListNode { int data; struct ListNode *next;};函数接口定义:struct ListNode *createlist();struct ListNode *deleteeven( struct ListNode *head );函数createlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束原创 2021-02-08 17:08:15 · 782 阅读 · 0 评论 -
实验11-2-3 逆序数据建立链表 (20 分)
本题要求实现一个函数,按输入数据的逆序建立一个链表。函数接口定义:struct ListNode *createlist();函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。链表节点结构定义如下:struct ListNode { int data; struct ListNode *next;};裁判测试程序样例:#include <stdio.h>#include &原创 2021-02-08 14:05:35 · 1105 阅读 · 7 评论 -
实验11-2-2 学生成绩链表处理 (20 分)
本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。函数接口定义:struct stud_node *createlist();struct stud_node *deletelist( struct stud_node *head, int min_score );函数createlist利用scanf从输入中获取学生的信息,将其组织成单向链表,并返回链表头指针。链表节点结构定义如下:struct stud_node { int原创 2021-02-08 13:41:56 · 1700 阅读 · 1 评论 -
实验11-2-1 建立学生信息链表 (20 分)
本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。函数接口定义:void input();该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:struct stud_node { int num; /*学号*/ char name[20]; /*姓名*/ int score; /*成绩*/ struct stud_node *nex原创 2021-02-07 17:02:38 · 1087 阅读 · 0 评论 -
实验11-1-8 查找子串 (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[] ); /* 裁判提供,细节不表 */int main(){原创 2021-02-05 17:04:03 · 3314 阅读 · 4 评论 -
实验11-1-6 指定位置输出字符串 (20 分)
本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。函数接口定义:char *match( char *s, char ch1, char ch2 );函数match应打印s中从ch1到ch2之间的所有字符,并且返回ch1的地址。裁判测试程序样例:#include <stdio.h>#define MAXS 10char *match( char *s, char ch1, char ch2原创 2021-02-05 16:31:31 · 2241 阅读 · 3 评论 -
实验11-1-4 计算最长的字符串长度 (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#define MAXS 20int max_len( cha原创 2021-02-04 17:22:19 · 2076 阅读 · 0 评论 -
实验11-1-3 查找星期 (15 分)
本题要求实现函数,可以根据下表查找到星期,返回对应的序号。序号星期0Sunday1Monday2Tuesday3Wednesday4Thursday5Friday6Saturday函数接口定义:int getindex( char *s );函数getindex应返回字符串s序号。如果传入的参数s不是一个代表星期的字符串,则返回-1。裁判测试程序样例:#include <stdio.h>#include &原创 2021-02-04 17:18:25 · 2357 阅读 · 0 评论 -
实验11-1-2 输出月份英文名 (15 分)
本题要求实现函数,可以返回一个给定月份的英文名称。函数接口定义:char *getmonth( int n );函数getmonth应返回存储了n对应的月份英文名称的字符串头指针。如果传入的参数n不是一个代表月份的数字,则返回空指针NULL。裁判测试程序样例:#include <stdio.h>char *getmonth( int n );int main(){ int n; char *s; scanf("%d", &n); s原创 2021-02-04 16:46:33 · 1468 阅读 · 2 评论 -
实验10-10 递归实现顺序输出整数 (15 分)
本题要求实现一个函数,对一个整数进行按位顺序输出。函数接口定义:void printdigits( int n );函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。裁判测试程序样例:#include <stdio.h>void printdigits( int n );int main(){ int n; scanf("%d", &n); printdigits(n); return 0;}原创 2021-02-04 12:58:09 · 1475 阅读 · 0 评论 -
实验10-9 十进制转换二进制 (15 分)
本题要求实现一个函数,将正整数n转换为二进制后输出。函数接口定义:void dectobin( int n );函数dectobin应在一行中打印出二进制的n。建议用递归实现。裁判测试程序样例:#include <stdio.h>void dectobin( int n );int main(){ int n; scanf("%d", &n); dectobin(n); return 0;}/* 你的代码将被嵌在这里 */原创 2021-02-03 16:31:23 · 1684 阅读 · 1 评论 -
实验10-8 递归计算P函数 (15 分)
本题要求实现下列函数P(n,x)的计算,其函数定义如下:函数接口定义:double P( int n, double x );其中n是用户传入的非负整数,x是双精度浮点数。函数P返回P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。裁判测试程序样例:#include <stdio.h>double P( int n, double x );int main(){ int n; double x; scanf("%d %lf", &原创 2021-02-03 16:04:34 · 860 阅读 · 0 评论 -
实验10-7 递归求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(){ int n; scanf("%d", &n);原创 2021-02-03 15:59:52 · 1599 阅读 · 1 评论 -
实验10-6 递归计算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; scanf("%d %d", &m, &n); pri原创 2021-02-03 13:18:41 · 1437 阅读 · 0 评论 -
实验10-5 递归求简单交错幂级数的部分和 (15 分)
本题要求实现一个函数,计算下列简单交错幂级数的部分和:f(x,n)=x−x2+x3−x4+⋯+(−1)n−1xn函数接口定义:double fn( double x, int n );其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。裁判测试程序样例:#include <stdio.h>double fn( double x, int n );int main(){ double x; int原创 2021-02-02 16:21:18 · 1313 阅读 · 1 评论 -
实验10-4 递归实现指数函数 (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; scanf("%lf %d", &x, &原创 2021-02-02 16:09:08 · 1622 阅读 · 0 评论 -
实验10-3 递归求阶乘和 (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 );double factsum( int n );in原创 2021-02-02 15:56:04 · 1811 阅读 · 0 评论 -
实验10-2 判断满足条件的三位数 (15分)
本题要求实现一个函数,统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。函数接口定义:int search( int n );其中传入的参数int n是一个三位数的正整数(最高位数字非0)。函数search返回[101, n]区间内所有满足条件的数的个数。裁判测试程序样例:#include <stdio.h>#include <math.h>int search( int n );int main(){ int number原创 2021-02-02 15:50:43 · 1477 阅读 · 5 评论 -
实验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和成绩score均是已经存储好的。set_grade函数需要根据学生的原创 2021-02-02 15:27:13 · 1783 阅读 · 1 评论 -
实验9-4 计算两个复数之积 (15分)
本题要求实现一个计算复数之积的简单函数。函数接口定义:struct complex multiply(struct complex x, struct complex y);其中struct complex是复数结构体,其定义如下:struct complex{ int real; int imag;};裁判测试程序样例:#include <stdio.h>struct complex{ int real; int imag;};str原创 2021-02-02 15:05:03 · 1294 阅读 · 0 评论 -
实验8-2-9 长整数转化成16进制字符串 (15分)
本题要求实现一个将长整数转化成16进制字符串的简单函数。函数接口定义:void f( long int x, char *p );其中x是待转化的十进制长整数,p指向某个字符数组的首元素。函数f的功能是把转换所得的16进制字符串写入p所指向的数组。16进制的A~F为大写字母。裁判测试程序样例:#include <stdio.h>#define MAXN 10void f( long int x, char *p );int main(){ long int x;原创 2021-02-01 17:29:58 · 726 阅读 · 3 评论 -
实验8-2-7 字符串的连接 (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 main(){ char *p; char原创 2021-02-01 17:07:51 · 1972 阅读 · 4 评论 -
实验8-2-6 分类统计各类字符个数 (15分)
本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。函数接口定义:void StringCount( char *s );其中 char *s 是用户传入的字符串。函数StringCount须在一行内按照大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数的格式输出。裁判测试程序样例:#include <stdio.h>#define MAXS 15void StringCount( char *s );void ReadSt原创 2021-01-30 15:51:33 · 3352 阅读 · 1 评论 -
实验8-2-5 判断回文字符串 (20分)
本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。函数接口定义:bool palindrome( char *s );函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false。裁判测试程序样例:#include <stdio.h>#include <string.h>#define MAXN 20typedef enum {false原创 2021-01-30 15:42:51 · 2117 阅读 · 4 评论 -
实验8-2-4 使用函数实现字符串部分复制 (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 strmcpy( char *t, int m, char *s )原创 2021-01-30 14:54:27 · 9877 阅读 · 10 评论 -
实验8-2-3 删除字符 (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 ReadString( char s[] ); /* 由裁判实现,略原创 2021-01-30 14:46:44 · 2273 阅读 · 6 评论 -
实验8-1-8 报数 (20分)
报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号。从第一个人开始报数,报到m(<n)的人退出圈子;下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。本题要求编写函数,给出每个人的退出顺序编号。函数接口定义:void CountOff( int n, int m, int out[] );其中n是初始人数;m是游戏规定的退出位次(保证为小于n的正整数)。函数CountOff将每个人的退出顺序编号存在数组out[]中。因为C语言数组下标是从0开始的,所以第i个位置上的原创 2021-01-29 16:41:54 · 2757 阅读 · 2 评论 -
实验8-1-7 数组循环右移 (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是右移的位数。函数ArrayShift须将循环右移后的数组仍然存在a[]中。裁判测试程序样例:#include原创 2021-01-29 14:55:02 · 2256 阅读 · 3 评论 -
实验8-1-6 函数实现字符串逆序 (15分)
本题要求实现一个字符串逆序的简单函数。函数接口定义:void f( char *p );函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。裁判测试程序样例:#include <stdio.h>#define MAXS 20void f( char *p );void ReadString( char *s ); /* 由裁判实现,略去不表 */int main(){ char s[MAXS]; ReadStri原创 2021-01-28 16:02:53 · 1590 阅读 · 3 评论 -
实验8-1-5 在数组中查找指定元素 (15分)
本题要求实现一个在数组中查找指定元素的简单函数。函数接口定义:int search( int list[], int n, int x );其中list[]是用户传入的数组;n(≥0)是list[]中元素的个数;x是待查找的元素。如果找到则函数search返回相应元素的最小下标(下标从0开始),否则返回−1。裁判测试程序样例:#include <stdio.h>#define MAXN 10int search( int list[], int n, int x );int原创 2021-01-28 15:32:18 · 1355 阅读 · 0 评论 -
实验8-1-4 使用函数的选择法排序 (25分)
本题要求实现一个用选择法对整数数组进行简单排序的函数。函数接口定义:void sort( int a[], int n );其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。裁判测试程序样例:#include <stdio.h>#define MAXN 10void sort( int a[], int n );int main(){ int i, n; int a[MAXN]; scanf原创 2021-01-28 15:26:35 · 2076 阅读 · 0 评论 -
实验8-1-3 拆分实数的整数与小数部分 (15分)
本题要求实现一个拆分实数的整数与小数部分的简单函数。函数接口定义:void splitfloat( float x, int *intpart, float *fracpart );其中x是被拆分的实数(0≤x<10000),intpart和fracpart分别是将实数x拆分出来的整数部分与小数部分。裁判测试程序样例:#include <stdio.h>void splitfloat( float x, int *intpart, float *fracpart );in原创 2021-01-28 15:20:49 · 1384 阅读 · 1 评论 -
实验8-1-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, float *pdiff );int main(){原创 2021-01-28 15:17:35 · 1806 阅读 · 0 评论 -
实验8-1-1 利用指针找最大值 (10分)
本题要求实现一个简单函数,找出两个数中的最大值。函数接口定义:void findmax( int *px, int *py, int *pmax );其中px和py是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。裁判测试程序样例:#include <stdio.h>void findmax( int *px, int *py, int *pmax );int main(){ int max, x,原创 2021-01-28 15:14:41 · 1391 阅读 · 0 评论 -
实验6-7 使用函数输出一个整数的逆序数 (20分)
本题要求实现一个求整数的逆序数的简单函数。函数接口定义:int reverse( int number );其中函数reverse须返回用户传入的整型number的逆序数。裁判测试程序样例:#include <stdio.h>int reverse( int number );int main(){ int n; scanf("%d", &n); printf("%d\n", reverse(n)); return 0;}/*原创 2021-01-27 15:45:52 · 2532 阅读 · 2 评论