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

更新时间:2024-05-05 23:01:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

删数问题 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个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集“异或”)。

【输入形式】 首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上输入第二组整数,以一个空格分隔,行末有回车换行。 【输出形式】 按从大到小顺序排序输出合并后的整数集(去掉在两组整数中都出现的整数,以一个空格分隔各个整数)。 【样例输入】 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 134098703578230056 【输出样例】 -134098703577995958 【样例说明】 进行两个正整数减法运算, 234098 -134098703578230056 = -134098703577995958。 【评分标准】 完全正确得20分,每个测试点4分,提交程序文件名为subtract.c。 字符串替换(新) 6. 【问题描述】 编写程序将一个指定文件中某一字符串替换为另一个字符串。要求:(1)被替换字符串若有多个,均要被替换;(2)指定的被替换字符串,大小写无关。 【输入形式】 给定文件名为filein.txt。从控制台输入两行字符串(不含空格,行末尾都有回车换行符),分别表示被替换的字符串和替换字符串。 【输出形式】 将替换后的结果输出到文件fileout.txt中。 【样例输入】 从控制台输入两行字符串: in out 文件filein.txt的内容为: #include void main() { FILE * IN; if((IN=fopen(\ { printf(\’t open in.txt!\ return; } fclose(IN); } 【样例输出】 文件fileout.txt的内容应为: #outclude void maout() { FILE * out; if((out=fopen(\ { prouttf(\’t open out.txt!\ return; } fclose(out); } 【样例说明】 输入的被替换字符串为in,替换字符串为out,即将文件filein.txt中的所有in字符串(包括iN、In、IN字符串)全部替换为out字符串,并输出保存到文件fileout.txt中。 【评分标准】 该题要求得到替换后的文件内容,共有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。 全排列数的生成【问题描述】输入整数N( 1 <= N <= 10 ),生成从1~N所有整数的全排列。 5. 【输入形式】输入整数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文件内容为: aaabbb ccc dd ddf rrrsss 【样例说明】 读入文件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。 -字符串统计排序【问题描述】编写一个程序,接收用户输入的一个字符串(可以包含空格),统计其2. 中所有出现过的所有字符,并按照频率高低的顺序排列输出。频率相同的字符按输入顺序输出。 【输入形式】用户在第一行输入一个字符串,以回车结束输入。 【输出形式】程序统计字符串中出现的所有字符,然后按照字符出现频率大小排序输出,频率相同时,按输入顺序输出。输出形式规定为每行输出4个字符数据,输出格式为:字符-出现次数。每个字符-出现次数输出中间用一个空格分隔,每行末尾没有空格。程序输出结尾有一个回车。 【样例输入】 The job requires an agile mind. 【样例输出】 #-5 e-4 i-3 r-2 a-2 n-2 T-1 h-1 j-1 o-1 b-1 q-1 u-1 s-1 g-1 l-1 m-1 d-1 .-1 #表示空格(在程序请输出空格,而不是字符’#’,这里只是表示而已。) 【样例说明】用户首先输入字符串The job requires an agile mind. 程序统计完毕之后按照每行4个统计结果输出,字符串中有5个空格,所以输出为#-5,#表示空格。字符’b’和’T’出现次数同为1,因为输入时’b’先于’T’输入,所以输出时也先打印’b’的统计信息。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:frequence.c --加密文件【问题描述】有一种加密方法为:其使用一个字母串(可以含重复字母,字母个数不超过3. 50)作为密钥。假定密钥单词串为feather,则先去掉密钥单词中的重复字母得到单词串feathr,然后再将字母表中的其它字母以反序追加到feathr的后面: f e a t h r z y x w v u s q p o n m l k j i g d c b 加密字母的对应关系如下: a b c d e f g h i j k l m n o p q r s t u v w x y z f e a t h r z y x w v u s q p o n m l k j i g d c b 其中第一行为原始英文字母,第二行为对应加密字母。其它字符不进行加密。编写一个程序,用这种密码加密文件。假定要加密的文件名为encrypt.txt及加密后的文件名为output.txt,并假定输入文件中字母全为小写字母,并且输入密钥也全为小写字母。 【输入形式】从标准输入中输入密钥串,并从文件encrypt.txt中读入要加密的内容。 【输出形式】加密后结果输出到文件output.txt中。 【样例输入】 feather 和文件encrypt.txt中内容,例如被加密的文件encrypt.txt中内容为: c language is wonderful. 【样例输出】加密后output.txt文件中内容为: aufqzjfzh xl gpqthmrju. 【样例说明】首先将给定的密钥单词去除重复字母,然后按照上面的加密对应表对encrypt.txt文件内容进行加密即可得到加密后的文件,其中只对英文字母进行加密对换,并且假设encrypt.txt中的英文字母全是小写字母。 【评分标准】该题要求对文件进行加密,共有5个测试点。提交程序名为encrypt.c -程序相似性比较方法(变量)【问题描述】 4. 程序相似性比较方法之一就是将源程序中无关信息(如变量名、函数名、空白符及注释等)删除后的代码进行比较。编写程序将当前目录下C源文件input.c中的变量名、空白字符删除后写到另一个文件output.c中。 【输入形式】 要处理的C源文件名为input.c,在当前目录下,并假设该文件符合以下条件: 1、程序中只有一个main函数; 2、最多只可能出现一个int类型变量列表(也可能没有),无其它类型变量说明或定义,并且在程序其它地方不会再出现int关键字; 3、定义的int类型变量的个数不超过10个,变量名的长度不超过20个字符; 4、源文件中不含注释; 5、程序没有语法错误; 6、字符串常量中不会出现与变量名相同的串; 7、程序中所有标识符均与其它部分有空格分隔(即可用格式串%s读取),且所有标识符的长度不超过20个字符。 【输出形式】 将源程序文件input.c处理后的结果写入到当前目录下的文件output.c中,输出要求: 1、所有空白字符(包括空格、制表符和回车符)都要删除; 2、定义的int类型变量都要删除,但不删除定义时用到的分隔符’,’; 3、语句中所有int类型变量名都要删除。 【样例输入】 假如input.c文件内容如下: #include main () { int a , b , sum ; scanf ( \ sum = a + b ; printf ( \} 【样例输出】 output.c内容应为: #includemain(){int,,;scanf(\【样例说明】 在源文件input.c中,int类型的变量有三个:a,b,sum,将程序中所有空白符(空格、制表符、回车符)和变量名a、b、sum删除后,就只剩一行字符串(见output.c中内容)。 提示: 1、可以用fscanf(fp,\函数将fp文件中的所有内容以单词串的形式读出,到达文件结尾时该函数返回EOF; 2、可以用strcmp函数比较两个字符串,用strcpy函数拷贝字符串,这两个函数定义在头文件中; 3、可通过查找int定义列表找到要删除的单词,即:int单词后(分号之前)的所有单词(逗号除外)都是要删除的变量名。 【评分标准】 该题要求删除源文件中变量、空白符的内容,共有5个测试点。上传C语言文件名为same.c。 【问题描述】 5. 查找C源程序文件中控制流关键字(while, for, if)的出现位置。按出现顺序输出其出现的位置(用行数和在该行上第几个字符表示)。要求字符串常量中出现的关键字不应计算,同时该C程序满足下列规定: 1、该程序符合C语言语法要求。 2、双引号只会用在字符串常量中,其它地方不会出现双引号字符\。 3、程序中的所有标识符只由字母和数字组成。 4、程序中没有注释语句。 【输入形式】 C源程序从当前目录下的in.c文件中读入。 【输出形式】 按照出现顺序在标准输出上输出关键字出现的位置,每行输出一个关键字的位置。位置的输出格式是:先输出关键字,后面紧跟着冒号:,然后是用整数表示的行数和在该行上的位置,两整数之间用一个逗号,分隔。 【输入样例1】 假如in.c文件中程序为: #include int main() { inti , n ; int a[100]; scanf ( \ for ( i=0 ; i int main() { int i,n,sum,mul,if1; intforAndwhile[100]; sum=0;mul=1; scanf(\ for(i=0;i

