C语言程序设计作业
Exercise 1----Branch
1、P69 4.3 编写程序计算平面上两点间的距离。
2、P69 4.4 编写程序判断在一个平面上两个平行于坐标轴的矩阵是否相交。 3、输入三个整数a,b,c,请输出最大数和最小数,中间用一个空格隔开。 提示:分别设max和min分别表示最大数和最小数。
4、输入三角形的三条边a,b,c。如果构成三角形,那么就计算三角形的面积并输出,否则输出“Not triangle”。
1/2
提示:海伦公式:令s=(a+b+c)/2,面积:area=(s(s-a)(s-b)(s-c))。
Exercise 2—branch and Loop
1、P82 5.1下面的代码段意欲实现:如果x=0,则什么也不做,除非y=0时调用exit(1);否则置x=x+y。你认为这段代码能否完成上述功能?若不能,请给出一个实现方案。 if(x==0) if(y==0) exit(1); else
x=x+y;
2、P82 5.2 任意给出一个三位十进制整数,若该数中有且仅有两个数码相同,则输出该数。如:输入323,输出323;如:输入111,输出No。请编写程序。 3、P82 5.3 用switch-case语句编程计算y的值:
cos(x+3.0) 0<=x<10 y= cos2(x+7.5) 10<=x<20
cos4(x+4.0) 20<=x<30
4、输入n个整数,求n个数的和。
提示:输入的第1行是一个整数n(1<=n<=1000),表示有多少个数求和;第2行以后是n个整数,每个整数之间用空格或回车隔开。每个整数的范围都在[-100000,100000]之内。
Exercise 3--Loop
1、P69 4.5 编写程序求一个十进制正整数x在二进制下的位数。
2、在歌星大奖赛中,有10个评委为参赛选手打分,打分的原则是:最低给1分,最高给100分。选手最后的得分为:去掉一个最高分和一个最低分后,其余8个分数的平均值。请编写一个程序计算一个选手的得分。
3、P102 6.2 有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…,求出这个序列有前20项之和。 4、P102 6.3 分别用循环语句编程输出下面的两个菱形图案:
* A *** BBB ***** CCCCC ******* DDDDDDD ********* EE E EE E EEE ******* F F F F F FF ***** GGGGG *** HHH
* I
Exercise 5--Loop
1、P102 6.4 编程求出3000以内的全部亲密数。所谓亲密数是指:如果整数A的全部因子(不包括自身)之和等于B,且整数B的全部因子(不包括自身)之和也等于A,则A和B被称为亲密数。
2、P102 6.5 编程求出所有的水仙花数。所谓的水仙花数是指一个三位的十进制整数,其各位数字的立方和等于该数本身。如153=13+53+33,所以它是一个水仙花数。
3、P102 6.7 数3025平均分为两段,即30和25,使之相加后求平方,即(30+25)2,恰好等于3025本身。编程求出具有这样性质的全部四位数。
4、P82 5.5 三个等差数列的数,首尾两项之和为中项的5倍,后两项之和为第一项的8倍,编程求此3个数。
Exercise 6--Function
1、P158 8.1 编写程序,将十进制正整数转换成十六进制字符串逆序输出。要求用到函数进行转换。 2、P158 8.2 用函数方法编程输出十进制数n以内的所有素数。 3、下面的程序存在什么错误?为什么?
#include
float x = 3.14;
static int y = f(x,3); printf(\
}
float f(float x,int y) {
return x+y;
}
4、用函数求解级数:
y=1+1/x+1/x2+1/x3+?直到某一项1/xn ≤10-6时为止。
Exercise 7-Array
1、写一函数digit(n,k) ,它把数n从右边起的第k位数字的值给出来,其中n为正整数,若n的位数不足k,则返回值0。
2、P129 7.1 编写程序,输入一个十进制整数,并将其转转换成十六进制数输出。不允许使用%x输出。 3、P129 7.2 从键盘上输入一个正整数,判断其是否是回文数。所谓回文数是指顺序读与反序读都是一样的数,如121,25852。
4、P129 7.4 编程求数列:f1=f2=1;fn=3*fn-1+2*fn-2(n>2)的第10项以及前10项之和。
Exercise 8-Point and Struct
1、P129 7.6 从键盘上输入两个字符串,若不相等,将短的字符串连接到长的字符串的末尾并输出新的字符串,要求不使用字符串函数。
2、P129 7.8 有10个学生,每个学生的数据包括学号,姓名,3门课程的成绩,从键盘输入10个学生的数据,要求打印出3门课程的总平均成绩,以及最高平均分的学生的数据(包括学号、姓名、3门课的成绩、平均成绩)。
3、P187 9.5 编写一个函数实现从长度为n的源字符串中的第m个字符开始截取k(m+k 4、有n个人围成一圈,按顺序从1到n编号。从第一个人开始报数,报到m的人退出圈子,下一个人从1开始报数,报到m的人退出圈子。如此下去,直到留下最后一个人。请按退出顺序输出退出圈子的人的编号。 Exercise 8- comprehensive problems 1、数字塔 有多个输入测试用例,每一个用例一行,是一个0~9的整数,输入为0时则结束。屏幕显示如下: 样例输入 样例输出 2 case 1: 1 222 3 case 2: 1 222 33333 0 end ――――――――――――――――――――――――――――――――――――――― 2、魔术师的猜牌术。魔术师手拿13张迭在一起的黑桃牌,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么。接着,魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手上的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上,第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是黑桃3。这样依次进行将13张牌全翻出来,准确无误。问魔术师手中的牌原始顺序是怎样安排的?请用函数实现。 3、P187 9.6有一个班4个学生5门课程,要求: (1)计算每一门课程的平均分。 (2)找出两门课程不及格的学生,输出他们的学号,姓名,全部成绩和平均成绩。 (3)找出平均成绩在90分以上或全部成绩在85分以上的学生。 分别编写3个函数实现上述要求,要求使用结构数组。 4、请编写一个程序,可以将英语规则名词由单数变成复数(用函数实现),已知规则如下: (1)以字母y结尾,则将y改成i,再加上es; (2)以s,x,ch,sh结尾,则加es; (3)以元音o结尾,则加es; (4)其他情况直接加s。 要求用键盘输入英语规则名词,屏幕输出该名词的复数形式。 以下为选做题 P44-45 习题2.7、2.11、2.12、2.13、2.14、2.15