《C语言程序设计基础》习题集(含答案)_第1页
《C语言程序设计基础》习题集(含答案)_第2页
《C语言程序设计基础》习题集(含答案)_第3页
《C语言程序设计基础》习题集(含答案)_第4页
《C语言程序设计基础》习题集(含答案)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章 C 语言概述1.1、 选择题(1)一个 C 语言程序是由()组成。A. 一个主程序及若干个子程序B. 一个主程序C. 一个主函数及若干个子函数D. 一个主函数(2) 一个 C 语言程序总是从()开始执行。A. 主过程B. 主函数C. 子程序D. 主程序(3) main 函数在源程序中的位置()。A. 必须在最开始B. 必须在子函数的后面C. 可以任意D. 必须在最后(4) 一个 C 程序的执行是从()。A. 本程序的第一个函数开始,到最后一个函数结束B. 本程序的main 函数开始,到最后一个函数结束C. 本程序的main 函数开始,通常也在main 函数结束D. 本程序的第一个函数开

2、始,到main 函数结束(5) 以下叙述不正确的是()。A. 一个C 程序可由一个或多个函数组成B. 一个C 程序必须包含一个main函数C. 在C程序中,注释只能位于一条语句的最后面D. C 程序的基本组成单位是函数1.2 、编程题( 1 )参照本章例题,编程输出如下信息:*Very good!*( 2)编写一个C 程序,输出以下信息:*Turbo C * * * * *1.3 请根据自己的认识,写出C 语言的主要特点。1.4 简述 C 程序主要由哪些部分构成?1.5 用户编写的C 程序上机运行要经过哪些步骤?第二章 基本数据类型和表达式2.1 单项选择题(1) 以下不能用作变量名的是()A

3、) _26B)caseC)scanfD)Double(2) 以下合法的八进制数是()A) 0135B) 068C) 013.45 D)o7(3) 若变量已正确定义,以下非法的表达式是()A)a/=b+c B)a%(4.0)C)a=1/2*(x=y=20,x*3) D)a=b=c(4)设x为int类型,其值为11,则表达式:(x+*1/3)的值是()A)3B)4C)11D)12(5)若题中各变量已正确定义并赋值,下面符合C语法的表达式是()A) a%=7.6;B)a+,a=7+b+cC)int(12.3)%4D)a=c+b=a+7(6)设k和x均为int型变量,且k=7,x=12 ,则能使值为3

4、的表达式是()A)x%=k%=5B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)- (k%=5)(7)能正确表示数学公式Hsin(x)|,的C语言表达式是()A)sqrt(abs(sin(x* 兀/180)B)sqrt(abs(sin(x*3.14/180)C)sqrt(sin(x)D)sqrt (fabs (sin(x*3.14/180)x(8)以下变量x、v、z均为double型且已正确赋值,不能正确表示代数式y父z的C语言表达式是()A)x/y*z B)x*(1/(y*z)C)x/y*1/zD)x/y/z(9)以下叙述中正确的是()A) A) C程序中,赋值运算符的优先级最低

5、。B) B)若a是浮点型变量,C程序中允许进行以下赋值:a=10,因此,浮点型变量中允许存放整型数。C) C)若a和b类型相同,在执行了赋值a=b后b中的值将放入a中,b中的值将丢失。D) D)在C程序中,除号运算符“ /”两边的类型相同时才能进行相除运算。(10)有以下程序:#include <stdio.h> void main(void)int k=2,i=2,m;m=(k+=j*=k+); printf(" %d , %dn ", m , j);执行后的输出结果是()A) 8, 6B) 8, 3 C) 6, 4 D) 7, 4(11)有以下程序:#inc

