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 void main() { char ch; printf("请输入一个字符:"); scanf("%c",&ch); if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') { if(ch>='A'&&ch<='Z')ch=ch+32; else ch=ch-32; } else ch=ch; printf("%c\n",ch); } 3-5-2大写转化成小写或者小写变大写 #include void main() { char ch; printf("请输入一个字符:"); scanf("%c",&ch); ch=ch; { if(ch>='A'&&ch<='Z')ch=ch+32; else ch=ch-32; } printf("%c\n",ch); } 3-5-3大写转化成小写或者小写变大写 #include void main() { char ch; printf("请输入一个字符:"); scanf("%c",&ch); if(ch>='a'&&ch<='z') ch=ch-32; else if(ch>='A'&&ch<='Z') ch=ch+32; else ch=ch; printf("%c\n",ch); } 3-6-1正确分段函数

#include void main() { int x,y; printf("请输入x:"); scanf("%d",&x); if(x<=1) y=x; else { if(1 void main() { int x,y; printf("请输入x:"); scanf("%d",&x); if(x>=10) y=3*x-8; else if(x>1) y=2*x+1; else y=x; printf("x=%d,y=%d\n",x,y); } 3 -6 -3正确 #include void main() { int x,y; printf("请输入x:"); scanf("%d",&x); if(x<=1) y=x; else if(1=10) y=3*x-8; printf("x=%d,y=%d\n",x,y); } 计算器正确 #include void main() {

c语言程序设计课后习题及答案

c语言程序设计课后习题及答案 C语言程序设计是计算机科学与技术专业的一门基础课程,通过学习该课程,我们可以掌握C语言的基本语法和编程技巧,培养我们的编程思维和解决问题的能力。在课程学习过程中,老师会布置一些课后习题,以巩固我们的知识和提高我们的编程水平。下面我将分享一些C语言程序设计课后习题及其答案,希望对大家有所帮助。 1. 习题一:编写一个程序,输入一个整数,判断该数是否为素数。 ```c #include int main() { int num, i, flag = 0; printf("请输入一个整数:"); scanf("%d", &num); for (i = 2; i <= num / 2; i++) { if (num % i == 0) { flag = 1; break; } }

if (flag == 0) printf("%d是素数。\n", num); else printf("%d不是素数。\n", num); return 0; } ``` 2. 习题二:编写一个程序,输入一个正整数n,计算并输出1到n之间所有偶数的和。 ```c #include int main() { int n, i, sum = 0; printf("请输入一个正整数:"); scanf("%d", &n); for (i = 2; i <= n; i += 2) { sum += i; }

printf("1到%d之间所有偶数的和为:%d\n", n, sum); return 0; } ``` 3. 习题三:编写一个程序,输入一个正整数n,计算并输出n的阶乘。```c #include int main() { int n, i; long long factorial = 1; printf("请输入一个正整数:"); scanf("%d", &n); for (i = 1; i <= n; i++) { factorial *= i; } printf("%d的阶乘为:%lld\n", n, factorial); return 0;

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

3、实 4、单目运算符、自右向左 5、函数调用 6、65,89 习题四 一、单项选择题 1、D 2、C 3、D 4、A 5、D 6、B 7、A 8、C 9、B 10、B 二、填空题 1、两, ; 2、5.169000 3、-200 2500、i=-200,j=2500回车、i=-200回车j=2500回车 4、a=98,b=765.000000,c=4321.000000 5、100 25.81 1.89234、100,25.81,1.89234、100回车25.81回车1.89234回车 6、0,0,3 7、3 8、scanf(“%lf %lf %lf”,&a,&b,&c); 9、13 13.000000 13.000000 10、c=b-a;a=b+c; 习题五 一、单项选择题 1、B 2、D 3、C 4、B 5、B 6、D 7、A 8、B 9、D 二、填空题 1、1 、0 2、k!=0 3、if(x>4||x<-4)printf(“%d”,x); else printf(“error!”); 4、if(((x>=1&&x<=10)||(x>=200&&x<=210))&&(x%2!=0)) Printf(“%d”,x); 5、1 6、1 7、10! Right! 8、a=0 9、2,1 10、0

C语言教材后习题及答案

第一章 1.什么是程序?什么是程序设计语言? 2.C语言有什么特点? 3.什么是算法?算法的描述有哪些基本方法? 第一章主要关注两个概念:一是程序的三种结构(顺序、分支或叫选择、循环) ;二是函数,主函数main() 第二章 1.指出下列哪些是C语言合法的用户识别符。 void a3_b3 For 2a defi ne _123 _abc DO 2.指出下列哪些是C语言合法的常量。 "3'4 " " 0x1g 33 " a" E20 '\18' \0xa' 1.E-5 3.F '\0' .12 '\a' "3'4 ""双引号内表示字符串,但要在一个串内含有单引号、双引号要用转义字符正确的是:’4\"" 0x是十六进制的表示形式之一,但十六进制里没有g这个数值 \0xa'带一个单引号、0开头,无意义.这里要注意\ddd,1-3 位八进制数,\xhh,1-2位十进制数,他们都表示对应的ASCII值 E20, E表示指数形式,但两边必须都有数字。 将此题全部弄懂,所有关于常量的分基本跑不掉了。 3.指出下列定义变量语句中的错误。 int a;b=5; //同类型的两个变量,中间不能用分号。 doubel h; //double int x,float y; //中间要用分号 float f(x); //非法符号 定义变量要注意,数据类型的关键字,还有就是变量名称必须是合法标识符 4.写出能表示数学式子1/(2a + 1/2a)的C语言表达式 1.0/(2*a+1/(2*a)) 5.⑴#include int main() { double x=1,y;

y=x+3/2; prin tf("y=%f\n",y); return 0; }结果是:2.000000,注意3/2=1 ⑵ #i nclude int main() { float x=2.9,y=3.2, z; int a=8; z=x+a%3*(i nt)(x+y)/2; prin tf("z=%f\n",z); return 0; } 结果是:8.900000,注意(int)(x+y) =6。 ⑶ #i nclude int main() { int a=65,b=-20; char ch='A'; float x=12.345678f; prin tf("abc\n\101\t\x41\\101\n"); prin tf("a=%d,%c,%o,%x\n",a,a,a,a); prin tf("b=%d,%o,%x,%u\n",b,b,b,b); prin tf("ch=%d,%c\n",ch,ch); prin tf("x=%f,%.2f,%10.2f,%-10.f\n",x,x,x,x); return 0; 此题包含的内容较多,都是细节,希望对照教材仔细分析结果6程序设计。 (1)输出如下的图形。 *****

C语言程序设计谭浩强第三版++课后习题答案

第六章循环语句 6.1输入两个正数,求最大公约数和最小公倍数. int main() { int a,b,num1,num2,temp; printf("请输入两个正整数:\n"); scanf("%d,%d",&num1,&num2); if(num10;c--) if((a%c)&&(b%c)==0) break; printf("最大公约数为%d",c); printf("最大公倍数为%d",a*b/c); 6.2输入一行字符,分别统计出其中英文字母,空格,数字和其它字符的个数. 解: #include int main() { char c; int letters=0,space=0,degit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n')

{ if(c>='a'&&c<='z' || c>'A'&&c<='Z') letters++; else if(c==' ') space++; else if(c>='0'&&c<='9') digit++; else other++; } printf("其中:字母数=%d 空格数=%d 数字数=%d 其它字符数=%d\n",letters,space, digit,other); return 0; } 6.3求s(n)=a+aa+aaa+…+aa…a之值,其中a是一个数字,n表示a的位数。 解: int main() { int a,n,count=1,sn=0,tn=0; printf("请输入a和n的值:\n"); scanf("%d,%d",&a,&n); printf("a=%d n=%d \n",a,n); while(count<=n) { tn=tn+a; sn=sn+tn; a=a*10; ++count; } printf("a+aa+aaa+…=%d\n",sn); return 0; } 循环体改成: count=1,sn=0; { sn+=a; a+=10a; count++; }

c语言程序设计教程第二版课后习题答案

c语言程序设计教程第二版课后习题答案第一章:C语言基础 1. 以下为C语言的特点: - C语言是一种结构化编程语言,可以通过模块化的方式构建复杂的程序。 - C语言具有较高的可移植性,可以在不同的操作系统和硬件平台上运行。 - C语言提供了丰富的库函数,方便开发者进行程序开发。 - C语言对指针的支持较好,可以进行底层的内存操作。 2. C语言中的标识符规则: - 标识符由字母、数字和下划线组成,且第一个字符不能是数字。 - 标识符区分大小写,因此变量名"num"和"Num"是不同的。 - 标识符不能与关键字重名,如"if"、 "for"等。 - 标识符长度一般不超过32个字符。 3. 在C语言中,预处理指令的作用是在程序编译之前对代码进行处理,包括宏展开、文件包含等。预处理指令以"#"开头,常见的预处理指令有: - #include:用于包含头文件,将头文件中的内容插入到当前文件中。

- #define:用于定义宏,将宏名称替换为指定的值或代码片段。 - #ifdef、#ifndef、#endif:用于条件编译,根据条件是否成立来选择性地编译代码。 4. C语言中的数据类型分为基本数据类型和派生数据类型两种。基本数据类型包括整型、浮点型、字符型和布尔型,派生数据类型包括数组、指针、结构体和共用体。 5. C语言中的运算符主要分为算术运算符、关系运算符、逻辑运算符、位运算符和赋值运算符等。算术运算符用于执行加减乘除等基本算术操作,关系运算符用于比较两个值的大小关系,逻辑运算符用于组合多个条件的判断结果,位运算符用于对二进制位进行操作,赋值运算符用于将右侧的值赋给左侧的变量。 第二章:C语言程序结构 1. C语言程序结构由函数、语句和注释组成。每个C语言程序至少包含一个main()函数,作为程序的入口。 2. 以下为C语言程序的基本结构: ```c #include int main() { // 程序代码 return 0;

c语言第四版课后习题答案

c语言第四版课后习题答案 C语言第四版课后习题答案 在学习C语言第四版课程后,许多学生都会遇到各种各样的问题和疑惑。为了帮助大家更好地掌握C语言的知识,我们整理了一些课后习题的答案,希望能够对大家有所帮助。 1. 什么是C语言? C语言是一种通用的高级程序设计语言,它广泛应用于系统软件、应用软件、驱动程序、网络通信等领域。C语言具有高效、灵活、可移植等特点,是程序员必备的基本技能之一。 2. C语言的基本语法有哪些? C语言的基本语法包括数据类型、变量、运算符、控制语句、函数等。学习C 语言首先要掌握这些基本语法,才能够编写出正确的程序。 3. 如何定义一个变量? 在C语言中,可以使用关键字“int”、“float”、“char”等来定义不同类型的变量。例如: int a; // 定义一个整型变量a float b; // 定义一个浮点型变量b char c; // 定义一个字符型变量c 4. 如何进行条件判断? 在C语言中,可以使用“if”、“else”、“switch”等关键字来进行条件判断。例如:if (a > b) { printf("a大于b");

} else { printf("a小于等于b"); } 5. 如何定义一个函数? 在C语言中,可以使用关键字“void”、“int”、“float”等来定义不同类型的函数。例如: int max(int a, int b) { if (a > b) { return a; } else { return b; } } 通过学习C语言第四版课程,我们可以更好地理解和掌握C语言的知识,提高自己的编程能力。希望大家能够通过不断练习和实践,掌握C语言的基本原理和技巧,成为一名优秀的程序员。

