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小时内删除。