自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

原创 (题解)7-35 有理数均值

本题要求编写程序,计算N个有理数的平均值。输入格式:输入第一行给出正整数N(≤100);第二行中按照a1/b1 a2/b2 …的格式给出N个分数形式的有理数,其中分子和分母全是整形范围内的整数;如果是负数,则负号一定出现在最前面。输出格式:在一行中按照a/b的格式输出N个有理数的平均值。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。输入样例1:41/2 1/6 3/6 -5/10输出样例1:1/6输入样例2:24/3 2/3输出样例2:1注:以上为原题描述,版权归

2021-02-07 10:35:16 716

原创 (题解)7-38 数列求和-加强版

题目描述:给定某数字A(1≤A≤9)以及非负整数N(0≤N≤100000),求数列之和S=A+AA+AAA+⋯+AA⋯A(N个A)。例如A=1, N=3时,S=1+11+111=123。输入格式:输入数字A与非负整数N。输出格式:输出其N项数列之和S的值。输入样例:1 3输出样例:123注:以上为原题描述,版权归属:作者:DS课程组单位:浙江大学我的思路:1. N最大为10000,不可用定义整形去求和,需用数组存储和的每一位,模拟进位,然后打印数组,求得结果。2. AA···A

2021-02-07 10:15:36 991

原创 (题解)7-26 单词长度

题目描述:你的程序要读入一行文本,其中以空格分隔为若干个单词,以 . 结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如 it’s 算一个单词,长度为4。注意,行中可能出现连续的空格;最后的 . 不计算在内。输入格式:输入在一行中给出一行文本,以 . 结束提示:用scanf("%c",…);来读入一个字符,直到读到 . 为止。输出格式:在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。输入样例:It’s great to see yo

2021-02-01 16:05:10 499

原创 (题解)7-32 说反话-加强版

题目描述:给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。输出格式:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。输入样例:Hello World Here I Come输出样例:Come I Here World Hello时间限制:300 ms

2021-02-01 11:25:41 1167

原创 实验11-2-9 链表逆置

本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:struct ListNode {int data;struct ListNode *next;};函数接口定义:struct ListNode *reverse( struct ListNode *head );其中head是用户传入的链表的头指针;函数reverse将链表head逆置,并返回结果链表的头指针。测试程序样例:#include <stdio.h>#include <

2021-01-31 09:38:56 16

原创 实验11-2-3 逆序数据建立链表

本题要求实现一个函数,按输入数据的逆序建立一个链表。函数接口定义:struct ListNode *createlist();函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。链表节点结构定义如下:struct ListNode {int data;struct ListNode *next;};测试程序样例:#include <stdio.h>#include <stdlib.h&

2021-01-31 09:11:55 4

原创 (题解)实验11-2-5 链表拼接

题目描述:本题要求实现一个合并两个有序链表的简单函数。链表结点定义如下:struct ListNode {int data;struct ListNode *next;};函数接口定义:struct ListNode *mergelists(struct ListNode *list1, struct ListNode *list2);其中list1和list2是用户传入的两个按data升序链接的链表的头指针;函数mergelists将两个链表合并成一个按data升序链接的链表,并返回结果链

2021-01-30 21:27:19 468

原创 (题解)习题11-7 奇数值结点链表