6、lude <stdio.h> void main(void)unsigned a=32768;int b;b=a;printf("b=%dn" , b);程序执行后的输出结果是()A) b=32768B)b=32767C)b=-32768D)b=-1(12)有以下程序段:int a=1234;printf("%2dn",a);其输出结果是()A) 12B) 34 C) 1234D)输出宽度不足,无结果(13)已有定义和语句:double a,b,c;scanf(" %lf%lf%lf ",&a,&b,&am

7、p;c);要求给a、 b、 c 分别输入10.0、 20.0、 30.0,不正确的输入形式是()A)10.0/B)10.0/C)10 20/D)10.0,20.0,30.0 /20.0/2030/30.0/30.0/(14)已有定义语句:int x=3,y=4,z=5; ,则值为0 的表达式是()A)x>y+B)x<=+yC)x!=y+z>y-zD)y%z>=y-z(15)x 为奇数时值为“真”, x 为偶数时值为“假”的表达式是()A) !(x%2=1)B)x%2=0C)x%2D)!(x%2)(16)已有定义语句:int m=0,n=1; 执行表达式(m=5<3

8、) &&(n=7>9) 后, n 的值是()A)1B)0C)3D)4(17)以下选项中非法的字符常量是A) ''12' B) ''0xff 'C) ', ' D)''(18)表达式9'的值是()A)整数6 B)字符6 C)表达式不合法,无确定值D)字符9(19)以下不能将变量n 清零的表达式是()A) n=n&n B)n=n&0 C)n=nAn D)n=n|n(20)putchar 函数可以向屏幕输出一个()A)整型变量值B)浮点型变量值C)字符串 D)字符或字符变量值

9、(21).若int a , b , c;则为它们输入数据的正确输入语句是()A) read(a , b , c);B)scanf(" %d %d %d " ,a , b , c);C)scanf(" %D%D%D ",&a , &b , &c);D)scanf(" &d &d &d ",&a , &b , &c);(22)执行语句:printf(" | %10.5f | n",12345.678); 的输出是()A) |2345.67800|B

10、)|12345.6780|C)|12345.67800|D)|12345.678|(23)若有以下程序段,其输出结果是()int a=0,b=0,c=0;c = (a - = a - 5) , (a = b , b + 3 );printf(" %d , %d , %dn ",a , b , c);A)3,0, -10B)0,0,5 C) -10,3, -10D)3,0,3(24)若a为int类型,且a=125,执行下列语句后的输出是()printf(" %d , %o , %x n ",a,a+1,a+2)A)125,175,7DB)125,176,7

11、FC)125,176,7DD)125,175,2F2.2 设圆半径为5,编写程序,求圆的周长和面积。2.3 设 a = 3 , b = 4 , c = 5 , d = 1.2 , e = 2.23 , f = - 43.56 ,编写程序,使程序输出为:d = 1.22.23f = -43.5600* *(其中表示空格)2.4. 执行下列程序,按指定方式输入(其中表示空格),能否得到指定的输出结果?若不能, 请修改程序,使之能得到指定的输出结果。输入:234/输出:a = 2 , b = 3 , c = 4x = 6 , y = 24程序:#include <stdio.h>void

12、 main(void)int a , b, c ,x ,y;scanf(" %d , %d , %d ", a , b , c);x = a*b ;y=x*c;printf(" %d %d %d ",a , b , c);printf(" x=%fn ",x , " y=%fn" , y);第三章控制流3.1 输入一个华氏温度,要求输出摄氏温度。公式为:C=(F-32)*5/9要求:输出要有文字说明,保留2位小数。3.2 有一函数:x(x<1)y= 2 2x-1(1<x<10)3 3x-11(x&

13、gt;10)写一程序,输入x值,输出y值。3.3 输入4个整数,要求按由小到大的次序输出。3.4 求二次方程 ax2+bx+c=0的根。3.5 运输公司对用户计算运费。公司规定,路程越远,每公里运费越低。标准如下:Sv 250km没有折扣250W Sv 5002%折扣500<3< 10005 折扣10000 w Sv 20008% 折扣2000 w Sv 300010% 折扣3000WS15% 折扣设每公里每吨货物的基本运费为P,货物重为 W,距离为S,折扣为d,分别用if结构和switch结构编一程序求总运费F,计算公式为:F=P*W*s*(1-d)3.6 用兀/4弋1-1/3+

