![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
浙大版《C语言程序设计(第3版)》题目集
断.桥
这个作者很懒,什么都没留下…
展开
-
习题4-9 打印菱形图案 (15分)
本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。输入样例:7输出样例: * * * * * * * * * * * * * * * * * * * * * * * * *我的代码:#include<stdio.h>int main(){ int n,i,j,k; scan原创 2021-01-17 23:02:24 · 66 阅读 · 0 评论 -
习题4-7 最大公约数和最小公倍数 (15分)
本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。输入样例:511 292输出样例:73 2044我的代码:#include<stdio.h>int GCD(int m,int n);int LCM(int m,int n,int g);int main(){ int m,n; scanf("%d %d",&m,&a原创 2021-01-17 23:02:10 · 204 阅读 · 0 评论 -
习题4-6 水仙花数 (20分)
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=1^3 + 5^3 + 3^3 。 本题要求编写程序,计算所有N位水仙花数。输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。输入样例:3输出样例:153370371407我的代码:#include<stdio.h>int p(int m,int n);int main(){ int n,i,j,t;原创 2021-01-17 22:57:35 · 114 阅读 · 0 评论 -
习题4-5 换硬币 (20分)
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。输入样例:13输出样例:fen5:2, fen2:1, fen1:1, total:4fen原创 2021-01-16 22:30:44 · 57 阅读 · 0 评论 -
练习4-6 猜数字游戏 (15分)
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结原创 2021-01-16 22:30:03 · 151 阅读 · 0 评论 -
练习4-3 求给定精度的简单交错序列部分和 (15分)
本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + … 直到最后一项的绝对值不大于给定精度eps。输入格式:输入在一行中给出一个正实数eps。输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。输入样例1:4E-2输出样例1:sum = 0.854457输入样例2:0.02输出样例2:sum = 0.826310我的代码:#include<stdio.h>int原创 2021-01-16 22:29:37 · 125 阅读 · 0 评论 -
习题3-5 三角形判断 (15分)
给定平面上任意三个点的坐标(x1 ,y1)、(x2 ,y2)、(x3 ,y3),检验它们能否构成三角形。输入格式:输入在一行中顺序给出六个[−100,100]范围内的数字,即三个点的坐标x1 、y1 、x2 、y2 、x3 、y3。输出格式:若这3个点不能构成三角形,则在一行中输出“Impossible”;若可以,则在一行中输出该三角形的周长和面积,格式为“L = 周长, A = 面积”,输出到小数点后2位。输入样例1:4 5 6 9 7 8输出原创 2021-01-16 22:29:12 · 46 阅读 · 0 评论 -
习题3-2 高速公路超速处罚 (15分)
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。输入格式:输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。输出格式:在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。输入样原创 2021-01-16 22:28:51 · 462 阅读 · 0 评论 -
练习3-4 统计字符 (15分)
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。输入格式:输入为10个字符。最后一个回车表示输入结束,不算在内。输出格式:在一行内按照letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数的格式输出。输入样例:aZ &09 Az输出样例:letter = 4, blank = 3, digit = 2, other = 1我的代码:#include&原创 2021-01-16 22:28:27 · 252 阅读 · 0 评论 -
习题11-8 单链表结点删除 (20分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *deletem( struct ListNode *L, int m );函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应原创 2021-01-16 22:27:24 · 117 阅读 · 1 评论 -
习题11-7 奇数值结点链表 (20分)
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *getodd( struct ListNode **L );函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单原创 2021-01-16 22:27:10 · 99 阅读 · 0 评论 -
习题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[] ); /* 裁判提供,细节不表 */int main(){原创 2021-01-16 22:26:02 · 58 阅读 · 0 评论 -
习题11-5 指定位置输出字符串 (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-01-16 22:25:19 · 131 阅读 · 0 评论 -
习题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 main(){ char *p; char原创 2021-01-13 20:20:44 · 139 阅读 · 0 评论 -
习题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#define MAXS 20int max_len( cha原创 2021-01-13 20:20:23 · 110 阅读 · 0 评论 -
习题11-2 查找星期 (15分)
本题要求实现函数,可以根据下表查找到星期,返回对应的序号。序号星期0Sunday1Monday2Tuesday3Wednesday4Thursday5Friday6Saturday函数接口定义:int getindex( char *s );函数getindex应返回字符串s序号。如果传入的参数s不是一个代表星期的字符串,则返回-1。裁判测试程序样例:#include <stdio.h>#include &原创 2021-01-13 20:20:02 · 76 阅读 · 0 评论 -
习题9-6 按等级统计学生成绩 (20分)
习题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均是已经存原创 2021-01-13 20:19:01 · 134 阅读 · 0 评论 -
习题9-2 计算两个复数之积 (15分)
习题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{ int real;原创 2021-01-13 20:18:47 · 65 阅读 · 0 评论 -
习题8-9 分类统计各类字符个数 (15分)
习题8-9 分类统计各类字符个数 (15分)本题要求实现一个函数,统计给定字符串中的大写字母、小写字母、空格、数字以及其它字符各有多少。函数接口定义:void StringCount( char *s );其中 char *s 是用户传入的字符串。函数StringCount须在一行内按照大写字母个数 小写字母个数 空格个数 数字个数 其它字符个数的格式输出。裁判测试程序样例:#include <stdio.h>#define MAXS 15void StringCount原创 2021-01-13 20:18:14 · 69 阅读 · 0 评论 -
习题8-8 判断回文字符串 (20分)
习题8-8 判断回文字符串 (20分)本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。函数接口定义:bool palindrome( char *s );函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false。裁判测试程序样例:#include <stdio.h>#include <string.h>#define MAXN 2原创 2021-01-13 20:17:57 · 106 阅读 · 0 评论 -
习题8-6 删除字符 (20分)
习题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 ReadString( char原创 2021-01-13 20:17:39 · 74 阅读 · 0 评论 -
习题8-5 使用函数实现字符串部分复制 (20分)
习题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 strmcpy原创 2021-01-13 20:17:20 · 92 阅读 · 0 评论 -
习题8-4 报数 (20分)
习题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-01-13 20:17:04 · 54 阅读 · 0 评论 -
习题10-8 递归实现顺序输出整数 (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-01-12 13:57:47 · 72 阅读 · 0 评论 -
习题10-7 十进制转换二进制 (15分)
习题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); return 0原创 2021-01-12 13:57:29 · 225 阅读 · 0 评论 -
习题10-6 递归求Fabonacci数列 (10分)
习题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(){ int n原创 2021-01-12 13:57:14 · 219 阅读 · 0 评论 -
习题10-5 递归计算Ackermenn函数 (15分)
习题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; scanf("%d %d原创 2021-01-12 13:57:00 · 72 阅读 · 0 评论 -
习题10-4 递归求简单交错幂级数的部分和 (15分)
习题10-4 递归求简单交错幂级数的部分和 (15分)本题要求实现一个函数,计算下列简单交错幂级数的部分和:f(x,n)=x−x^2 + x^3 − x^4 + ⋯+ (−1)^n−1 x^n函数接口定义:double fn( double x, int n );其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。裁判测试程序样例:#include <stdio.h>double fn( d原创 2021-01-12 13:56:46 · 80 阅读 · 0 评论 -
习题10-3 递归实现指数函数 (15分)
习题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; scanf("原创 2021-01-12 13:56:26 · 725 阅读 · 0 评论 -
习题10-2 递归求阶乘和 (15分)
习题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 );double f原创 2021-01-12 13:56:04 · 59 阅读 · 0 评论 -
习题10-1 判断满足条件的三位数 (15分)
习题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 );int原创 2021-01-12 13:55:45 · 127 阅读 · 0 评论 -
练习10-1 使用递归函数计算1到n之和 (10分)
练习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", &n);原创 2021-01-12 13:54:39 · 95 阅读 · 0 评论 -
习题8-3 数组循环右移 (20分)
习题8-3 数组循环右移 (20分)本题要求实现一个对数组进行循环右移的简单函数:一个数组a中存有n(>0)个整数,将每个整数循环向右移m(≥0)个位置,即将a中的数据由(a0 a1 ⋯an−1)变换为(an−m ⋯an−1 a0 a1 ⋯an−m−1)(最后m个数循环移至最前面的m个位置)。函数接口定义:int ArrayShift( int a[], int n, int m );其中a[]是用户传入的数组;n是数组的大小;m是右移的位数。函数A原创 2021-01-12 13:54:20 · 109 阅读 · 0 评论 -
习题8-2 在数组中查找指定元素 (15分)
习题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( int list[原创 2021-01-11 11:35:34 · 348 阅读 · 0 评论 -
习题8-1 拆分实数的整数与小数部分 (15分)
习题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, int *intpa原创 2021-01-11 11:35:14 · 70 阅读 · 0 评论 -
练习8-8 移动字母 (10分)
练习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 GetStrin原创 2021-01-11 11:34:59 · 67 阅读 · 0 评论 -
练习8-2 计算两数的和与差 (10分)
练习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, float *pd原创 2021-01-11 11:34:45 · 129 阅读 · 0 评论 -
习题6-6 使用函数输出一个整数的逆序数 (20分)
习题6-6 使用函数输出一个整数的逆序数 (20分)本题要求实现一个求整数的逆序数的简单函数。函数接口定义:int reverse( int number );其中函数reverse须返回用户传入的整型number的逆序数。裁判测试程序样例:#include <stdio.h>int reverse( int number );int main(){ int n; scanf("%d", &n); printf("%d\n", rever原创 2021-01-11 11:34:21 · 94 阅读 · 0 评论 -
习题6-5 使用函数验证哥德巴赫猜想 (20分)
习题6-5 使用函数验证哥德巴赫猜想 (20分)本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。函数接口定义:int prime( int p );void Goldbach( int n );其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可原创 2021-01-11 11:34:06 · 199 阅读 · 1 评论 -
习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。函数接口定义:int fib( int n );void PrintFN( int m, int n );其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出原创 2021-01-11 11:33:52 · 346 阅读 · 0 评论