C语言课程 课后练习 参考答案

实验6-1 课后练习: 1.选择题 (1)B (2)C(3)A(4)D(5)C (6)C (7)D 2.阅读程序,写出运行结果 30 20 10 3.阅读程序,写出运行结果 20 10 4. 阅读程序,写出运行结果 1 2 3 5.阅读程序,写出运行结果 7 8 9 6.阅读程序,写出运行结果 9 7.阅读程序,写出运行结果 #include int digit(int n,int k); int main() { int n,k; printf("Enter n,k: "); scanf("%d %d",&n,&k); printf("\nThe result is:%d\n",digit(n,k)); return 0; } int digit(int n,int k) { int d; while(k>0) { d=n%10; n=n/10; k--; } return d; } 8.程序填空 #include double max(double a,double b);

int main() { double x,y; prinf("please input two double numbers:"); scanf("%lf %lf"),&x,&y; printf("%.2f\n",max(x,y)); return 0; } double max(double a,double b) { return (a>b?a:b); } 9. 原版 #include int check(int n,int d); int main() { int n,d; printf("Enter n,d: "); scanf("%d %d",&n,&d); if(check(n,d)==1) printf("The digit %d is in data %d",d,n); else printf("The digit %d is not in data %d",d,n); return 0; } int check(int n,int d) { int temp; while(n>0) { temp=n%10; if(temp==d)return 1; n=n/10; } return 0; } 改进版 #include int check(int n,int d); int main() { int n,d,position; printf("Enter n,d: "); scanf("%d %d",&n,&d); position=check(n,d);

