C语言 课后作业题
C语言作业题
【输出形式】用户在下一行显示输出结果
【样例输入】3.47
【样例输出】3
【样例说明】与输入值3.47接近的整数为3和4,3.47比3.5小,舍掉小数部分,结果为3。
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:c0104.c。
当前编程题:第一次作业--- 计算空格换行个数
5. 【问题描述】
编写一程序,分别计算所输入的字符串中空格,换行符的个数。
【输入形式】
输入可以是键盘上的任意字符。
【输出形式】
分别输出空格,换行符的个数,输出的结果一行显示,数字之间以空格格开。
【输入样例】
bb ss pp=
fz
【输出样例】
2 1
【样例说明】
字符b与s之间有一个空格,s与p之间有一个空格,p与f之间有一个换行。
【评分标准】
结果完全正确得20分,每个测试点4分。提交程序名为:c0105.c。
当前编程题:第一次作业--- 整数组合(选做题)
6. 【问题描述】
假设unsigned short类型占16位,x、y、z都是short类型。编写一程序,从键盘输入x,y 的值(十进制形式),然后将x的高8位作为z的高8位,y的高8位作为z的低8位,最后输出z的值(十进制形式)。
【输入形式】
以十进制形式输入x和y的值,以空格隔开。
【输出形式】
以十进制形式在新的一行上输出z值。
【输入样例】
840 2177
【输出样例】
776
【样例说明】
840的二进制形式为:0000 0011 0100 1000
2177的二进制形式为:0000 1000 1000 0001
将840的高8位作为结果的高8位,2177的高8位作为结果的低8位,
所以结果为:0000 0011 0000 1000,即十进制形式为:776
【评分标准】
结果完全正确得20分,每个测试点4分。提交程序名为:c0106.c。
当前编程题:第二次作业--- 数字排序
1. 【问题描述】编写一个程序,将输入的三个数从小到大排列出来。
【输入形式】用户在第一行输入三个数字,每个数字用空格分开。
【输出形式】程序在下一行按照从小到大的顺序将三个数字输出出来,每个数字也用空格分开。要求程序可以处理整数和浮点数两种输入情况的比较。
【样例输入】2.4 5.6 1.5
【样例输出】1.5#2.4#5.6 #表示空格(要求输出时输出空格,而不是输出#,这里#只是表示空格而已!)
【样例说明】输入3个数字,每个数字之间用空格分开,并且进行从小到大排列,最后进行输出。这里的数字可以是整数,也可以是浮点数。
提示:输入时以%f格式读入到float类型的变量中,排完序以后,输出时以%g格式输出即可。
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:sort.c。
当前编程题:第二次作业--- 找最大最小整数
2. 【问题描述】编写一个程序,用户输入若干整数,试找出其中的最大数和最小数。【输入形式】用户在第一行待输入数据个数,在第二行输入数据。
【输出形式】程序在下一行输出数据的最大值和最小值
【样例输入】
5
89 62 96 74 52
【样例输出】96 52
【样例说明】用户第一次输入的为数据个数,在下一行依次输入数据。输出为5个数中的最大值和最小值,输出时候两个数之间用空格分隔。
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:getmaxandmin.c 当前编程题:第二次作业--- 日期天数转换
3. 【问题描述】编写一个程序,用户输入日期,计算该日期是这一年的第几天。
【输入形式】用户在第一行输入一个日期(年月日,中间以空格分割)
【输出形式】程序在下一行输出一个整数
【样例输入】2006 2 21
【样例输出】52
【样例说明】用户以年月日的格式输入,中间以空格分割,程序计算出该天是输入年份的第
几天并输出该天数。另外还需要判断这一年是否为闰年。
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:datetoday.c
当前编程题:第二次作业--- 求和
4. 【问题描述】编写一个程序,求s=1+(1+2)+(1+2+3)+...+(1+2+3+...+n)。
【输入形式】输入一个正整数n,根据求s公式计算s并输出。
【输出形式】输出的为s的结果。
【样例输入】5
【样例输出】35
【样例说明】用户输入一个正整数,按照公式将输入值赋给n,输出计算后的结果。
【评分标准】结果完全正确得20分,每个测试点4分。
当前编程题:第二次作业--- 简易计算器
5. 【问题描述】编程实现简易的计算器:读入两个整数运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,
其中op可以是+,-,*,/.
【输入形式】控制台输入运算数和运算符:
1.首先输入以空格分隔的两个整数,分别是data1和data2;
2.输入一个字符作为运算符op,op可以是’+’,’-’,’*’,’/’。
输入时,data1、data2、op之间各留有一个空格。具体格式见样例输入。
【输出形式】控制台输出运算结果
【样例输入】23 5 *
【样例输出】115
【样例说明】输入中先后输入第一个运算数23,第二个运算数5,运算符’*’,要求对23和5进行乘法运算。计算结果为115。
【评分标准】该题共20分,每个测试点4分。
本题要求上传程序的源文件。所采用语言可以是C(.c).即所上传的文件名为calculator.c
当前编程题:第二次作业--- 正整数的打印
6. 【问题描述】给出一个不多于5位的正整数,要求:
1.求出它是几位数。
2.分别打印出每一位数字。
3.按照逆序打印出每一位数字。
【输入形式】控制台输入该正整数。
【输出形式】控制台分行输出输出结果。
【样例输入】1234
【样例输出】
4
1234
4321
【样例说明】1234位数为4,分别为1,2,3,4,逆序为4321
【评分标准】该题共有三个输出整数,完全正确得10分,每答错一个扣掉4分,直至得分为0。本题要求上传程序的源文件。所采用语言可以是C(.c)。主文件名设定为intprint.c
当前编程题:第三次作业--- 求水仙花数
1. 【问题描述】编写一个程序,输入一个正整数N(N大于等于100小于等于999),求出100~N之间的所有水仙花数。所谓的水仙花数是:如果一个三位数的个位数、十位数、百位数的立方和等于该数自身,就称这个数为水仙花数。
【输入形式】输入一个正整数N。
【输出形式】输出从100到N之间的所有水仙花数,每个数以回车结束。
【样例输入】
400
【样例输出】
153
370
371
【样例说明】输入一个的正整数400,输出为100~400之间的水仙花数153,370,371 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:shuixianhua.c。
当前编程题:第三次作业--- 时钟指针
2. 【问题描述】普通时钟都有时针和分针,在任意时刻时针和分针都有一个夹角,并且假设时针和分针都是连续移动的。现已知当前的时刻,试求出该时刻时针和分针的夹角A (0≤A≤180)。
注意:当分针处于0分和59分之间时,时针相对于该小时的起始位置也有一个偏移角度。【输入形式】从标准输入读取一行,是一个24小时制的时间。格式是以冒号(“:”)分隔的两个整数m(0≤m≤23)和n(0≤n≤59),其中m是小时,n是分钟。
【输出形式】向标准输出打印结果。输出一个浮点数A,是时针和分针夹角的角度值。该浮点数保留3位小数值。
【输入样例】
8:10
【输出样例】
175.000
【样例说明】8:10那个时刻时针与秒针的夹角是175.000度
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:clock.c。
当前编程题:第三次作业--- 打印正六边形
3. 【问题描述】编写一个程序,输入一个正整数N,在屏幕上用‘*’打印以N为边长的正六边形。
【输入形式】输入一个正整数N。
【输出形式】屏幕上输出以N为边长的正六边形。
【样例输入】
4
【样例输出】
****
* *
* *
* *
* *
* *
****
【样例说明】输入的为一个正整数,打印输出一个以这个正整数为边长的正六边形.
###****
##*####*
#*######*
*########*
#*######*
##*####*
###****
#号代表空格。
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:libianxing.c。
当前编程题:第三次作业--- 判断可逆素数
4. 【问题描述】若将某一素数的各位数字的顺序颠倒后得到的数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆素数的函数,在主函数中输入一个整数,再调用此函数进行判断
【输入形式】用户在第一行输入一个整数。
【输出形式】程序在下一行输出yes或是no,yes表示此数是可逆素数,no表示不是。用户输入的数必须为正整数。注意:yes或是no全是小写输出。
【样例输入】23
【样例输出】no
【样例说明】用户输入23,23各位数字颠倒之后得到32,23是素数,但32不是素数,所以23不是可逆素数。
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:getprimenum.c
当前编程题:第三次作业--- 回文数
5. 【问题描述】所谓“回文数”是指具有如下性质的整数:一个整数,当它的各位数字逆序排列,形成的整数与原整数相同,这样的数称为回文数。例如,素数11,373,其各位数字对换位置后仍然为11,373,因此这两个整数均为回文数。编写函数int loop(int x),判断一个整数是否为回文数,如果x是回文数则返回1,否则返回0。编写程序loop.c,接收控制台输入的两个整数a,b。调用loop函数输出a到b之间(包括a和b)的所有回文数【输入形式】控制台输入两个整数a和b(必有a
【输出形式】输出有若干行,每行有一个a和b之间的回文数。输出各行上的数字不重复,且从小至大依次按序输出。
【样例输入】3 120
【样例输出】
3
4
5
6
7
8
9
11
22
33
44
55
66
77
88
99
101
111
【样例说明】输入整数a=3,b=120,要求输出所有[3, 120]之间的回文数。按升序分行输出所有符合题意的整数。
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:loop.c。
当前编程题:第三次作业--- 矩形相交
6. 【问题描述】
平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。(0≤a,b≤1000)
【输入形式】
从标准输入读取两行以空格分隔的整数,格式如下:
Ax1 Ay1 Ax2 Ay2
Bx1 By1 Bx2 By2
其中(x1,y1)和(x2,y2)为矩形对角线上端点的坐标。各坐标值均为整数,取值在0至1000之间。
【输出形式】
向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。在输出末尾要有一个回车符。
【输入样例】
0 0 2 2
1 1 3 4
【输出样例】
1
【评分标准】
结果完全正确得20分,每个测试点4分,提交程序文件名为area.c。
当前编程题:第四次作业--- 整数各位数字求和
1. 【问题描述】
编写函数int sum(int x),求整数x的各位数字之和。
在main函数中测试该函数:从键盘输入一非负整数,然后调用sum函数计算各位数字之和并输出结果。
【输入形式】
输入一个正整数。
【输出形式】
输出该整数各位数字之和。
【样例输入】
58
【样例输出】
13
【样例说明】
输入整数58,其各位数字之和为:5+8 = 13。
【评分标准】
结果完全正确得20分,每个测试点4分,提交程序文件名称为:sum.c。
当前编程题:第四次作业--- 整数合并
2. 【问题描述】
编写一函数int comb(int a,int b),将两个两位数的正整数a、b合并形成一个整数并返回。合并的方式是:将a的十位和个位数依次放在结果的十位和千位上,b的十位和个位数依次放在结果的个位和百位上。例如,当a=45,b=12。调用该函数后,返回5241。要求在main函数中调用该函数进行验证:从键盘输入两个整数,然后调用该函数进行合并,并输出合并后的结果。
【输入形式】
输入两个两位数的正整数,以空格隔开。
【输出形式】
输出合并后的正整数。
【输入样例】
45 12
【输出样例】
5241
【评分标准】
结果完全正确得20分,每个测试点4分,提交程序文件名称为:combine.c。
当前编程题:第四次作业--- 圆分割
3. 【问题描述】用直线对圆进行一次分割,可以把圆分成两块。第二次分割,最多可以分成4块。第三次最多可以分成7块(如图)。给定正整数N(1≤N≤65535),求经过N次分割后,最多能把圆分成多少块。
【输入文件】从标准输入读取输入。只有一个整数N,代表分割的次数。
【输出文件】向标准输出打印结果。输出只有一个数字,是经过N次分割后最多分成的块数。在行末要输出一个回车符。
【输入样例】3
【输出样例】7
【样例说明】把圆分割三次,最多可以分成7块
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:cut.c。
当前编程题:第四次作业--- 求最大公因子
4. 【问题描述】用递归方法编写求最大公因子程序。两个正整数x和y的最大公因子定义为:如果y<=x且x mod y=0时,gcd(x,y)=y;如果y>x时,gcd(x,y)=gcd(y,x);其他情况,
gcd(x,y)=gcd(y,x mod y)
【输入形式】用户在第一行输入两个数字,数字之间用空格分割。
【输出形式】程序在下一行输出前面输入的两个数字的最大公因子。
【样例输入】36 24
【样例输出】12
【样例说明】用户输入36,24,程序输出它们的最大公因子12
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:gcd.c
当前编程题:第四次作业--- 魔方阵
5. 【问题描述】输入一个自然数N(1≤N≤9),要求输出如下的魔方阵,即边长为2*N-1,N在中心出现一次,其余位置上的数字从外向中心逐渐增大。
N=3时:
11111
12221
12321
12221
11111
N=4时:
1111111
1222221
1233321
1234321
1233321
1222221
1111111
【输入形式】从标准输入读取一个整数N。
【输出形式】向标准输出打印结果。输出符合要求的方阵,每个数字占一个字符宽度,在每一行末均输出一个回车符。
【输入样例】3
【输出样例】
11111
12221
12321
12221
11111
【样例说明】输入自然数3,则输出边长为5的方阵,3在方阵的中间出现一次,其余位置上的数字从外向中心逐渐增大。
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:magic.c。
当前编程题:第四次作业--- 杨辉三角形
6. 【问题描述】
在屏幕上显示如下杨辉三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
… … … … … … …
【输入形式】
从键盘输入整数n(n>=0)
【输出形式】
在屏幕上输出n+1行杨辉三角形。
【输入样例】
3
【输出样例】
------***1
----***1***1
--***1***2***1
***1***3***3***1
其中-和*都是空格位
即每个数字占四位!
【评分标准】
结果完全正确得20,每个测试点4分,提交程序文件名称为:triangle.c。
(算法提示:杨辉三角形中的数,是(x+y)的n(n>=0)次方幂展开式中各项的系数。对这些系数,可以提炼出有规律的数学公式,故可利用递归方法求解。)
当前编程题:第五次作业--- 求差集
1. 【问题描述】两个集合的差集定义如下:
集合A、B的差集,由所有属于A但不属于B的元素构成。
输入两个集合A、B,每个集合中元素都是自然数。求集合A、B的差集。
【输入形式】
从标准输入接收集合中的自然数元素,以空格分隔。-1表示输入结束。
其中,每个集合都不输入重复的元素。
【输出形式】
输出差运算后集合中的元素,以空格分隔。输出元素的顺序与原有集合A输入的顺序一致。如果A、B的差集为空集,则不输出任何数值。
【样例输入】
2 8
3
4 -1
6 1 4 9 -1
【样例输出】
2 8 3
【样例说明】从标准输入接收集合中的自然数元素,输出集合A、B的差集。
【评分标准】该题要求输出差运算后集合中的元素,结果完全正确得20分,每个测试点4分。上传C语言文件名为sets.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进制值为"1g"。
【输入形式】控制台输入整数n和b,其中n可以为负数。n和b以空格分隔.
【输出形式】控制台输出转化后的字符串s.
【样例输入】5 2
【样例输出】101
【样例说明】5的二进制就是101
【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:itob.c
当前编程题:第五次作业--- 凸多边形面积
3. 【问题描述】给出平面上一组顶点的坐标,计算出它们所围成的凸多边形的面积。【输入形式】从标准输入读取顶点坐标。格式为:第一行是点的个数N(3≤N≤15),后面紧接着N行,每行两个数字(由空格隔开),分别表示该点的X、Y坐标(0≤X,Y≤32767)。所有点的坐标互不相同,且按顺时针次序给出。
输入数据确保该多边形是一个凸多边形。
【输出形式】向标准输出打印一个浮点数,是该多边形的面积。该浮点数保留两位小数。【输入样例】4
3 3
3 0
1 0
1 2
【输出样例】
5.00
【样例说明】输入数据表示了如图所示的四边形。其面积为5.00。
【评分标准】本程序允许使用数学库函数,结果完全正确得20分,每个测试点4分。提交程序名为:points.c。
当前编程题:第五次作业--- 删数问题
4. 【问题描述】输入一个高精度的大正整数S(S最长可达240位),去掉其中任意N位数字后剩下的数字按原次序组成一个新的正整数S’。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数S’最小。
【输入形式】输入有两行:
1.第一行是大整数S。其中S最长可达240位。
2.第二行是整数N。S、N均以非0数字开头。
【输出形式】输出有一行,是在S中删除N位后所得的最小数字S’。
【样例输入】
178543
4
【样例输出】13
【样例说明】输入整数S=178543,N=4,要求在178543中删除4位,使剩下的数字最小。正确答案为S’ = 13。
【运行时限】程序一次运行的最长时间限制在15秒内,超出则认为程序错误。
【评分标准】该题要求输出一个大整数的各位数字。结果完全正确得20分,每个测试点4分。上传C语言文件名为delete.c。
当前编程题:第五次作业--- 扩展字符
5. 【问题描述】
编写一函数expand(s1,s2),用以将字符串s1中的缩记符号在字符串s2中扩展为等价的完整字符,例如将a-d扩展为abcd。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。在main函数中测试该函数:从键盘输入包含缩记符号的字符串,然后调用该函数进行扩展,输出扩展结果。
(教材P63:Exercise 3-3)
【输入形式】
从键盘输入包含扩展符的字符串
【输出形式】
输出扩展后的字符串
【输入样例】
a-c-u-B
【输出样例】
abcdefghijklmnopqrstu-B
【样例说明】
扩展输入a-c-u为:abcdefghijklmnopqrstu,而B比u值小,所以无法扩展,直接输出。【评分标准】
结果完全正确得20分,每个测试点4分,提交程序文件expand.c。
当前编程题:第五次作业--- 判断出栈序列
6. 【问题描述】对于一个栈,已知元素的进栈序列,判断一个由栈中所有元素组成的排列是否是可能的出栈序列。
比如,进栈序列为1 2 3 4,则可能的出栈序列有4 3 2 1,1 4 3 2等。而1 4 2 3就不是。【输入形式】从标准输入读取第一行是一个整数N(3≤N≤10),代表有N个元素,其进栈序列是1 2 3 …… N。
第二行是空格分隔的1~N的数字的一个排列。
【输出形式】向标准输出打印结果。如果该排列是可能的出栈序列,则打印“YES”,否则打印“NO”。在行末要输出一个回车符。
【输入样例】
3
3 1 2
【输出样例】
NO
【样例说明】进栈序列为1 2 3的出栈序列里没有3 1 2
【评分标准】结果完全正确得20分,每个测试点4分。上传c语言源程序为outstack.c。
当前编程题:第六次作业--- 矩阵运算
1. 【问题描述】
对于多个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. 【问题描述】编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。
【输入形式】用户在第一行输入一个字符串。
【输出形式】程序按照字符(ASCII)顺序从小到大排序字符串,并删除重复的字符进行输出。【样例输入】badacgegfacb
【样例输出】abcdefg
【样例说明】用户输入字符串badacgegfacb,程序对其进行按从小到大(ASCII)顺序排序,并删除重复的字符,最后输出为abcdefg
【评分标准】结果完全正确得20分,每个测试点4分。提交源程序名为stringsort.c
当前编程题:第六次作业--- 子串逆置
3. 【问题描述】输入两行字符串s和t(s和t最长含50个字符,可以含有空格),将s串中首次与t匹配的子串逆置,并将结果输出。
【输入文件】输入文件为invertsub.in,含有两行字符串s和t,分别以#作为串结束符。【输出文件】输出文件invertsub.out只有一行,包含一个串,是要求的输出结果。在行末也要有一个回车符。
【输入样例】helloworld#
llowor#
【输出样例】herowollld
【样例说明】helloworld和llowor中重复的子串为llowor,逆置后结果为herowollld
【评分标准】结果完全正确得20分,每个测试点4分。上传c语言源程序为invertsub.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. 【问题描述】
编写程序实现两个超长正整数(每个最长80位数字)的加法运算。
【输入形式】
从键盘读入两个整数,要考虑输入高位可能为0的情况(如00083)。
1. 第一行是超长正整数A;
2. 第二行是超长正整数B;
【输出形式】
输出只有一行,是两个长整数的运算结果,从高到低依次输出各位数字。各位数字紧密输出。
算法提示:
1.用字符串输入两个超长整数,分别存放在两个字符串中,每一位对应一个字符串中的字符。
2.以较短的超长整数为基准,从低位到高位,对应位转换成数字后相加,再加上前一位相加的进位,得到的和模上10再转换为字符即为当前位,得到的和整除10即为当前位的进位。将计算得到的每一位保存到结果字符数组。
3.将较长字符串的剩余位加上最后一个进位移到结构数组后面。
4.将结果数组反序输出(去掉高位多余的0)。
【输入样例】
134098703578230056
234098
【输出样例】
134098703578464154
【样例说明】
进行两个正整数加法运算,134098703578230056 + 234098 = 134098703578464154。
【评分标准】
完全正确得20分,每个测试点4分,提交程序文件名为add.c。
当前编程题:第六次作业--- 最长升序子串
6. 【问题描述】输入一行字符串,该字符串只由小写英文字母a-z组成,且其中的字符可以重复,最长不超过10000个字符。
从该字符串中按顺序挑选出若干字符(不一定相邻)组成一个新串,称为“子串”。如果子串中每两个相邻的字符或者相等,或者后一个比前一个大,则称为“升序子串”。编程求出输入字符串的最长升序子串的长度。
例如,由输入字符串abdbch可以构成的升序子串有:abd、abch、bbch、abbch等。其中最长的升序子串是abbch,其长度为5。
【输入形式】从标准输入读取一行字符串,该串不含空格,以回车符结束。
【输出形式】向标准输出打印一个正整数,是字符串中最长的升序子串的长度,在行末要输出一个回车符。
【输入样例】abdbch
【输出样例】5
【样例说明】abdbch中最长子串是abbch,长度是5。
【评分标准】结果完全正确得20分,每个测试点4分。上传c语言源程序为up.c。
当前编程题:第七次作业--- 计算日期差
1. 【问题描述】
结构
struct Date {
int year;
int month;
int day;
};
利用该结构编写一个程序用来计算两个日期之间相差的天数。
【输入形式】
输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。
【输出形式】
第二个日期与第一个日期间相差的天数。
【输入样例】
2003 3 25
2003 3 29
【输出样例】
4
【评分标准】
完全正确得20分,每个测试点4分,提交程序文件名为c0701.c。
当前编程题:第七次作业--- 统计整数
2. 【问题描述】
输入若干个整数,统计出现次数最多的那个整数。如果出现最多的整数有两个以上,打印最早输入的那个整数。
【输入形式】
从标准输入读取输入。第一行只有一个数字N(1≤N≤10000),代表整数的个数。以后的N行每行有一个整数。
【输出形式】
向标准输出打印出现次数最多的那个数字。
【输入样例】
6
11
-1
20
300
【输出样例】
【样例说明】
输入6个整数,其中出现次数最多的是0,共出现两次。
【评分标准】
本题不准使用数学库函数。运行时限1秒,正确得20分,每个测试点4分,提交程序名为c0702.c。
当前编程题:第七次作业--- 链表操作
3. 【问题描述】
输入n(n>1)个正整数,每次将输入的整数插入到链表头部。-1表示输入结束。再输入一个正整数,在链表中查找该数据并删除对应的节点。要求输出进行删除操作后链表中所有节点的值。
【输入形式】
输入以空格分隔的n个整数,以-1结束输入,再输入一个要删除的整数。
【输出形式】
从链表第一个元素开始,输出链表中所有的节点值。以空格分隔。
【样例输入】
2 4 6 7 8 4 -1
2
【样例输出】
4 8 7 6 4
【样例说明】
输入以空格分隔的n个整数2 4 6 7 8 4, 以-1结束输入
然后输入2,删除2之后输出剩余整数。
【评分标准】
满分20分,每个测试点4分,提交程序名为c0703.c。
当前编程题:第七次作业--- 学生记录
4. 【问题描述】
从键盘中读入最多不超过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分,提交程序名为c0704.c。
当前编程题:第七次作业--- 猴子选大王
5. 【问题描述】要从n只猴子中选出一位大王。它们决定使用下面的方法:
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语言文件名为c0705.c。
当前编程题:第七次作业--- 交叉引用生成器(选做)
6. 【问题描述】
“交叉引用生成器”(cross-refrencer)是指具有如下功能的程序:
对输入的一篇文档,统计出现的所有单词及其所在行号。将其结果以规定格式输出。
【输入形式】
程序从文件crossin.txt读入一篇文档。该文档由若干行组成,每行中包含一系列单词。
行号由1开始计数。该文档中单词总量不超过200,每个单词长度最大不超过20个字符。
【输出形式】
将输入文档中所有出现的单词及其所在行号输出到文件crossout.txt中。
输出有若干行,每一行都是文档中出现的一个单词。按如下规格输出:
word:line1,line2, … ,lineN
其中word是单词,后面紧跟一个冒号,然后是以逗号隔开的出现行号line1,line2,等等。在该行上各字符紧密输出,不使用空格分隔。在输出时遵循以下规定:
1. 只输出所有由英文字母(包括连字符)构成的单词,数字或包含其它特殊字符的单词不用输出。先输出大写A ?Z开头的字符,再输出小写a—z开头的符。
2. 各单词后面的行号从小到大排列。行号不重复打印,亦即如果一个单词在一行内多次出现,则只打印一次该行号。
3. 统计的单词不包括冠词、连词等无实际意义的单词。在本题中涉及如下四个单词:
A. a
B. an
C. the
D. 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,4
It:2
any:2
content:2
countries:3
deliver:2
enables:2
end-to-end:1
enterprises:2
focus:4
in:3
lcatel:3
of:2
offerings:4
on:4
operates:3
optimizing:4
provides:1
revenue:4
C语言课后习题答案(最终)
第0章习题 1. 将下列十进制数分别转化为二进制数、八进制数和十六进制数: (1)128 (2)511 (3)1024 (4)65535 (5)1048575 答: (1)10000000、200、80 (2)111111111、777、1FF (3)10000000000、2000、400 (4)1111111111111111、177777、FFFF (5)11111111111111111111、3777777、FFFFF 2. 将下列二进制数转化为十进制数和十六进制数: (1)1100110101B (2)101101.1011B 答: (1)821、335 (2)45.6875、2D.B 3. 写出下列数的原码、反码、补码:15、-20、-27/32 答: (1)00001111、00000000、00001111 (2)10010100、11101011、11101100 (3)1.1101100、1.0010011、1.0010100 4. 16位无符号定点整数的数值表示范围为多少?8位补码的表示范围是多少?16位补码的表示范围是多少? 答: 0~65535、-128~127、-32768~32767 5.1968年Dijkstra提出结构化程序设计的思想的原因是什么?简要回答结构化程序设计的经典定义。 答: 结构化程序设计概念的提出主要是源于程序结构的层次性与模块化使得构造出来的软件具有良好的可理解性和可维护性,随着软件规模的扩大与复杂性的提高,程序的可维护性成为程序设计者们关注的重要问题之一。 如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 6.C程序在内存中存储在哪儿?计算机的内存空间是如何分区的?分区存放不同类型的数据的目的是什么? 答:
数据结构(c语言版)课后习题答案完整版
数据结构(c语言版)课后习题答案完整版数据结构(C语言版)课后习题答案完整版 一、数据结构概述 数据结构是计算机科学中一个重要的概念,用来组织和存储数据,使之可以高效地访问和操作。在C语言中,我们可以使用不同的数据结构来解决各种问题。本文将提供完整版本的C语言数据结构的课后习题答案。 二、顺序表 1. 顺序表的定义和基本操作 顺序表是一种线性表,其中的元素在物理内存中连续地存储。在C 语言中,我们可以通过定义结构体和使用指针来实现顺序表。以下是顺序表的一些基本操作的答案: (1)初始化顺序表 ```c typedef struct{ int data[MAX_SIZE]; int length; } SeqList; void InitList(SeqList *L){
L->length = 0; } ``` (2)插入元素到顺序表中 ```c bool Insert(SeqList *L, int pos, int elem){ if(L->length == MAX_SIZE){ return false; // 顺序表已满 } if(pos < 1 || pos > L->length + 1){ return false; // 位置不合法 } for(int i = L->length; i >= pos; i--){ L->data[i] = L->data[i-1]; // 向后移动元素 } L->data[pos-1] = elem; L->length++; return true; }
``` (3)删除顺序表中的元素 ```c bool Delete(SeqList *L, int pos){ if(pos < 1 || pos > L->length){ return false; // 位置不合法 } for(int i = pos; i < L->length; i++){ L->data[i-1] = L->data[i]; // 向前移动元素 } L->length--; return true; } ``` (4)查找顺序表中的元素 ```c int Search(SeqList L, int elem){ for(int i = 0; i < L.length; i++){ if(L.data[i] == elem){
C语言课后作业答案
3-5-1正确 大写字母转化成小写或者小写变大写 #include
#include
c语言程序设计课后习题及答案
c语言程序设计课后习题及答案 C语言程序设计是计算机科学与技术专业的一门基础课程,通过学习该课程,我们可以掌握C语言的基本语法和编程技巧,培养我们的编程思维和解决问题的能力。在课程学习过程中,老师会布置一些课后习题,以巩固我们的知识和提高我们的编程水平。下面我将分享一些C语言程序设计课后习题及其答案,希望对大家有所帮助。 1. 习题一:编写一个程序,输入一个整数,判断该数是否为素数。 ```c #include
if (flag == 0) printf("%d是素数。\n", num); else printf("%d不是素数。\n", num); return 0; } ``` 2. 习题二:编写一个程序,输入一个正整数n,计算并输出1到n之间所有偶数的和。 ```c #include
printf("1到%d之间所有偶数的和为:%d\n", n, sum); return 0; } ``` 3. 习题三:编写一个程序,输入一个正整数n,计算并输出n的阶乘。```c #include
C语言 课后作业题
C语言作业题 【输出形式】用户在下一行显示输出结果 【样例输入】3.47 【样例输出】3 【样例说明】与输入值3.47接近的整数为3和4,3.47比3.5小,舍掉小数部分,结果为3。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:c0104.c。 当前编程题:第一次作业--- 计算空格换行个数 5. 【问题描述】 编写一程序,分别计算所输入的字符串中空格,换行符的个数。 【输入形式】 输入可以是键盘上的任意字符。 【输出形式】 分别输出空格,换行符的个数,输出的结果一行显示,数字之间以空格格开。 【输入样例】 bb ss pp= fz 【输出样例】 2 1 【样例说明】 字符b与s之间有一个空格,s与p之间有一个空格,p与f之间有一个换行。 【评分标准】 结果完全正确得20分,每个测试点4分。提交程序名为:c0105.c。 当前编程题:第一次作业--- 整数组合(选做题) 6. 【问题描述】 假设unsigned short类型占16位,x、y、z都是short类型。编写一程序,从键盘输入x,y 的值(十进制形式),然后将x的高8位作为z的高8位,y的高8位作为z的低8位,最后输出z的值(十进制形式)。 【输入形式】 以十进制形式输入x和y的值,以空格隔开。 【输出形式】 以十进制形式在新的一行上输出z值。 【输入样例】 840 2177 【输出样例】 776 【样例说明】 840的二进制形式为:0000 0011 0100 1000
2177的二进制形式为:0000 1000 1000 0001 将840的高8位作为结果的高8位,2177的高8位作为结果的低8位, 所以结果为:0000 0011 0000 1000,即十进制形式为:776 【评分标准】 结果完全正确得20分,每个测试点4分。提交程序名为:c0106.c。 当前编程题:第二次作业--- 数字排序 1. 【问题描述】编写一个程序,将输入的三个数从小到大排列出来。 【输入形式】用户在第一行输入三个数字,每个数字用空格分开。 【输出形式】程序在下一行按照从小到大的顺序将三个数字输出出来,每个数字也用空格分开。要求程序可以处理整数和浮点数两种输入情况的比较。 【样例输入】2.4 5.6 1.5 【样例输出】1.5#2.4#5.6 #表示空格(要求输出时输出空格,而不是输出#,这里#只是表示空格而已!) 【样例说明】输入3个数字,每个数字之间用空格分开,并且进行从小到大排列,最后进行输出。这里的数字可以是整数,也可以是浮点数。 提示:输入时以%f格式读入到float类型的变量中,排完序以后,输出时以%g格式输出即可。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:sort.c。 当前编程题:第二次作业--- 找最大最小整数 2. 【问题描述】编写一个程序,用户输入若干整数,试找出其中的最大数和最小数。【输入形式】用户在第一行待输入数据个数,在第二行输入数据。 【输出形式】程序在下一行输出数据的最大值和最小值 【样例输入】 5 89 62 96 74 52 【样例输出】96 52 【样例说明】用户第一次输入的为数据个数,在下一行依次输入数据。输出为5个数中的最大值和最小值,输出时候两个数之间用空格分隔。 【评分标准】结果完全正确得20分,每个测试点4分。提交程序名为:getmaxandmin.c 当前编程题:第二次作业--- 日期天数转换 3. 【问题描述】编写一个程序,用户输入日期,计算该日期是这一年的第几天。 【输入形式】用户在第一行输入一个日期(年月日,中间以空格分割) 【输出形式】程序在下一行输出一个整数 【样例输入】2006 2 21 【样例输出】52 【样例说明】用户以年月日的格式输入,中间以空格分割,程序计算出该天是输入年份的第
C语言课后习题参考答案
C语言课后习题参考答案 习题 1 一、选择题 1、B 2、C 3、B 4、D 5、A 6、B 7、C 二、填空题 1、源程序文件 c 2、obj 3、可执行文件 exe 4、机器语言汇编语言高级语言 三、解答题 略 四、编程题 1、 main() { printf(“Hello! Welcome to China!”); } 2、 main() {int x; printf(“x=%d”,x); } 习题 2 一、选择题 1、C 2、A 3、B 4、D 5、 A 6、D 7、B 8、B 9、B 10、D 11、D 12、B 13、A 14、B 15、C 二、填空题 1、整型、实型、字符型 2、用户标识符、关键字标识符 3、存储单元、符号地址、内存地址 4、十、十六、八 5、double(双精度型) 6、 8 7、5.500000 8、a=-32768 9、+0017,021,0x11 三、写程序运行结果
3257 3257 7.88, -345.12,7.8765,-345.1230 7.87654e+00, -3.5e+02 a,97,141,61 1234,2322,4d2 CHINESE, CHI 四、scanf函数的使用 a=3 b=7 8.5 71.82 A a 五、用scanf函数输入数据 1020Aa1.5-3.75 123.45,67.8 注意,其中123.45可以是任意实数,因为该值将被跳过,不用于赋值。 习题 3 一、选择题 1.C 2.B 3.D 4.D 二、填空题 基本概念题 1.2 2.2 3.1 阅读程序写出运行结果题 4.1.00 5.1,0,1 6.6,11,9,10 三、写出下面表达式运算后a的值,设原来a=12。 (1)24 (2)10 (3)60 (4)0 (5)0 (6)0 习题4 一、选择题 1、B 2、D 3、B 4、D 5、A 6、C 二、填空题 1、1,0,1 2、1,2,3 3、ch1>=′A′&&ch1<=′Z′ ch1=ch1-32; 三、编程题 1、从键盘输入三个数,然后按照由小到大的顺序输出。要求,设三个数放在变量a、b、c中,最后仍然按照a、b、c的顺序输出。
《C语言程序设计教程》(第三版)课后习题参考答案
C语言程序设计课后习题参考答案 习题一 一、单项选择题 1、C 2、B 3、B 4、C 5、D 6、A 7、C 8、A 二、填空题 1、判断条件 2、面向过程编程 3、结构化 4、程序 5、面向对象方法 6、基本功能操作、控制结构 7、有穷性 8、直到型循环结构 9、算法 10、可读性 11、模块化 12、对问题的分解和模块的划分 习题二 一、单项选择题 1、B 2、D 3、C 4、B 5、A 6、A 7、B 8、C 二、填空题 1、主 2、C编译系统 3、结构化 4、程序 5、面向对象方法 6、.OBJ 7、库函数 8、直到型循环结构 习题三 一、单项选择题 1、D 2、B 3、A 4、C 5、A 6、D 7、B 8、D 9、B 10、C 11、A 12、D 13、C 14、B 15、C 16、A 17、B 18、C 19、C 20、D 21、A 22、D 23、D 24、D、A 25、D 26、A 二、填空题 1、补码 2、10^-138~10^138、15~16