北航大一上c语言第四五六七八次作业 下载本文

内容发布更新时间 : 2024/5/18 15:48:08星期一 下面是文章的全部内容请认真阅读。

删数问题 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 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。 文件拷贝2 5. 【问题描述】 写一程序将一个文件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。 提示:求三角形面积可用海伦公式,求平方根可用头文件中定义的sqrt函数。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:points.c。 整数的N进制字符串表示 2. 【问题描述】编写函数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进制值为\。 【输入形式】控制台输入整数n和b,其中n可以为负数。n和b以空格分隔. 【输出形式】控制台输出转化后的字符串s. 【样例输入】5 2 【样例输出】101 【样例说明】5的二进制就是101 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:itob.c 求两组整数的异或集 3. 【问题描述】 从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集“异或”)。