C语言例题及课后练习题汇总

1.在屏幕上显示一句话“欢迎学习C语言”。 2.求一个数的平方。 3.输入两个数,输出其中最大数。 4.编写一个C程序,输入三个整数,输出其中最大数。 5.编写一个C程序,从键盘上输入矩形的长和宽,屏幕上显示对应的矩形周长和面积。6. 编写一个C程序,输出9的阶乘的结果。 7.从键盘输入一个大写字母,输出其对应的小写字母。 8.用条件运算符实现:输入一个英文字母,如输入小写字母,输出其对应的大写形式,如输入大写字母,则原样输出。 9. 编程题:从键盘输入三个数a、b、c,输出平均值aver。 10. 计算工资税额。有一种工资纳税制度的规定为:如果工资超过50000元,缴纳的税额为工资总额的50%;如果工资超过10000元,纳税比例为工资总额的30%;如果工资超过7000元,纳税比例为工资总额的20%;如果工资超过5000元,纳税比例为工资总额的10%;如果工资少于等于5000元,不需纳税。设计一个程序,按照工资数额算出需要缴纳的税额。11.由键盘输入一个字符,判断是数字、英文字母还是其他字符。用if语句实现。 12. 由键盘输入一个成绩,然后输出相应的等级“优”、“良”、“中”、“及格”、“不及格”。 13. 从键盘输入1~7之间的数字,输出表示一个星期中对应的某一天的英文单词。 14. 计算器程序。用户输入运算数和四则运算符,输出计算结果。 15.输入两个数,判断两个数的关系是“大于”、“等于”或者“小于”,并输出结果。16.从键盘任意输入三个数,按照从小到大顺序输出。 17.编写程序判断输入的一个正整数是否既是5又是7的倍数。若是,则输出yes;若否,则输出no。 18. 用while循环输出1+2+…+100的结果。 19. 从键盘输入整数n,求1+2+…+n的结果并输出。 20. 求水仙花数。如果一个三位数的百位数、十位数和个位数的立方和等于这个数,那么这个数就被称为水仙花数。 21. 求2+4+…+100的结果并输出。 22. 用for循环输出1+2+…+100的结果。 23. 计算Fibonacci数列的前30项,并输出。 24. 求具有abcd=(ab+cd)2性质的四位数。比如:3025具有这样的性质,将它平分成两段30和25,然后加和取平方值,即 (30+25)2,恰好等于3025本身。请求出这种性质的全部四位数。 25. 编程题:求100+99+…+1的结果并输出。 26.编程题:从键盘输入一个值,统计1到这个数之间不能被3整除的数的个数,并输出这些数。 27. 从键盘输入一个数n,判断n是否是素数。 28. 统计1~50之间不能被3整除的数的个数并输出这些数字。 29. 输出下列图形。