14、1/5-1/7+1/9-公式求兀的近似值,直到最后一项的绝对值小于10一6为止。3.7 有一个数列:1/2,2/3,3/5,5/8,8/13,13/21,试编程序,求数列的前100项之和。3.8 输入两个正数m和n,求其最大公约数和最小公倍数。3.9 打印所有的“水仙花数”,所谓“水仙花数”是指一个 3 位数,其各位数字立方和等于该数本身。例如,153 是一个水仙花数,因为153= 13+ 53+43o3.10 猴子吃桃就问题。猴子第一天摘下若干桃子,当即吃了一半又加一个,第二天早上又将剩下的桃子吃掉一半又加一个。以后每天早上都吃了前一天剩下的一半加一个。到第10 天早上时想吃,就只剩下一个桃

15、子了。求第一天共摘多少桃子。3.11 一个球从100m 高度自由落下,每次落地后反跳回原来高度的一半,再落下。求它在第10次落地时,共经过多少m?第10次反弹多高?3.12 用牛顿迭代法求方程2x3-4x2+3x-6=0 在 1.5 附近的根。3.13 用二分法求方程2x3-4x2+3x-6=0 在(10,10)之间的根。3.14 打印以下图案。*3.15 两个乒乓球队进行比赛,各队出三人,每人与对方队的一人进行一场比赛,甲队出A、 B、C 三人,乙队出X、 Y、 Z 三人。编程找出所有可能的对阵情况。抽签之后,有人向队员打听对阵情况 ,A 说他不和X 比 ,C 说他不和X、 Z 比 ,编程找

16、出三对手名单。第四章 算法4.1 什么是算法?试从日常生活中找个例子,描述它们的算法。4.2 结构化程序设计的基本思想是什么?4.3 用流程图表示求解以下问题的算法:(1) ( 1)依次将 10个数输入,找出其中的最小数。(2) (2)有3 个数,要求按由大到小的顺序打印出来。(3) (3)判断一个数n 能否同时被3 和 5 整除。(4) (4)将100到 200 之间的素数打印出来。(5) (5)求二次方程ax2+bx+c=0的根4.4 软件测试的目的是什么?4.5 什么是软件测试的白盒法和黑盒法?第五章 数组和指针5.1 输入 ai a2、 a10,计算 bi=(a2i-i+a2i)/2i

17、=1、2、105.2 编程将一个数组中的数据按逆序重新存放。例如,原来顺序是1、 2、 3、 4、 5,现在改为 5、 4、 3、 2、 1。5.3 已由一个排好序的整数数组,输入一个数据,要求按原来排序的顺序将这个整数插入到数组中去。5.4 编程将两个从小到到排好序的一维数组归并成一个有序的一维数组。5.5 n个人围成一圈,依次编号从1到no从编号为1的人开始从1到3报数,凡报数是 3的人退出圈子,编程输出依次出列的人的编号。5.6 编程将一个整数形式的数字字符串(可能含符号位)转换成一个整数输出。5.7 编程把一个输入的十进制整数转换为任意进制的数。5.8 -编程检查输入的字符串是否满足以

18、下两个条件:( 1)字符串中左括号“(”的个数与右括号“) ”的个数相等(2)从首字符开始起顺序查找,任何时候右括号“)”的个数都不能超过左括号。5.9 编程将一个字符串中的所有大写字母变成小写,而小写字母变成大写,其余字符不变。5.10 输入 30 个学生的平均成绩和姓名,按照平均成绩由高到低的顺序输出每个学生的姓名和平均成绩。5.11 建立两个4X4的整数矩阵 A和B,编程求矩阵A和B的和(和矩阵的元素等于两个相加的矩阵的相应元素之和)。5.12 找到一个二维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能不存在鞍点。5.13 不使用stracat函数,分别用数组和指针编程将

19、两个字符串连接成一个字符串。5.14 编程从一个字符串中删除子字符串,两个字符串都由键盘输入。以下习题要求用指针方法处理5.15 输入 3 个整数,按从小到大的顺序输出。5.16 有 n 个人围成一圈,顺序排号,从第1 个人开始从1 到 m 报数,凡数到m 的人出列,问最后留下的是原来圈中第几号的人员。5.17 编写程序将一个不确定位数的正整数进行三位分节后输出,如输入1234567,输出1,234, 567。5.18 输入 n 个整数,组成一个一维数组,以第k 个数为界,把后面的数前移k 个位置,即最后 n-k 个数变成最前面的n-k 个数。 原来的最前面的k 个数据移到最后变成最后k 个数