tail.in文件内容为: Alcatel provides end-to-end solutions. It enables enterprises to deliver content to any type of user. lcatel operates in 130 countries. Alcatel focus on optimizing their service offerings and revenue streams. 【输出样例】 屏幕将显示: lcatel operates in 130 countries. Alcatel focus on optimizing their service offerings and revenue streams. 【样例说明】 使用tail -2 tail.in输出文件tail.in的最后两行。 注意:文件末尾行有可能没有回车换行。 【评分标准】 如果你的程序输出正确得20分,每个测试点4分。提交程序名为tail.c。 --统计整数【问题描述】 1. 输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。 【输入形式】 从标准输入读取输入。第一行只有一个数字N(1≤N≤10000),代表整数的个数。以后的N行每行有一个整数。 【输出形式】 向标准输出打印出现次数最多的那个数字。 【输入样例】 6 11 0 -1 20 0 300 【输出样例】 0 【样例说明】 输入6个整数,其中出现次数最多的是0,共出现两次。 【评分标准】 本题不准使用数学库函数。运行时限1秒,正确得20分,每个测试点4分,提交程序名为count.c。 学生记录【问题描述】 2. 从键盘中读入最多不超过50个学生的学生信息(包括空格隔开的姓名、学号、年龄信息,以学号从低到高排序) 【输入形式】 每次键盘读入最多不超过50个学生的学生信息: 第一行为学生人数; 后面每一行为空格隔开的学生学号、姓名、年龄,其中学号和年龄都是整数。 【输出形式】 分别以姓名顺序(从低到高)和年龄顺序(从低到高)将学生信息输出,每行输出一位学生的信息,其中学号占3位,姓名(英文)占6位,年龄占3位,均为右对齐。年龄相同时按姓名从低到高排序。两种顺序的输出结果用一行空行相隔。 【输入样例】 4 1 aaa 22 45 bbb 23 54 ddd 20 110 ccc 19 【输出样例】 1 aaa 22 45 bbb 23 110 ccc 19 54 ddd 20 110 ccc 19 54 ddd 20 1 aaa 22 45 bbb 23 【样例说明】 从键盘输入四个学生记录,分别按姓名和年龄排序并输出。 【评分标准】 分别以姓名顺序和年龄顺序输出学生信息,完全正确得20分,每个测试点4分,提交程序名为students.c。 -电话薄排序【问题描述】编写一个程序,输入N个用户的姓名和电话号码,按照用户姓名的词典顺3. 序排列输出用户的姓名和电话号码。 【输入形式】用户首先在第一行输入一个正整数,该正整数表示待排序的用户数目,然后在下面多行输入多个用户的信息,每行的输入格式为:姓名电话。以回车结束每个用户的输入。 【输出形式】程序输出排序后的结果。每行的输出结果格式也是:姓名电话。姓名和电话字段中间没有空格,要求用户姓名不能超过10个字符,超出10个字符时候只取前10个字符作为姓名。电话号码不能超过10位,超过10位时只按10位处理。输出姓名、电话字段各占12个字符宽,输出格式采用默认对齐方式。另外,用户的数量要求不超过50个。 【样例输入】 3 amethystic 1234567 amethyst 654321 wangwei 7645434 【样例输出】 ####amethyst######654321 ##amethystic#####1234567 #####wangwei#####7645434 【样例说明】程序根据用户姓名的词典顺序排序,最后按照姓名#电话的格式输出。另外,由于规定姓名和电话之间用空格分割,所以输入姓名时请将姓和名一起输入,中间不要有空格。另外输出时候程序将自动补齐12字符宽。程序输出结尾有个回车符。 【评分标准】完全正确为20分,每个测试点4分。提交程序文件名为telsort.c --猴子选大王【问题描述】要从n只猴子中选出一位大王。它们决定使用下面的方法: 4. n只猴子围成一圈,从1到n顺序编号。从第q只猴子开始,从1到m报数,凡报到m的猴子退出竞选,下一次又从退出的那只猴子的下一只开始从1到m报数,直至剩下的最后一只为大王。请问最后哪只猴子被选为大王。 【输入形式】控制台输入三个整数n,m,q。 【输出形式】输出最后选为大王的猴子编号。 【样例输入】 7 4 3 【样例输出】 4 【样例说明】输入整数n = 7,m = 4,n = 3,输出4 【评分标准】本题要求输出最后被选为大王的猴子编号,完全正确得20分,每个测试点4分。上传C语言文件名为monkey.c。 -多项式相乘【问题描述】 5. 编写一个程序实现两个一元多项式相乘。 【输入形式】 首先输入第一个多项式中系数不为0的项的系数和指数,以一个空格分隔。且该多项式中各项的系数均为0或正整数,系数和最高幂次不会超过int类型的表示范围。对于多项式anxn +a n-1 x n-1 + … + a1x1 + a0x0 的输入方法如下: an n a n-1 n-1 … a1 1 a0 0 即相邻两个整数分别表示表达式中一项的系数和指数。在输入中只出现系数不为0的项。最后一项的指数后没有空格,只有一个回车换行符。 按照上述方式再输入第二个多项式。 【输出形式】 将运算结果输出到屏幕。将系数不为0的项按指数从高到低的顺序输出,每次输出其系数和指数,均以一个空格分隔,最后一项的指数后也可以有一个空格。 【样例输入】 10 80000 2 6000 7 300 5 10 18 0 3 6000 5 20 8 10 6 0 【样例输出】 30 86000 50 80020 80 80010 60 80000 6 12000 21 6300 10 6020 31 6010 66 6000 35 320 56 310 42 300 25 30 130 20 174 10 108 0 【样例说明】 输入的两行分别代表如下表达式: 10x80000 + 2x6000 + 7x300 + 5x10 + 18 3x6000 + 5x20 + 8x10 + 6 相乘结果为: 30x86000 + 50x80020 + 80x80010 + 60x80000 + 6x12000 + 21x6300 + 10x6020 + 31x6010 + 66x6000 + 35x320 + 56x310 + 42x300 + 25x30 + 130x20 + 174x10 + 108 提示:利用链表存储多项式的系数和指数。 【评分标准】 该题要求输出相乘后多项式中系数不为0的系数和指数,共有5个测试点。上传C语言文件名为multi.c。 【问题描述】 6.