C语言课后作业50(附参考答案)

1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 #include main(){ int s[5]; int n,j; printf("请输入一个正的五位数"); scanf("%d",&n); s[0]=n%10; printf("%d",s[0]); s[1]=(n%100-s[0])/10; printf("%d",s[1]); s[2]=(n%1000-s[0]-s[1])/100; printf("%d",s[2]); s[3]=(n%10000-s[0]-s[1]-s[2])/1000; printf("%d",s[3]); s[4]=(n%100000-s[0]-s[1]-s[2]-s[3])/10000; printf("%d",s[4]); printf("输出逆转后的5位数"); for(j=0;j<=4;j++){ printf("%d",s[j]); } } 2.计算1+2+3…+n的值,n是从键盘输入的自然数。

#include main(){ int n; int i; printf("请输入一个自然数:"); scanf("%d",&n); i=n*(n+1)/2; printf("输出1-n的自然数之和:%d\n",i); } 3.从终端(键盘)读入20个数据到数组中,统计其中正数的个数,并计算这些正数之和。 #include #define naxx 10 main() { int s[naxx]; int a[naxx]; int i=0; int j=0; int l=0; int sum=0; int k; printf("请输入:");

C语言课后作业

习题 1 1.简答题 (1)简述编辑、编译、连接、运行一个C语言程序的步骤 写好一个C语言源程序后,一般要经过编辑、编译、连接、运行才能得到程序结果。 1)编辑:在文本编辑器中,用C语言语法编写源程序代码。扩展名为.c。 2)编译:通过编译器将源程序转换成机器代码,生成目标程序(*.obj),在 C语言源程序的编译过程中,可以检查出程序中的语法错误。 3)连接:C语言是模块化程序设计语言,一个C语言应用程序可能由多个 程序设计者分工合作完成,需要将所用到的库函数以及其他目标程序连 接为一个整体,生成可执行文件(*.exe)。 4)运行:运行可执行文件后,可获得程序运行结果。 (2)C程序的结构是由哪几个部分组成的? 一个源程序可以有一个或多个函数组成,而且都有且只有一个main函数,即主函数,C语言的程序总是从主函数开始执行 1)源程序中可以有预处理命令,预处理命令通常放在源文件或源程序的最 前面 2)每一个语句都必须以分号结束,但预处理命令、函数头和花括号之后不 加分号。 3)标识符和关键字之间,至少要加一个空格。 源程序中需要解释和说明的部分,可以用“/*......*/加以注释,以增加程序的可读性。 (3)C语言中常用的表示算法的工具有哪些? 流程图描述 N—S图(框图)描述 伪代码描述 (4)算法的特点是什么?