20、据。例如,数组原来有数组元素1 、2、3、4、 5、6,假设k 为2,则交换后结果为3、 4、5、6、1、 2 。要求总共只能使用一个数组。5.19 有5个预先设定的关键单词。编程输入一行字符串,从前到后查找其中出现的关键单 词及出现次数。5.20 输入一个数字字符串,将其转换为整数输出。4vij = " sik t kj5.21 输入矩阵s(3 4)和矩阵t (4X5),编程计算它们的乘积V。已知: kg i=1,2,3j=1,2,3,4,55.22 插入排序(在输入过程中完成排序)。任意顺序输入10个整数,把输入的第1个数放在 数组白第1个位置上。以后每读入个数都和已存入的数进行

21、比较,确定该数按照从小到大的顺序在数组应处的位置。把原处于该位置上以及后面的所有数都后移一个位置,把新输入的数填入空出来的位置上。这样数组中白数总是从小到大来排列的。10个数输入完以后输出数组。5.23 全班30个学生,输入每个学生的平均成绩和姓名,按照成绩从高到低输出学生姓名和 平均成绩。5.24 输入一个字符串,判断是否是回文。“回文”指顺读和逆读都一样的字符串。如“abcdcba:5.25 输入两个字符串s和t,判断s中是否包含字符串to5.26 从一个字符串中删除指定字符。要求字符串和指定删除的字符都从键盘输入。5.27 全班有30个学生,输入每个学生姓名、出生日期、学号、专业等信息;

22、编程实现查找 查找学生操作,要求输入待查找学生学号,输出该学生基本信息。第六章结构与联合类型6.1 编程实现两个复数的加法和减法运算。6.2 定义一个结构类型表示日期,编程输入今天的日期,输出明天的日期。6.3 定义一个结构类型表示日期,输入年号和该年的第几天的天数,输出该天的日期。6.4 定义一个结构类型表示日期,输入一个日期,输出该天是当年的第几天。6.5 有10个学生,每个学生的数据包括:学号、姓名、3门课程的成绩,输入 10个学生 的数据,求每个学生的平均成绩,并按平均成绩由高到低输出学生的姓名、学号和平均成绩。6.6 有10个学生,每个学生的数据包括:学号、姓名、3门课程的成绩,输入

23、 10个学生 的数据,求每个学生的平均成绩计算平均成绩在85分以上的人数。6.7 编程,输入10个用户的姓名和电话号码,并按照姓名的字典顺序输出用户的姓名和 电话号码。6.8 建立一个10个人的学生情况登记表,每个学生的信息包括:学号、姓名、性别、出 生日期(结构类型)、政治面貌,政治面貌可以是党员、团员或群众;对于党员,要 求填写入党时间(结构类型)、入党地点和入党介绍人姓名;对于团员,要求填写入 团时间和入团介绍人; 对于群众,不需要填写其它附加内容。 编程输入这些学生的信 息,并输出指定学号的学生的姓名、政治面貌和入党(团)时间。6.9 分配房间问题,按房间容量从小到大的次序输入20各房

24、间号和房间容量组成结构数组。在然后输入若干班号和各班人数,以输入班号为0周围输入结束的标志。 对于每个班,按照输入的次序按人数分配最合适的房间。输出班号、人数、有无房间分配、 及分配的房间号、容量。注意一个班只能分配一个房间,一个房间只能分配给一个班。第七章其他数据类型和预处理7.1 输入一个日期,计算当天是该年的第几天?要求其中月份设计成枚举类型数据。7.2 输入某单位每个职工的职工号和工资(以元为单位,不含小数位)编程求发工资时,每位职工工资所需的不同人民币的张数。并计算该单位职工的工资总和,以及累计所需要的不同人民币的张数。7.3 编写一个程序,求三个数中的最大数,要求用带参数的宏实现。

