浙大第三版C语言程序设计习题
Mrrr_Li
时间一直都在向前,你也应该一直向前。
展开
-
7-31 字符串循环左移 (20分)
上次参考别人的代码,这次自己用新思路写的,很舒服。#include<stdio.h>#include<string.h>#include<ctype.h>#include<stdlib.h>int main(){ char arr[110], ch; gets(arr); int n, i, j, len = strlen(arr); scanf("%d", &n); for ( i = 0.原创 2020-08-30 15:56:48 · 123 阅读 · 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;}/* 你的代码将被嵌在这里 */输入样例:10输出样例:1010原创 2020-08-06 06:39:24 · 232 阅读 · 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 = getmonth(n);if (原创 2020-08-06 06:19:52 · 332 阅读 · 0 评论 -
实验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,原创 2020-08-05 18:38:45 · 2934 阅读 · 0 评论 -
实验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 );原创 2020-08-05 18:06:19 · 1349 阅读 · 1 评论 -
实验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[] ); / 由裁判实现,略去不表原创 2020-08-05 17:59:17 · 672 阅读 · 0 评论 -
实验5-10 使用函数求余弦函数的近似值 (15分)
本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:cos(x)=x0 /0!−x2 /2!+x4 /4!−x6 /6!+⋯函数接口定义:double funcos( double e, double x );其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。输入输出均在双精度范围内。裁判测试程序样例:#include <stdio.h>原创 2020-08-05 14:32:35 · 588 阅读 · 0 评论 -
习题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>int main(){ int h, m, s; scanf("%d:%d:%d", &h, &原创 2020-08-01 17:38:48 · 355 阅读 · 0 评论 -
习题8-7 字符串排序 (20分)(使用qsort快排)
本题要求编写程序,读入5个字符串,按由小到大的顺序输出。输入格式:输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。输出格式:按照以下格式输出排序后的结果:After sorted:每行一个字符串输入样例:red yellow blue green white输出样例:After sorted:bluegreenredwhiteyellow 我不知道为啥我用选择排序封装函数然后调用老是提示段错误,于是就用了qsort方法。如原创 2020-08-01 17:17:47 · 198 阅读 · 0 评论 -
习题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输出样例1:2 1输入样例2:21 74原创 2020-08-01 14:53:07 · 385 阅读 · 0 评论 -
习题7-3 判断上三角矩阵 (15分)
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵。输入格式:输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。输出格式:每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。输入样例:231 2 30 4 50 0 621 0-8 2输出样例:原创 2020-08-01 13:11:02 · 279 阅读 · 0 评论 -
习题7-2 求一批整数中出现最多的个位数字 (20分)
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。输入格式:输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。输出格式:在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。输入样例:31234 2345 3456输出样例原创 2020-07-31 18:15:05 · 106 阅读 · 0 评论 -
练习7-11 字符串逆序 (15分)
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。输出格式:在一行中输出逆序后的字符串。输入样例:Hello World!输出样例:!dlroW olleH#include <stdio.h>int main(){ char ptr1[81], ptr2[81]; int i, len, j = 0; gets(ptr1); len = strlen(pt原创 2020-07-31 17:48:47 · 148 阅读 · 0 评论 -
练习7-10 查找指定字符 (15分)
本题要求编写程序,从给定字符串中查找某指定的字符。输入格式:输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。输出格式:如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。输入样例1:mprogramming输出样例1:index = 7输入样例2:a1234输出样例2:Not Found 这道题其实不难,但又有一个低级错误让我一直不能通过,就是最后if做判原创 2020-07-31 17:32:43 · 1960 阅读 · 0 评论 -
练习7-8 方阵循环右移 (20分)
本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。输入格式:输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。输出格式:按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。输入样例:2 31 2 34 5 67 8 9输出样例:2 3 15 6 48 9 7#include <stdio.h&g原创 2020-07-31 16:12:35 · 125 阅读 · 0 评论 -
练习7-4 找出不是两个数组共有的元素 (20分)
给定两个整型数组,本题要求找出不是两者共有的元素。输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。输出格式:在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。输入样例:10 3 -5 2 8 0 3 5 -15 9 10011 6 4 8 2 6 -5 9 0 100 8 1输出样例:3 5 -15 6 4 1 题目含义其实就是寻找a数原创 2020-07-31 15:05:54 · 834 阅读 · 3 评论 -
习题4-11 兔子繁衍问题 (15分)
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?输入格式:输入在一行中给出一个不超过10000的正整数N。输出格式:在一行中输出兔子总数达到N最少需要的月数。输入样例:30输出样例:9#include <stdio.h>//第一个月加第二个月等于第三个月,依此类推。int main(){ int n, x = 1,y = 0, sum,原创 2020-07-31 14:13:26 · 237 阅读 · 0 评论 -
习题6-8 统计一行文本的单词个数 (15分)
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。输入格式:输入给出一行字符。输出格式:在一行中输出单词个数。输入样例:Let’s go to room 209.输出样例:5 这道题要注意判断结束读取单词的条件,就是读取到换行符'\n'。#include <stdio.h>int main(){ char a; int cnt = 0, num = 0; while..原创 2020-07-31 13:57:26 · 159 阅读 · 0 评论 -
习题6-7 简单计算器 (20分)
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。输入格式:输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。输出格式:在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。输入样例:1+2*10-10/2=输出样例:10 这道题在我刚刚学C语言的第一个月就碰到了,然后问了一位贴吧的老哥。当时就直接cv上去,当时也就稍微看了一下逻辑,swi原创 2020-07-31 10:20:41 · 1463 阅读 · 1 评论 -
习题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 main(){.原创 2020-07-31 08:51:43 · 182 阅读 · 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 main(){..原创 2020-12-02 15:57:35 · 173 阅读 · 0 评论 -
习题4-6 水仙花数 (20分)
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13 +53 +33 。 本题要求编写程序,计算所有N位水仙花数。输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。输入样例:3输出样例:153370371407感觉我自己写的n==7的时候有点取巧,有更好的方法欢迎讨论#include <stdio.h>int isshui(in原创 2020-07-30 20:32:42 · 171 阅读 · 0 评论 -
习题4-1 求奇数和 (15分)
这道题没什么难度,就是没能一次ac,记录一下。注意:如果题目没有对分支情况的输出有特殊要求,就不要自作多情。#include <stdio.h>int main(){ int num, sum = 0; scanf("%d", &num); while(num > 0){ if ( num % 2 == 1){ sum += num; } scanf("%d",..原创 2020-07-30 18:42:20 · 286 阅读 · 0 评论 -
练习4-6 猜数字游戏 (15分)
这道题不难,但是想迅速ac还是得认真读题。将每种情况的输出都写对。 以下是ac代码:#include <stdio.h>int main(){ int n, num, guess, high = 100, low = 0; scanf("%d %d", &n, &num); int temp = num; scanf("%d", &guess); if( guess < 0){ pr..原创 2020-07-30 17:38:56 · 540 阅读 · 0 评论 -
练习4-3 求给定精度的简单交错序列部分和 (15分)
有些题你看着简单,但是如果你没注意到题目的一些小坑,你就可能一分也拿不到。所以认真读题审题是非常重要的,还要提醒自己应该注意的点。 本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。输入格式:输入在一行中给出一个正实数eps。输出格式:在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后六位。题目保证计算结果不超过双精度范围。输入样例1:4E-2输出样例1:sum = 0.854457..原创 2020-07-30 16:55:09 · 131 阅读 · 0 评论 -
习题3-5 三角形判断 (15分)
感觉这道题其实是考只知道三角形三个点的坐标然后求周长和面积的。其中有个求面积的公示叫做海伦公式 p = a + b + c ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200730162836811.png)以下是我写的代码#include <stdio.h>double far(double a, double b, double c, double d);int main(){ double a, b, c, d, e, .原创 2020-07-30 16:29:34 · 144 阅读 · 1 评论 -
习题3-3 出租车计价 (15分)
这道题不难,但是要理解题意,不然测试用例也能难全部通过。需要注意的是最后一个情况是超过10的部分加收,3 - 10km 部分还是每公里2元。 本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:起步里程为3公里,起步费10元;超起步里程后10公里内,每公里2元;超过10公里以上的部分加收50%的回空补贴费,即每公里3元;营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。输入格式:输入在一行中给出输入行驶里程(单位为公里,精确到小数...原创 2020-07-30 14:50:07 · 568 阅读 · 0 评论 -
习题3-2 高速公路超速处罚 (15分)
按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。输入格式:输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。输出格式:在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。输入样例1:6原创 2020-07-30 14:17:33 · 295 阅读 · 0 评论 -
习题3-1 比较大小 (10分)(C语言)
这道题不难,就是有些奇怪的解法会比较不好过最后一个全相等的测试点。 这道题缺一个测试点就是三个数中有两个数相等。下面的我的代码就是漏网之鱼(但是能过该题的测试点)。博客建议你直接用qsort排序或者if比较完成。#include <stdio.h>int main(){ int max, min, i, arr[3], temp; for ( i = 0; i < 3; i++){ scanf("%d", &arr[i] )..原创 2020-07-30 13:34:07 · 384 阅读 · 0 评论 -
练习3-8 查询水果价格 (15分)(C语言)
这道题逻辑比件简单,我觉得容易掉的一个坑就是格式错误。那个用户界面[0] exit后面也要加个换行符,不然就得不了分。(这也是我突发奇想试了一下没想到猜对了)#include <stdio.h>int main(){ double apple = 3.00, pear = 2.50, orange = 4.10, grape = 10.20; printf("[1] apple\n[2] pear\n[3] orange\n[4] grape\n[0] exit\.原创 2020-07-30 12:55:39 · 2384 阅读 · 0 评论 -
练习3-3 统计学生平均成绩与及格人数 (15分)
求和时一定要记得初始化变量,有时候一直可以记得,说不定哪一次就忘了,然后就浪费了大量时间。这道题因为没初始化,浪费了我20多分钟,故发帖留念 本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。输入格式:输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。输出格式:按照以下格式输出:average = 成绩均值count = 及格人数其中平均值精确到小数点后一位。输入样例:..原创 2020-07-30 11:56:11 · 458 阅读 · 2 评论