1)有穷性 2)确定性 3)有效性 4)有零个输入或多个输入 5)有一个或多个输出 (5)设计一个程序,一般要经过几个步骤? 写好一个C语言源程序后,一般要经过编辑、编译、连接、运行才能得到程序结果。 2.编程题 (1)试编写一个C程序并上机调试,运行后能输出以下信息: ************************************** This is my first program. ************************************** #include void main() { printf("*******************************\n"); printf("This is my program.\n"); printf("*******************************\n"); } (2)参照例1.2编写一个程序并上机调试,求x的余弦值并输出。 #include #include void main() { double x,s; printf("input number:\n"); scanf("%lf",&x); s=cos(x);

C语言1_7章课后作业答案

C语言1-7章课后作业答案 第一章 C语言概述 【习题1-1】简述C语言的特点。 答:C语言的特点:C语言简洁、紧凑、使用灵活、方便;运算符丰富;数据结构丰富;C是结构式语言;C语法限制不太严格,程序设计自由度大;C语言允许直接访问物理地址;C语言程序生成代码质量高;C语言适用范围大,可移植性好。 【习题1-2】请从以下的4个选项中选择一个正确答案。 (1)A (2)C (3)B (4)D(5)A (6)C 【习题1-3】填空。 (1)英文字母、下划线、数字 (2)函数 (3) 函数头、函数体 (4)独立 (5);、#、/*…*/、{、}、 main、main 【习题1-4】请指出以下哪些是合法的标识符?哪些又是合法的用户标识符。 101 int 3ip x_1 x+1 count 1234 Xy x%y if while a.bc x&y _ _ 1_112 Abc name x break for x=y 合法的标识符有:x_1、int、count、Xy、if、while、Abc、name、x、break、for 合法的用户标识符有:x_1、count、Xy、Abc、name、x 【习题1-5】简述上机调试运行C程序的操作步骤。 答:上机运行C语言程序的操作步骤为:启动Visual C++ 6.0→建立工程→创建源程序文件→输入(编辑)源程序内容→保存源程序文件→编译源程序文件→连接目标程序→执行程序→开始另一个程序。 【习题1-6】上机运行本章的3个例题。 略 【习题1-7】参照本章例题,编写一个C语言源程序,输出以下信息: ************** Nice to meet you! ************** 编写程序如下: #include void main() { printf("**************\n"); printf("Nice to meet you!\n"); printf("**************\n"); } 第二章基本数据类型和运算符 【习题2.1】上机编辑并调试本章所有例题。 答:略。