原题描述:本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下:struct ListNode {int data;ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *getodd( struct ListNode **L );函数readlist从标准输入读入一系列正整数,按照读入顺序建立单链表。当读到−1时表示输入结束,函数应返回指向单

2021-01-30 10:51:08 787

原创 (题解)习题11-6 查找子串

本题要求实现一个字符串查找的简单函数。函数接口定义: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(){ ch

2021-01-26 12:09:58 1984 9

原创 (题解)习题11-5 指定位置输出字符串

本题要求实现一个函数,对给定的一个字符串和两个字符,打印出给定字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。函数接口定义: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-26 11:38:48 307

原创 习题5-7 使用函数求余弦函数的近似值

本题要求实现一个函数,用下列公式求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>#include <

2021-01-26 11:23:44 165

原创 统计字符串出现的次数

题目描述:任意给定两个字符串str1与str2, str1与str2中可以包含任意字符。你的任务是统计字符串str2在str1中出现的次数。如字符串str1为“asasasbbbasbas”,str2为“as”,则统计结果为5。注意如果字符串str1为“aaaaa”,字符串str2为“aaa”,则统计结果为3。输入与输出要求:输入两个长度不超过100的字符串,以换行符结束。输出统计次数,占一行。程序运行效果:dhd dhdhdfg dhd dh zx67 dhd mklodhdh↙dhd↙6

2021-01-24 10:21:59 1417

原创 实验10_5_指针数组初步

题解:实验10_5_指针数组初步已知一个总长度不超过10000的字符串,字符串中只包含大写字母“A—Z”、小写字母“a—z”和空格‘ ’。空格用于分割单词,空格的个数不超过1000个。你的任务是将字符串中用空格分隔的单词打印出来。 你要按照如下要求完成任务: 1.利用指针数组指向每个单词的开始位置。 2.把字符串中单词结束后的空格改为“\0”,然后使用指针数组将每个单词打印出来。 此题要求用函数完成。函数接口定义:函数原型如下:int getString( char * source , char

2021-01-24 10:16:33 500

原创 (题解)7-4 两张牌比大小

题目描述:现在有一种牌的玩法如下:共36张牌,牌点为2-10,每样4张。两个人玩,每人从所有牌中取两张,然后比较大小,大的方获胜。比较大小规则如下。 1、两张牌的总牌点值为两张牌的各自牌点值相加后除以10的余数,如一张5一张6,则总牌点为1; 2、比较大小时,比较的是总牌点儿。也就是说总牌点大的一方获胜; 3、当总牌点相等时,则看牌点最大的单张,牌点大的获胜。如一张3一张6胜过一张4一张5; 4、如果两张牌的牌点相等(对子),则不计总牌点,它们一定胜过所有非对子的组合; 5、对子和对子比较,按单张牌点比

2021-01-22 13:23:37 9137 3

原创 设计函数 locatesubstr

设计函数 char *locatesubstr(char *str1,char *str2),查找str2指向的字符串在str1指向的字符串中首次出现的位置,返回指向该位置的指针。若str2指向的字符串不包含在str1指向的字符串中,则返回空指针NULL。 注意这里必须使用指针而不是数组下标来访问字符串。函数接口定义:函数接口如下:char *locatesubstr(char *str1,char *str2);在这里解释接口参数。例如:其中 str1 和 str2 都是用户传入的参数,其含义如

2021-01-21 17:22:40 6

原创 (题解)7-4 电话号码本

题目描述:这里有一个简易的电话号码本系统,请按要求实现其部分功能。电话号码本中可以存储若干个人的信息,信息包括姓名,电话,添加年月日三项内容。每条信息在系统中都有一个编号(从0开始)。你要完成的功能包括节点的插入、删除及信息的输出。将n号信息加入到号码本意味着原有的n号变为n+1号,原有的n+1号变为n+2号,以此类推;将n号信息删除意味着原有的n+1号变为n号,原有的n+2号变为n+1号,以此类推。输入格式: 第一行为一个整数n(0<=n<=100),初始时系统内共有n条记录。后边n行每

2021-01-20 20:48:41 464

原创 n*n蛇形矩阵

问题描述:蛇形矩阵是一个nn的矩阵,将整数1到nn按照蛇形的顺序装入一个 n*n 的蛇形矩阵中,如样例所示分别为5阶和10阶蛇形矩阵:输入与输出要求:输入一个整数n,代表蛇形矩阵的阶数,n的范围是1—100。输出蛇形矩阵。每行的每个元素用空格分隔,注意最后一个数的后面为换行符。程序运行效果:Sample 1:51 3 4 10 112 5 9 12 196 8 13 18 207 14 17 21 2415 16 22 23 25Sample 2:101 3 4 10 11 21

2021-01-20 13:56:19 629

原创 7-5 武将单挑

你正在玩一款即时策略游戏,游戏中有若干君主(你是其中之一),每个君主手下都有若干武将。每名武将都有一个战力值。君主之间进行战争时有一个很奇怪的武将单挑模式。在该模式下,对战的君主每次各派出一名武将单挑,如果两个武将打平,则双方要再各派一个武将进行单挑,直到分出胜负为止。假设双方在第n次单挑中分出了胜负,则单挑获胜方取得战争胜利。如果一方没有武将可派了(一次战斗出战过的武将不能再次出战),而另一方有,则没有武将方失败。该模式似乎是大家单挑时把战力值大的先派出去即可。然而游戏并没有这么简单,游戏内部的策略是武将

2021-01-19 22:44:20 296

原创 7-3 祖玛

《祖玛》是由Popcap Games于2004年01月01日开放的一款益智小游戏。游戏目标是尽量消除珠子,以防止珠子滚入轨迹尽头的洞中。游戏的主角是一只石青蛙,石青蛙会吐出各种颜色的珠子,珠子造型美丽,色彩鲜艳,环绕着石青蛙的是承载珠子的轨道,各种颜色的珠子沿着轨道往前滑动,石青蛙必需遏止珠子滚进轨道终点的洞穴。石青蛙吐出的珠子与轨道上的珠子相结合,颜色相同即可消失得分,当轨道上的所有珠子被消除干净时即取得游戏的胜利。游戏创意虽较简单;但难度不凡。屏幕中的石头青蛙会吐出颜色各异的珠子,与沿着一条轨迹运行

2021-01-19 22:20:41 488

原创 7-3 贪吃蛇

第三次机考回顾题目描述:在游戏的世界里,打通关是一个游戏高手的标志,然而有永远无法终结的游戏,如俄罗斯方块,也就必然有任何高手都一定会GAME OVER的游戏。这其中的经典当数贪吃蛇(Snake),在上个世纪90年代末,随着诺基亚手机旋风席卷全球的贪吃蛇就是一款必须死的游戏,谁让这条蛇贪吃呢!但这款永远只有GAME OVER一个结局的小游戏,却可能是世界上拥有最多玩家的游戏。贪吃蛇游戏有PC和手机等多平台版本,既简单又耐玩。玩游戏时,我们用键盘控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而

2021-01-18 20:35:13 367

原创 7-2 点名

题目描述:某老师的班上共有n名学生,为了点名方便,他把学生依次编号,从1到n,然后他写了一个随机点名的程序。现在请你根据该老师所生成的随机数来看他点到了哪些同学。输入格式:第一行为一个整数n(0<n<200),代表学生的总数。后边是n行,每行均为一个长度不超过20的字符串(只包含大写或小写字母),代表学生的名字。第n+2行为一个整数m,代表该老师生成的随机数个数(0<m<n),第n+3行为m个整数,代表该老师生成的m个随机数。这m个随机数也均大于0小于等于n。输出格式:共m

2021-01-18 09:14:14 510

原创 字符串比大小

问题描述:整数可以按照大小来排序,其实字符串也可进行排序。排序时需要比较字符串大小。字符串比较规则见Problem13中对于strcmp功能的描述。任意给定n个字符串,字符串中可以包含除换行符之外的任意字符。你的任务是将这n个字符串从小到大进行排序,然后输出。输入与输出要求:输入一个不超过200的整数n,代表待排序字符串的个数。然后输入n个字符串,每个字符串长度不会超过100,以换行符结束。输出排序后的n个字符串,每个字符串占一行。程序运行效果:Sample 1:5↙bbb↙zzzzzz↙

2021-01-17 22:34:08 306

原创 插入排序

题目描述:设计函数 void InsertSort(int a[],int n); 该函数使用插入排序算法,将数组a的前n个元素按照升序的方式排序。插入排序算法描述如下:初始序列:49 38 65 97 76 13 27 49将元素(38) 插入合适位置: [38 49] 65 97 76 13 27 49将元素(65) 插入合适位置: [38 49 65] 97 76 13 27 49将元素(97) 插入合适位置: [38 49 65 97] 76 13 27 49将元素(76) 插入合适位

2021-01-17 22:16:43 1464

原创 二维数组(二)

问题描述:任意给定一个n * m的矩阵,矩阵的行数为n,列数为m。你的任务是寻找该矩阵的鞍点。一个矩阵的鞍点即该位置上的元素在所在行上最大,在所在列上最小。有的矩阵也可能没有鞍点。不难证明,如果一个矩阵有鞍点,那么这个鞍点一定是唯一的。如果某个矩阵只有1行(1列),则默认该行上的所有元素满足列上最小(行上最大)的要求。例如矩阵M:1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20该矩阵的鞍点为M[0][4]=5,该数在第0行最大,在第4列最小。注:测试用例保

2021-01-17 17:30:34 544

原创 二维数组(一)

问题描述:任意给定一个n*n的矩阵,矩阵的行数与列数均为n。你的任务是通过行变换,使得矩阵每行元素的平均值按递增顺序排列。如果出现有的行平均值相同的情况,则按照原顺序输出。输入与输出要求:输入一个整数n代表矩阵的行数(列数),n的范围是1—100。然后输入n*n个整数,即此矩阵的元素。矩阵元素的绝对值不会超过1000000。输出经过行变换后的新矩阵。每行的每个元素用空格分隔,注意最后一个元素后为换行符。程序运行效果:Sample:3↙5 5 5↙3 3 3↙1 1 1↙1 1 13 3

2021-01-17 17:11:00 314

原创 选择排序

设计函数 void SelectSort(int a[],int n); 使用选择排序算法对数组a的前n个元素按照升序的方式排序。选择排序算法描述如下: 从a[0]到a[n-1]这段元素中找最小元素a[min],a[0]和a[min]交换;接着,从a[1]到a[n -1]这段元素中找最小元素a[min],a[1]和a[min]交换;依次类推,直到从a[n-2]到a[n -1]这段元素中找最小元素a[min],a[n-2]和a[min]交换。输入:首先输入一个整数n(1<n<=1000),代表

2021-01-17 16:13:49 289

原创 实验9_9_字符串加密

任意给定一个字符串,与两个编码表,要求对该字符串进行加密。字符串中只包含大写字母与小写字母。编码表是字母表的一个重新排列,第一个编码表为大写字母编码表,第二个编码表为小写字母编码表。例如:字母表为:(大写字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ)(小写字母表:abcdefghijklmnopqrstuvwxyz)编码表为:(大写字母编码表: JKLMQRYZABCISTNOPDGHXEFUVW)(小写字母编码表: bcljakfxpdqweozrsthiymnguv)编码

2021-01-17 15:26:53 381

原创 实验7-4 身份证号码最后一位

身份证编码规则如下:根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。顺序码(身份证第十五位到十七位)是县级公安机关所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:005的就是个男性,而且和他同年月日生的男性至少有两个,他们的后四位是001* 和003*

2021-01-17 15:16:47 703

原创 实验6-3 二分查找

实验6-3 二分查找设计函数 int BinarySearch(int a[],int n,int key);利用二分查找算法,在升序排列的数组a的前n个元素中查找值为key的数组元素的下标。如果数组a中存在整数key,则返回下标;否则返回-1。假设数组a中的元素互不相同。输入与输出要求:首先输入两个整数n,m,分别代表数组a中元素的个数与需要查找的整数的个数,n(0<n<=2000000)与m(0<m<=100000)。然后分别输入n个整数和m个整数,分别代表存放在数组中的

2021-01-17 15:00:10 27

原创 实验6_9 素数分解(递归实现)

题目描述:设计递归函数void void printFactor( int, int );打印出对n进行素数分解的结果。当执行void printFactor(60,1)时,打印效果为:60=223*5。关于素数分解的描述,见讲义。设计程序,已知一段数据范围[a,b],且a<=b,要求对其中的每一个数进行素数分解。你也可以设计其它辅助函数,如判断素数的函数isPrime(n)。输入与输出要求: 输入两个正整数a、b,代表所分解的区间,满足1<=a<=b<=100000,且

2021-01-17 13:01:07 1915 1

原创 实验6_4_二进制转十进制 实验6_5_二进制的位数

实验6_4_二进制转十进制设计递归函数int convert(int n);用于将二进制数n转换为十进制数并返回。输入与输出要求: 输入一个整数n,代表二进制数,其长度不大于10。输出转换后的十进制数,占一行。输入样例:101010输出样例:42思路:当n=0或n=1时,函数返回n,否则返回n%10+convert(n/10)*2 。代码实现:#include<stdio.h>int convert(int n);int main(){ int

2021-01-17 12:43:17 463 1

原创 实验5_11_设计函数isPerfect与printPerfect

问题描述:如果一个整数的各因子(包括1但不包括该整数本身)值之和等于该整数,则该整数称为“完全数”(perfect number)。例如,6是一个完全数,因为6=1+2+3。你的任务是设计函数isPerfect和printPerfect,判断并打印出区间[a,b](1<=a<b<=20000)内的所有完全数,并统计完全数的总个数。 isPerfect函数原型:int isPerfect(int n);用于判断正整数n是否为完全数,若是,则返回值为1,否则为0。 printPerfect函

2021-01-17 12:01:05 1020 1

原创 6-2 字符统计

题目描述:给定一个仅由0到9组成的字符串,请统计该字符串中各个数字的个数。输出的格式为将每个数字及其个数再组成一个新的字符串输出。规则如下:1、输出顺序为先输出0及其个数,然后是1及其个数,以此类推,最后输出9及其个数。2、如果某个数字的个数不为0,则输出,为0,则不输出。3、一个数字的个数及这个数字输出的顺序为先输出个数,然后输出这个数字。比如由11个0,则输出110。这是一个例子:给定字符串 20201227,则输出20114217,表示2个0,1个1,4个2和1个7。输入:只有一行,为

2021-01-16 21:41:33 345

原创 6-1 杨辉三角(动态内存)

题目描述:杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623——1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。杨辉三角的前提是每行端点与结尾的数为1,每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)

2021-01-16 20:09:00 388

原创 7-2 北京市机动车网上自选牌号的正误鉴别

题目描述:2009年3月9日开始,北京市交通管理局正式推出北京市机动车网上自选牌号业务,极大的方便了新购车的市民自选中意的新车牌照号的需求。根据国家制定的机动车号牌号码标准,一辆机动车的号牌号码由七位字符组成,前两位是号牌号码发牌机关代码,后五位是具体号牌号码。主管部门在具体操作上又出台了以下规定:机动车所有人网上选号的号牌号码发牌机关代码为“京N”或者“京Y”。后面的五位号牌号码的最后一位必须为数字,其余四位有且必须有两位为英文字母(但字母I和O不可用),也就是说英文字母有且只有两个,不能多也不能少。例

2021-01-16 16:26:10 617

原创 7-1 选举

题目描述根据某国选举制度,该国总统由选举人团选举产生,并非由选民直接选举产生,获得半数以上选举人票者当选总统。在该国所有的州均实行“胜者全得”规则,即把本州的选举人票全部给予在本州获得相对多数选民票的总统候选人。根据此规则,请你写一段程序来判断一个候选人至少在多少个州获得多数选民票才能当选总统。输入格式:第一行为一个整数n(0<n<1000),代表该国共有n个州。第二行为n个用空格分隔的整数,代表每个州的选举人票数。。输出格式:为一个整数m,代表一个候选人当选总统至少要在m个州获得多

2021-01-16 16:14:20 195

原创 二分查找递归

11月29日机考D. 题目描述:设计递归函数 int RecurBinarySearch( int a[] , int key , int left , int right ) ; 利用二分查找算法,在升序排列的数组中查找值为key的数组元素的下标。如果数组中存在整数key,则返回下标;否则返回-1。假设数组a中的元素互不相同。输入与输出要求:首先输入两个整数n,m,分别代表数组a中元素的个数与需要查找的整数的个数,n(0<n<=2000000)与m(0<m<=100000)

2021-01-16 15:37:04 385

简易五子棋程序(仅人-人对弈)

C语言编写的简易五子棋64位exe程序,仅人-人对弈功能,无人-机对弈功能。规则是简单的五子连线获胜,棋盘格子满则判定和棋。开局可自由选择黑棋或白棋先走,棋局结束可选择再来一局或结束游戏。

2022-03-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除