对输入的一篇文档,统计出现的所有单词及其所在行号和列号,即生成类似于词典的单词索引。将其结果以规定格式输出。

【输入形式】

程序从文件crossin.txt读入一篇文档。该文档由若干行组成,每行中包含一系列单词。 行号和列号由1开始计数。该文档中单词总量不确定,每个单词长度最大不超过100个字符。

【输出形式】

将输入文档中所有出现的单词及其所在行号和列号输出到文件crossout.txt中。 输出有若干行,每一行都是文档中出现的一个单词。按如下规格输出: word:(line1,colm1),(line2,colm2), … ,(lineN,colmN)

其中word是单词,后面紧跟一个冒号,然后是以逗号隔开的出现的行号和列号

(line1,colm1),(line2,colm2),等等。在该行上各字符紧密输出,不使用空格分隔。在输出时遵循以下规定:

1. 只输出所有由英文字母(包括连字符)构成的单词,数字或包含其它特殊字符的单词不用输出,而且连字符不能作为单词首字符。先输出大写A—Z开头的字符,再输出小写a—z开头的字符。 2. 各单词后面的行号和列号从小到大排列。 3. 统计的单词不包括如下四个单词: a an the and

【样例输入】

Alcatel provides end-to-end solutions.

It enables enterprises to deliver content to any type of user. lcatel operates in 130 countries.

Alcatel focus on optimizing their service offerings and revenue streams.

【样例输出】

Alcatel:(1,1),(4,1) It:(2,1) any:(2,46) content:(2,35) countries:(3,24) deliver:(2,27) enables:(2,4) end-to-end:(1,18)

enterprises:(2,12) focus:(4,9) in:(3,17) lcatel:(3,1) of:(2,55) offerings:(4,43) on:(4,15) operates:(3,8) optimizing:(4,18) provides:(1,9) revenue:(4,57) service:(4,35) solutions:(1,29) streams:(4,65) their:(4,29) to:(2,24),(2,43) type:(2,50) user:(2,58) 【评分标准】 该题要求生成所指定文件的单词索引,提交程序名为index.c。

本文来源:https://www.bwwdw.com/article/8r2g.html

Top