c语言习题册及答案

第3章课后练习及作业习题指导(参考答案) 作业01 C语言基础知识 一、选择题 1.C语言程序的基本单位是()。 A)函数 B)过程 C)子程序 D)子例程 2.下列个选项中,合法的C语言关键字是()。 A)integer B)sin C)string D)void 3.下列选项中,不是C语言提供的合法关键字的是()。 A)switch B)cher C)default D)case 4.以下选项中合法的用户标识符是()。 A)int B)a# C)5mem D)_243 5.C语言程序一行写不下时,应该()。 A)用回车换行 B)在任意空格处换行 C)用分号换行 D)用逗号换行 6.在C程序中,可以作为用户标识符的一组标识符是()。 A)void define WORD B)as_b3 _224 Else C)switch —wer case D)4b DO SIG 7.在C语言中,下列合法的字符常量是()。 A)’\039 B)’\x76’ C)’ab’ D)’\o’8.以下说法正确的是()。 A)C语言程序是从第一个定义的函数开始执行 B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序是从main()函数开始执行的 D)C语言程序中的main()函数必须放在程序的开始部分 9.()是构成C语言程序的基本单位 A)函数 B)变量 C)子程序 D)语句 10.一个C语言程序总是从()开始执行的 A)主过程B)主函数 C)子程序 D)主程序 11.以下叙述不正确的是() A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main()函数 C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面 12.C语言规定:在一个源程序中,main()函数的位置() A)必须在最开始 B)必须在系统调用的库函数的后面C)可以任意 D)必须在最后

C语言习题及解答

第1部分课后练习题 第1章C语言概述 一、选择题 1.一个C程序的执行是从。 A)本程序的main函数开始,到main函数结束 B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束 2.以下叙述正确的是。 .在C程序中,main函数必须位于程序的最前面 A)C程序的每行中只能写一条语句 B)C语言本身没有输入输出语句 C)在对一个C程序进行编译的过程中,可发现注释中的拼写错误 3.以下叙述不正确的是。 A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面 4.C语言规定:在一个源程序中,main函数的位置。 A) 必须在最开始 B) 必须在系统调用的库函数的后面 C) 可以任意 D) 必须在最后 5.一个C语言程序是由。 A) 一个主程序和若干子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成 6.C语言中的语句需要符号作为结尾。 A) : B) ; C)。 D) // 7.C 语言程序中可以对程序进行注释,注释部分用符号_____括起来。 A)‘{‘ 和’}’ B)‘[‘和’]’ C)“/*”和”*/” D)“*/”和”/*” 8.C语言中注释的位置。 A) 必须在程序的最开始 B) 必须在程序的结尾 C) 可以在程序的任何位置 D) 不可以写到main函数里面 9.C语言程序能够在不同的操作系统下面运行,这说明c语言具有很好的。

相关主题
相关文档
最新文档