1. | 删数问题 【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S’。编程对给定的N和S,寻一种方案使得剩下的数字组成的新数S’最小。 【输入形式】输入有两行: 1.第一行是大整数S。其中S最长可达240位。 2.第二行是整数N。S、N均以非0数字开头。 【输出形式】输出有一行,是在S中删除N位后所得的最小数字S’。 【样例输入1】 178543 4 【样例输出1】13 【样例输入2】 1002 1 【样例输出2】002 【样例说明】样例1中输入整数S=178543,N=4,要求在178543中删除4位,使剩下的数字最小。正确答案为S’ = 13。样例2中输入整数S=1002,N=1,删完一位后S’ = 002,而不是2,即2之前的0也必须输出。 【运行时限】程序一次运行的最长时间限制在15秒内,超出则认为程序错误。 【算法提示】将整数看作字符串形式读入;删数时,从前往后寻第一个比后一个数字大的数字,然后删除之,按照这种方法删除N个数字即得最小数字。 【评分标准】该题要求输出一个大整数的各位数字。结果完全正确得20分,每个测试点4分。上传C语言文件名为delete.c。 |
2. | 扩展字符 【问题描述】 编写一函数expand(s1,s2),用以将字符串s1中的缩记符号在字符串s2中扩展为等价的完整字符,例如将a-d扩展为abcd。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。在main函数中测试该函数:从键盘输入包含缩记符号的字符串,然后调用该函数进行扩展,输出扩展结果。 (教材 P63:Exercise 3-3) 注意: 1.待扩展字符串中有可能包含空格,例如:a-d x-z应扩展成:abcd xyz。所以读入待扩展字符串时,应能够读入包含空格的字符串。 2.只要缩记符号-之后的字符比之前的字符的ASCII码值大,就要将它们之间的所有字符扩展出来,例如:Z-a之间的字符也要扩展出来; 3.特殊情况:a-b-c将被扩展为:abc。a-a将被扩展为:a-a。 【输入形式】 从键盘输入包含扩展符的字符串 【输出形式】 输出扩展后的字符串 【输入样例】 a-c-u-B 【输出样例】 abcdefghijklmnopqrstu-B 【样例说明】 扩展输入a-c-u为:abcdefghijklmnopqrstu,而B比u值小,所以无法扩展,直接输出。 【评分标准】 结果完全正确得20分,每个测试点4分,提交程序文件expand.c。 |
3. | 字母频率统计 【问题描述】 编写程序从标准输入中读入一段英文,统计其中小写字母出现次数,并以柱状图的形式显示其出现次数。 【输入形式】 在标准输入上输入一段英文文章(可能有一行,也可能有多行),在新的一行的开头输入ctrl+z键表示结束。 【输出形式】 在屏幕上依次输出表示每个小写字母出现次数的柱状图(以“*”字符表示柱状图,空白处用空格字符表示,某个小写字母出现多少次,就显示多少“*”字符;柱状图的高度以出现最多的字母次数为准),在最后一行依次输出26个小写字母。 【样例输入】 The computing world has undergone a revolution since the publication of The C Programming Language in 1978. 【样例输出】 【样例说明】 在输入的英文短文中,小写字母a出现了6次,所以其上输出了6个字符"*"。出现次数最多的是字母n,所以柱状图的高度为9个字符。字母j没有出现,所以其上都为空格字符。 【评分标准】 该题要求输出柱状图表示的字母出现次数,共有5个测试点。上传C语言文件名为bar.c。 |
4. | 矩阵运算 【问题描述】 对于多个N阶矩阵,依次进行加、减运算。 【输入形式】 从标准输入读取输入。第一行只有一个整数N(1≤N≤10),代表矩阵的阶数。 接下来是一个矩阵,是N行,每行有N个整数(可能是正、负整数),是矩阵的所有元素。 然后一行只含一个字符“+”或“-”,代表加、减操作。 然后用同样的方式输入另一个矩阵。 后续仍然是运算符和矩阵。直至运算符为“#”时停止计算,将结果输出。 【输出形式】 向标准输出打印矩阵的操作结果。输出N行,每行对应矩阵在该行上的所有元素,每一行末均输出一个回车符。每个元素占5个字符宽度(包括负号),向右对齐,不足部分补以空格。 【输入样例】 3 1 -2 7 2 8 -5 3 6 9 + 3 5 7 -1 2 6一个完整的c语言程序 3 7 10 - 1 -2 7 2 8 -5 3 6 9 # 【输出样例】 (下图中”-”代表空格) ####3####5####7 ###-1####2####6 ####3####7###10 【评分标准】 本题不准使用数学库函数。运行时限1秒,完全正确20分,每个测试点4分。提交程序文件名为matrix.c。 |
5. | 文件拷贝2 【问题描述】 写一程序将一个文件fcopy.in拷贝至另一个文件fcopy.out, 其中在所拷贝的文件中, 多个连续空白符(包括空格符、制表符)只拷贝一个空格符, 其它字符不变。 【输入形式】 源文件名和目标文件名分别为fcopy.in和fcopy.out,程序将从当前目录下读取fcopy.in文件。 【输出形式】 将fcopy.in文件内容拷贝至当前目录下的fcopy.out文件中。在所拷贝的文件中, 多个连续空白符(包括空格符、制表符)只拷贝一个空格符,若非空白符之间有一个制表符,则该制表符也要替换为空格符,其它字符不变。 【输入样例】 假如文件fcopy.in中内容如下: Alcatel provides end-to-end solutions. 【输出样例】 输出文件fcopy.out中内容为: Alcatel provides end-to-end solutions. 【样例说明】 将文件fcopy.in拷贝到fcopy.out,同时做适当的转换。 【评分标准】 其中在所拷贝的文件中, 多个连续空白符(包括空格符、制表符)只拷贝一个空格符,其它字符不变,完全符合要求得20分,每个测试点4分。提交程序名为copy.c。 |
6. | 括号匹配 【问题描述】 假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符。编写程序,判别串中的括号是否正确匹配,即: 1. 各种左、右括号的个数要一致; 2. 不能先出现右括号; 3.其它规则暂不考虑,例如:( ad [ ce ) ef ] 认为是正确的。 【输入形式】 从当前目录下correct.in文件中读入一行字符串。字符串最大长度80,不含空格。 【输出形式】 输出到当前目录下correct.out文件中。输出只有一个单词,如果括号匹配则输出“True”到文件中,否则输出“False”。在输出末尾要有一个回车符。 【输入样例】 设输入文件内容如下: rhe+[35(fjej)w-wr3f[efe{feofds}] 【输出样例】 输出文件内容为: False 【样例说明】 输入字符串为rhe+[35(fjej)w-wr3f[efe{feofds}],在式中“[”与“]”的个数不一致,不符合嵌套规则,故输出为“False”。 【评分标准】 结果正确得20分,每个测试点4分,提交程序名为c0802.c。 |
1. | 凸多边形面积 【问题描述】给出平面上一组顶点的坐标,计算出它们所围成的凸多边形的面积。 【输入形式】从标准输入读取顶点坐标。格式为:第一行是点的个数N(3≤N≤15),后面紧接着N行,每行两个数字 (由空格隔开),分别表示该点的X、Y坐标(0≤X,Y≤32767)。所有点的坐标互不相同,且按顺时针次序给出。 输入数据确保该多边形是一个凸多边形。 【输出形式】向标准输出打印一个浮点数,是该多边形的面积。该浮点数保留两位小数。 【输入样例】 4 3 3 3 0 1 0 1 2 【输出样例】 5.00 【样例说明】输入数据表示了如图所示的四边形。其面积为5.00。 提示:求三角形面积可用海伦公式,求平方根可用<math.h>头文件中定义的sqrt函数。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:points.c。 |
2. | 整数的N进制字符串表示 【问题描述】编写函数itob(n,s,b),用于把整数n转换成以b为基的字符串并存储到s中. 编写程序,使用函数itob(n,s,b)将输入的整数n,转换成字符串s,将s输出.转换后的字符串从最高的非零位开始输出。如果n为负数,则输出的字符串的第一个字符为’-’。b为大于1小于37的任意自然数值。当b=2时,输出字符只可能是’0’和’1’;当b=16时,输出字符串中可能含有字符为’0’-’9’,’a’-’f’(字母以小写输出)。b还可以是其它数值。比如输入n=33,b=17,则输出33的17进制值为"1g"。 【输入形式】控制台输入整数n和b,其中n可以为负数。n和b以空格分隔. 【输出形式】控制台输出转化后的字符串s. 【样例输入】5 2 【样例输出】101 【样例说明】5的二进制就是101 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:itob.c |
3. | 求两组整数的异或集 【问题描述】 从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集“异或”)。 【输入形式】 首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上输入第二组整数,以一个空格分隔,行末有回车换行。 【输出形式】 按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现的整数,以一个空格分隔各个整数)。 【样例输入】 5 1 4 32 8 7 9 -6 5 2 87 10 1 【样例输出】 87 32 10 9 8 7 4 2 -6 【样例说明】 第一组整数为5 1 4 32 8 7 9 -6,第二组整数分别为5 2 87 10 1。将第一组和第二组整数合并(去掉在两组整数中都出现的整数5和1),并从大到小顺序排序后结果为87 32 10 9 8 7 4 2 -6。 【评分标准】该题要求输出两组整数的异或集,共有5个测试点,提交程序文件名为xor.c。 |
4. | 字符串中字符排序 【问题描述】编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。 【输入形式】用户在第一行输入一个字符串。 【输出形式】程序按照字符(ASCII)顺序从小到大排序字符串,并删除重复的字符进行输出。 【样例输入】badacgegfacb 【样例输出】abcdefg 【样例说明】用户输入字符串badacgegfacb,程序对其进行按从小到大(ASCII)顺序排序,并删除重复的字符,最后输出为abcdefg 【评分标准】结果完全正确得20分,每个测试点4分。提交源程序名为stringsort.c |
5. | 超长正整数的减法 【问题描述】 编写程序实现两个超长正整数(每个最长80位数字)的减法运算。 【输入形式】 从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。 1. 第一行是超长正整数A; 2. 第二行是超长正整数B; 【输出形式】 输出只有一行,是长整数A减去长整数B的运算结果,从高到低依次输出各位数字。要求:若结果为0,则只输出一个0;否则输出的结果的最高位不能为0,并且各位数字紧密输出。 【输入样例】 234098 134********8230056 【输出样例】 -134********7995958 【样例说明】 进行两个正整数减法运算, 234098 -134098703578230056 = -134********7995958。 【评分标准】 完全正确得20分,每个测试点4分,提交程序文件名为subtract.c。 |
6. | 字符串替换(新) 【问题描述】 编写程序将一个指定文件中某一字符串替换为另一个字符串。要求:(1)被替换字符串若有多个,均要被替换;(2)指定的被替换字符串,大小写无关。 【输入形式】 给定文件名为。从控制台输入两行字符串(不含空格,行末尾都有回车换行符),分别表示被替换的字符串和替换字符串。 【输出形式】 将替换后的结果输出到文件中。 【样例输入】 从控制台输入两行字符串: in out 文件的内容为: #include <stdio.h> void main() { FILE * IN; if((IN=fopen("in.txt","r"))==NULL) { printf("Can’t !"); return; } fclose(IN); } 【样例输出】 文件的内容应为: #outclude <stdio.h> void maout() { FILE * out; if((out=fopen("","r"))==NULL) { prouttf("Can’t !"); return; } fclose(out); } 【样例说明】 输入的被替换字符串为in,替换字符串为out,即将文件中的所有in字符串(包括iN、In、IN字符串)全部替换为out字符串,并输出保存到文件中。 【评分标准】 该题要求得到替换后的文件内容,共有5个测试点。上传C语言文件名为replace.c。 |
7. | 最长升序子串(选做,不计分) 【问题描述】输入一行字符串,该字符串只由小写英文字母a-z组成,且其中的字符可以重复,最长不超过10000个字符。 从该字符串中按顺序挑选出若干字符(不一定相邻)组成一个新串,称为“子串”。如果子串中每两个相邻的字符或者相等,或者后一个比前一个大,则称为“升序子串”。编程求出输入字符串的最长升序子串的长度。 例如,由输入字符串abdbch可以构成的升序子串有:abd、abch、bbch、abbch等。其中最长的升序子串是abbch,其长度为5。 【输入形式】从标准输入读取一行字符串,该串不含空格,以回车符结束。 【输出形式】向标准输出打印一个正整数,是字符串中最长的升序子串的长度,在行末要输出一个回车符。 【输入样例】abdbch 【输出样例】5 【样例说明】abdbch中最长子串是abbch,长度是5。 【评分标准】结果完全正确得20分,每个测试点4分。上传c语言源程序为up.c。 |
1. | 合并字符串【问题描述】 编写一个函数char * str_bin(char* str1, char* str2), str1、str2是两个有序字符串(其中字符按ASCII码从小到大排序),将str2合并到字符串str1中,要求合并后的字符串仍是有序的,允许字符重复。在main函数中测试该函数:从键盘输入两个有序字符串,然后调用该函数,最后输出合并后的结果。 【输入形式】 分行从键盘输入两个有序字符串(不超过100个字符) 【输出形式】 输出合并后的有序字符串 【输入样例】 aceg bdfh 【输出样例】 abcdefgh 【样例说明】 输入两个有序字符串aceg和bdfh,输出合并后的有序字符串abcdefgh 【评分标准】 结果完全正确得20分,每个测试点4分,提交程序文件名为combine.c。 |
2. | -删除子串【问题描述】编写一个程序,当在一个字符串中出现子串时就删除它。 【输入形式】用户在第一行输入一个字符串,用户在第二行输入一个子串。 【输出形式】程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。 【样例输入】 I am a boy! a 【样例输出】 I m boy! 【样例说明】用户首先输入字符串I am a boy!,然后输出子串a,程序会寻字符串中的子串删除它,最后 将删除后的结果输出:I#m##boy! #表示空格。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:delsubstring.c。 |
3. | 小数形式与科学计数法转换(简)【问题描述】 编写一个程序,将用小数表示的浮点数,转换成科学计数法的形式输出。输入的数据没有符号,小数点前后必有数字,且全为有效数据,即小数点后的末尾数字不为0;小数点前若只有一位数字,可以为0,否则小数点前的最高位数字不为0。 提示:以字符串形式保存相关数据。 【输入形式】 从控制台输入一小数,最后有回车换行符,所有输入的字符数不会超过100。 【输出形式】 以科学计数法形式输出数据。输出的数据由以下几部分构成: 1.底数部分是一个小数或整数,若为小数,则小数点前后必有数字,而且都为有效数字。即:小数点前只有一位大于0的数字,小数点后的末尾数字不能为0。若为整数,则只有一位数字,不带小数点。 2.必有小写字母“e”。 3.指数部分是一个整数,若大于等于0,则不带正号“+”。若小于0,则需要带负号“-”,且整数的最高位数字不为0。 【输入样例1】 0.000000000000002 【输出样例1】 2e-15 【输入样例2】 8.9845623489651700659 【输出样例2】 8.9845623489651700659e0 【输入样例3】 367298599999093453490394859509568659795603.4 【输出样例3】 3.672985999990934534903948595095686597956034e41 【样例说明】 以小数形式输入数据,然后转换成科学计数法形式输出。 【评分标准】 该题要求以科学计数法形式输出数据,提交程序文件名为notation.c。 |
4. | -旋转魔方阵(文件)【问题描述】 输入一个自然数N(2≤N≤9),要求输出如下的魔方阵,即边长为N*N,元素取值为1至N*N,1在 左上角,呈顺时针方向依次放置各元素。 N=3时: 1 2 3 8 9 4 7 6 5 【输入形式】 从标准输入读取一个整数N。 【输出形式】 将结果输出到文件文件file.out。输出符合要求的方阵,每个数字占5个字符宽度,向右对齐,在每一行末均输出一个回车符。 【输入样例】 4 【输出样例】输出文件file.out内容为: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 【评分标准】 本题不准使用数学库函数。结果正确得20分,每个测试点4分,提交程序文件名为magic.c。 |
5. | 全排列数的生成【问题描述】输入整数N( 1 <= N <= 10 ),生成从1~N所有整数的全排列。 【输入形式】输入整数N。 【输出形式】输出有N!行,每行都是从1~N所有整数的一个全排列,各整数之间以空格分隔。各行上的全排列不重复。输出各行遵循“小数优先”原则, 在各全排列中,较小的数尽量靠前输出。如果将每行上的输出看成一个数字,则所有输出构成升序数列。具体格式见输出样例。 【样例输入1】1 【样例输出1】1 【样例说明1】输入整数N=1,其全排列只有一种。 【样例输入2】3 【样例输出2】 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 【样例说明2】输入整数N=3,要求整数1、2、3的所有全排列, 共有N!=6行。且先输出1开头的所有排列数,再输出2开头的所有排列数,最后输出3开头的所有排列数。在以1开头的所有全排列中同样遵循此原则。 【样例输入3】10 【样例输出3】 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 10 9 1 2 3 4 5 6 7 9 8 10 1 2 3 4 5 6 7 9 10 8 1 2 3 4 5 6 7 10 8 9 1 2 3 4 5 6 7 10 9 8 1 2 3 4 5 6 8 7 9 10 1 2 3 4 5 6 8 7 10 9 1 2 3 4 5 6 8 9 7 10 1 2 3 4 5 6 8 9 10 7 …………………… 【样例说明3】输入整数N=10,要求整数1、2、3、……、10的所有全排列。上例显示了输出的前10行。 【运行时限】要求每次运行时间限制在20秒之内。超出该时间则认为程序错误。提示:当N增大时,运行时间将急剧增加。在编程时要注意尽量优化算法,提高运行效率。 【评分标准】该题要求输出若干行整数。如果你的程序计算的结果和标准答案完全一致,则该测试点得10分,否则该测试点得分为0。 |
6. | -单词排序(命令行参数)【问题描述】 编写一个程序,从一个文件中读入单词(即:以空格分隔的字符串),并对单词进行排序,删除重复出现的单词,然后将结果输出到另一个文件中。 【输入形式】 源文件名和目标文件名在执行时作为程序命令行参数输入,例如若程序名为sort, 源文件名和目标文件名分别为sort.in和sort.out,则命令行为:sort sort.in sort.out。 程序将从当前目录下sort.in文件中读入单词。 【输出形式】 对单词进行排序,删除重复出现的单词,然后将结果输出到文件sort.out中。 【输入样例】 假如sort.in文件内容如下: rrr sss aaa bbb ccc ddf aaa dd 【输出样例】 sort.out文件内容为: aaa bbb ccc dd ddf rrr sss 【样例说明】 读入文件sort.in,做适当的排序,并删除重复出现的单词,输出到文件sort.out 【评分标准】 对单词进行排序,删除重复出现的单词,符合此要求得20分,每个测试点4分,提交程序名为sortwords.c。 |
1. | --文件重排【问题描述】近几年有人提出了这样一种算法,它虽然只是单纯地对文件进行重排,本身并不压缩文件。 该算法如下:对一个长度为n的字符串S,首先根据它构造n个字符串,其中第i个字符串由将S的前i-1个字符置于末尾得到。然后把这n个字符串按照首字符从小到大排序,如果两个字符串的首字符相等,则按照它们在S中的位置从小到大排序。排序后的字符串的尾字符可以组成一个新的字符串S’,它的长度也是n,并且包含了S中的每一个字符。最后输出S’以及S的首字符在S’中的位置p。 【输入文件】输入文件filezip.in包含两行,第1行是一个整数n(1 <=n<=10000),代表S的长度,第2行是字符串S。 【输出文件】 输出文件filezip.out包含两行,第1行是S’,第2行是整数p。 【输入样例】 7 example 【输出样例】 xelpame 7 【样例说明】长度为7的字符串example经转换后变为xelpame,example的首字符在新字符串中的位置是7。 【评分标准】如果你的程序输出正确得20分,每个测试点4分。提交程序名为存file.c。 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论