25、7.4 编程将用户输入的一个字符串中的大小写字母互换,即大写字母转换为小写字母,小写字母转换为大写字母。要求定义判断是大写、小写字母的宏以及大小写相互转换的宏。7.5 编程求三角形的面积,三角形的面积计算公式为aeanGqsa)(s b)(sc)其中1s=2(a+b+c),小2 c为三角形的边长。定义两个带参数的宏,一个用于求s,另一个求area。7.6 分析下列变量a、b、c分别占用多少字节的空间,并编程计算它们各自占据的字节数。 struct int i:5;int :6;unsigned j:7;a; struct int i:5;int:0;unsigned j:7;b;struct

26、int i:5;unsigned int j;int k:7;c;第八章函数8.1 编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。8.2 编写一个判断素数的函数,在主函数中输入一个整数,输出是否是素数的信息。8.3 编写一个程序,已知一个圆筒的半径、外径和高,要求调用函数计算该圆筒的体积。8.4 编写一个求水仙花数的函数,求 100到999之间的全部水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方的和等于该数。例如: 153就是一个水仙花数:153=1*1*1+5*5*5+3*3*38.5 编写一个函数,将给定的一个二维数组

27、(3X 4)转置,即行列互换。8.6 编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。8.7 求方程ax2+bx+c=0的根,从主函数输入 a、b、c的值,并用三个函数分别求当b2-4ac大于0、等于0 和小于 0 时的根,并输出结果。8.8 一只球从100 米高度自由落下,每次落地后反跳回到原高度的一半再落下。求它在第1.2 次落地时共经过多少米?第10 次反跳多高?8.9 编写一个函数,将两个字符串连接起来。8.10 编写一个函数,输入一个4 位正整数,输出该4 位数的 4 个数字的字符,要求数字之间空一个空格。如输入1990,应输出“1 9 9 0”。8.11 编

28、写一个函数,输入一行字符,将此字符串中最长的单词输出。8.12 编写一个函数,用“起泡法”对输入的 10个字符按由小到大的顺序排列。8.13 编写一个函数,输入一个十进制数,输出相应的十六进制数。8.14 使用指针,编写一个求串长的递归函数。8.15 使用指针,输入一个字符串,要求用递归方法实现以相反的顺序输出该字符串。8.16 编写一个函数,将一个链表按逆序排列,即将链头当链尾,链尾当链头。8.17 设有两个链表,每个链表的结点都包括姓名、学号、住址、专业等信息,要求编写一个函数把两个链表合并成一个链表,按学号升序排列。8.18 编写一个函数,创建一个学生信息的双向循环链表;链表中每个结点包

29、括学号、姓名、成绩等信息。8.19 有两个链表a和b,设结点中包括学号、姓名等信息。编程从链表a中删除与链表b中学号相同的那些结点。8.20 编程,实现任意长度的两个正整数的加法运算。8.21 编写一个函数,创建一个一个学生信息的单向有序链表;链表中每个结点包括学号、姓名、成绩等信息,链表中结点按照学号从小到大排列。第九章 文件9.1 将一个文本文件按二进制进行读操作,会出现什么问题?换行符在文件中占几个字节,其值是什么?9.2 如果打开一个文件后,程序在结束前会出现什么现象?并请解释你所发现的现象。9.3 你认为可能有几种情况使得以读方式打开一个文件出现故障,写方式打开文件的故障 呢?9.4

30、 如果在操作系统下可以用命令copy your.txt PRN 将文件 your.txt 送到打印机上打印出来。请你设计一个C 语言程序完成这个程序的打印。9.5 设计一个函数LineCount() 计算一个文本文件的行数。9.6 编程,输入的一系列书信息(书名,作者,出版社,单价,库存数目,类别等),把这些信息保存到文件 book,dat中。9.7 编写一个程序,当用户输入一个关键字后,从按照9.6 题要求建立好的data 文件中找出所有包含该关键字的书的信息。9.8 将题 9.6 中建立好的文件内容按照单价由高到低排序,将排好序的内容存入到文件newbook.dat 中。9.9 不改变题9

31、.6 建立好的文件book.dat 的内容,建立一个book.dat 文件的索引文件bindex.dat,该索引文件按照书名建立索引,bindex.dat文件中存储每本书的书名以及该书的信息记录在book.dat 文件中的记录号,例如index.dat 文件的某个数据值为“ C ProgrammingLanguage ” ,10表示书名为 “ CProgramming Language ”的信息是 book.dat 文件中的第10 个数据项。9.10 编写一个程序,输入一个文件名,按照十六进制在屏幕上输出文件的内容。9.11 编写一个程序,输入一个文件名,统计该文件的长度(字节数)。9.12

32、编写一个程序,输入一个文件名,将文件的内容反序后重新存储到一个新的文件中。第十章 综合程序设计10.1 编写一个程序,输入购买的商品的单价和数量,输出清单并统计总金额。10.2 编写一个航班售票系统,要求完成以下功能:(1) 假设该民航有若干航班,要求实现增加航班和取消某个航班的功能。(2) 查询:根据用户提出的终到站查询航班号、售票情况等航班信息;也可根据航班号,列出该航班已订票的乘客名单。(3) 订票:根据航班号为客户订票,如该航班有余票,则为客户订票;如该航班已满员,则显示相应信息。(4) 退票:按乘客要求退出已预定的机票。10.3 编写一个银行账户管理相系统,要求建立二进制文件存储银行

33、账户信息,其中每个用户账户信息中要求保存账户、用户身份证号码、用户姓名、用户地址、账户金额等,完成以下功能:( 1 )录入新账户;( 2)查询账户情,根据输入的账户查询用户情况和账户金额;( 3)修改账户信息,要求用户输入账户,根据用户需要修改除了账户之外的其余信息;( 4) 删除账户:根据输入的账户找到要删除的账户信息以后,经确认后删除该账户信息;10.4 编写一个扑克牌发牌的程序,将除了大小王之外的52 张牌发成四墩10.5 编写一个计算24 点的游戏的程序第一章 C 语言概述1.1、 CDCCC1.2、 编程题 ( 1 )解:main()printf("printf("

34、;n");printf("printf("n");printf("运行结果:* * * * * * * * * * n");Very Good! n");* * * * * * * * * * n");*Very Good!*1.1 2) (略)1.3 (略)1.4 (略)1.5 (略)第二章基本数据类型和表达式1.1 、 BABAB DDABD CCDAC ABADD DCBB1.2 (略)1.3 (略)1.4 (略)第三章控制流3 1解:main()float c,f;printf(" 请输入一个华氏

35、温度:n");scanf("%f",&f);c=(5.0/9.0)*(f-32);/注意5和 9 要用实型表示,否则5/9 值为零printf(" 摄氏温度为:%5.2fn",c);运行结果:请输入一个华氏温度:78摄氏温度为:25.564 2解:main()5 int x,y;printf(" 输入x: ");scanf("%d",&x);if(x<1)y=x;printf(" X=%d,Y=X=%dn",x,y);else if(x<10)y=2*x-1

36、;printf(" X=%d,Y=2*X-1=%dn",x,y);elsen",x,y);y=3*x-11;printf(" X=%d,Y=3*x-11=%d运行结果:1 :输入X:4X = 4,Y=2*X-1 =72:输入X:1X = - 1, Y = X = - 13:输入X:20X = 20, Y = 3*x-11 =493 3解:main()int t,a,b,c,d;printf(" 请输入四个数:");scanf("%d,%d,%d,%d",&a,&b,&c,&d);pr

37、intf("nn a=%d,b=%d,c=%d,d=%dn",a,b,c,d);if(a>b)t=a;a=b;b=t;if(a>c)t=a;a=c;c=t;if(b>c)t=b;b=b;b=t;if(b>d)t=b;b=d;d=t;if(c>d)t=c;c=d;d=t;printf("n 排序后的结果如下:n");printf("%d%d %d %d n",a,b,c,d);3.4 实际上应该有以下几种可能: a=0,不是二次方程。 (2) (2) bA2-4ac=0,有两个相等实根。 (3) (3) b

38、A2-4ac>0,有两个不等实根。 (4) (4) bA2-4ac<0,有两个共轲复根。据此编写程序如下:#include<math,h> main() float a,b,c,d,disc,x1,x2,realpart,imagpart;scanf ( “ %f,%f,%f ” ,&a,&b,&c);printf( “ The equation ” );if (fabs(a)<=le-6)printf( “ is not a quadratic ” ); elsedisc=b*b-4*a*c;if (fabs(disc)<=le-6

39、)printf( “ has two equal roots:%8n.”,4f-b/(2*a);else if (disc)>le-6x1=(-b+sqrt(disc)/2*a;x2=(-b-sqrt(disc)/2*a;printf( “ has distinct real roots: %8.4f and %8n.4” f ,x1,x2); elserealpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf( “ has complex roont” s: );printf(“ %8.4f+%8.n4”fi ,realpart,imagpa

40、rt);printf(“ %8.4f n” ,realpart,imagpart); 程序中用disc代表bA2-4ac,先计算disc的值,以减少以后的重复计算。对于判断bA2-4ac是否等于0时,要注意一个问题:由于 disc (即bA2-4ac)是实数,而实数在计算和存储时 会有一些微小的误差,因此不能直接进行如下判断:if (disc=0)因为这样可能会出现本来是零的量,由于上述误差而被判别为不等于零而导致结果错误。所以采取的办法是判别 disc 的绝对值 ( abs(disc) 是否小于一个很小的数(例如 10A-6) , 如果小于此数,就认为disc=0。程序中以realpart代

41、表实部p,以imagpart代表虚部q,以增加可读性。3.5分析此问题,折扣的变化是有规律的:折扣的“变化点”都是 250 的倍数(250, 500,1000, 2000, 3000) 。利用这一特点,可以在横轴上加一种坐标c, c 的值为s/250。 C 代表250 的倍数。当 c<1 时, 表示s<250, 无折扣;1<= c<= 2 时, 表示 250<= s <500, 折扣 d=2%;2<= c <4 时, d=5% ; 4<= c <8 时, d =8%; 8<= c <12 时, d =10%; c >

42、12 时, d =15%;据此写出程序如下:main()int c,s;float p,w,d,f;scanf( “ %f,%f,%d ” ,&p,&w,&s);if (s>=3000) c=12;else c=s/250;switch(c)case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7: =8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=15;break;f=p*w*s*

43、(1-d/100.0);printf( “ freight=%15.4f ” ,f);运行情况如下:100, 20, 300freight=588000.0000请注意:c、s是整型变量,因此 c=s/250为整数。当s>=3000时,令c=12,而不使c随s增 大,这是为了在 switch语句中便于处理,用一个case可以处理所有s>=3000的情况。3 6(略)4 7解:main()int n,t,number=20;float a=2,b=1,s=0;for(n=1;n<=number;n+)s=s+a/b;t=a;a=a+b;b=t;printf(" 总和

44、=%9.6fn",s);3 8(略)3 9解:main()int i,j,k,n;printf(" 水仙花数是:");for(n=100;n<1000;n+)i=n/100;j=n/10-i*10;k=n%10;if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf("n%d",n);3 10解:main()int day,x1,x2;day=9;x2=1;while(day>0)x1=(x2+1)*2;x2=x1;day-;printf("桃子总数=%dn",x1);3 11解:mai

45、n()float sn=100.0,hn=sn/2;int n;for(n=2;n<=10;n+)sn=sn+2*hn;hn=hn/2;,sn);printf( 第十次落地是共经过的米数为: “%f”printf( 第十次反弹 “%f 米 n” ,hn);3 12解:#include<math.h>main()float x,x0,f,f1;x=1.5;dox0=x;f=(2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;while(fabs(x-x0)>=1e-5);printf("方程的根=%6.2fn"

46、,x);3 13解:#include<math.h>main()float x0,x1,x2,fx0,fx1,fx2;doprintf(" 请输入 x1,x2 的值: n");scanf("%f,%f",&x1,&x2);fx1=x1*(2*x1-4)*x1+3)-6; fx2=x2*(2*x2-4)*x2+3)-6;while(fx1*fx2>0);dox0=(x1+x2)/2;fx0=x0*(2*x0-4)*x0+3)-6; if(fx0*fx1)<0)x2=x0; fx2=fx0; else x1=x0; f

47、x1=fx0;while(fabs(fx0)>=1e-5);printf(" 方程的根是%6.2fn",x0);314解:#include<math.h>main()int i,j,k;for(i=0;i<=3;i+)for(j=0;j<=2-i;j+) printf(" ");for(k=0;k<=2*i;k+) printf("*");printf("n");for(i=0;i<=2;i+)for(j=0;j<=i;j+) printf(" "

48、);for(k=0;k<=4-2*i;k+) printf("*");printf("n");3 15解:main()char i,j,k;for(i='x'i<='z'i+)for(j='x'j<='z'j+)if(i!=j)for(k='x'k<='z'k+)if(i!=k&&j!=k)if(i!='x'&&k!='x'&&k!='z')

49、printf(" 顺序为:na-%ctb-%ctc-%cn",i,j,k);运行结果:顺序为:a zb xc y第五章数组和指针5 2 解:#define N 5main()int aN=8,6,5,4,1,i,temp;printf("n 初始数组:n");for(i=0;i<N;i+)printf("%4d",ai);for(i=0;i<N/2;i+)temp=ai;ai=aN-i-1;aN-i-1=temp;printf("n 交换后的数组:n");for(i=0;i<N;i+)printf

50、("%4d",ai);5 3解:main()int a11=1,4,6,9,13,16,19,28,40,100;int temp1,temp2,number,end,i,j;printf(" 初始数组如下:");for(i=0;i<10;i+)printf("%5d",ai);printf("n");printf(" 输入插入的数据:");scanf("%d",&number);end=a9;if(number>end)a10=number;elsefo

51、r(i=0;i<10;i+)if(ai>number)temp1=ai;ai=number;for(j=i+1;j<11;j+)temp2=aj;aj=temp1;temp1=temp2; break;for(i=0;i<11;i+)printf("%6d",ai);5.4解:#include<stdio.h>#define M 6#define N 4void func(int a, int b, int c)int i=0,j=0,k=0;while(i<M && j<N)if(ai<bj)ck=ai

52、;i+;k+;elseck=bj;j+;k+;while(i<M)ck=ai;i+;k+;while(j<N)ck=bj;j+;k+;void main()int i;int aM=2,5,8,11,20,35;int bN=1,6,15,60;int cM+N;func(a,b,c);printf(" 归并结果:");for(i=0; i<M+N; i+)printf("%d",ci);pritnf("n");5.6解:#include<stdio.h>#include<math.h>#in

53、clude<string.h>void main()int i,base,len;char num20;float s=0;printf(" 输入数进制( 小于等于16):");scanf("%d",&base);printf(" 该进制的一个整数:");scanf("%s",num);len=strlen(num);i=len-1;while(i>=0)switch(numi)case 'A':case 'a':s=s+10*pow(float)base,

54、 (float)(len-i-1);break;case 'B':case 'b':s=s+11*pow(float)base, (float)(len-i-1);break;case 'C':case 'c':s=s+12*pow(float)base, (float)(len-i-1);break;case 'D':case 'd':s=s+13*pow(float)base, (float)(len-i-1);break;case 'E':case 'e':s=

55、s+14*pow(float)base, (float)(len-i-1);break;case 'F':case 'f':s=s+15*pow(float)base, (float)(len-i-1);break;case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':s=s+(n

56、umi-'0')*pow(float)base, (float)(len-i-1);break; i-;printf(" 十进制结果:%gnn",s);5.7解:#include<stdio.h>char itc(int n)char c;if(n>=0 && n<=9)c='0'+n;elsec='a'+n-10;return c;void main() int i=0;int base,n,j,num20;scanf("%d",&base); doi+;n

57、umi=n%base;n=n/base;while(n!=0)printf(" 转换的结果:");for(j=i; j>=1; j-)printf("%c",itc(numj);printf("n");5 13/ * 连接两个字符串(不用 strca) t */main()char s180,s240;int i=0,j=0;printf("n 请输入字符串1: ");scanf("%s",s1);printf("n 请输入字符串2: ");scanf("%s",s2);whi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论