《C语言程序设计基础》习题集含答案.docx
- 文档编号:9884215
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:70
- 大小:46.31KB
《C语言程序设计基础》习题集含答案.docx
《《C语言程序设计基础》习题集含答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计基础》习题集含答案.docx(70页珍藏版)》请在冰豆网上搜索。
《C语言程序设计基础》习题集含答案
第一章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.本程序的第一个函数开始,到main函数结束
(5)以下叙述不正确的是()。
A.一个C程序可由一个或多个函数组成
B.一个C程序必须包含一个main函数
C.在C程序中,注释只能位于一条语句的最后面
D.C程序的基本组成单位是函数
1.2、编程题
(1)参照本章例题,编程输出如下信息:
**********
Verygood!
**********
(2)编写一个C程序,输出以下信息:
*****
*TurboC*
*****
1.3请根据自己的认识,写出C语言的主要特点。
1.4简述C程序主要由哪些部分构成?
1.5用户编写的C程序上机运行要经过哪些步骤?
第二章基本数据类型和表达式
2.1单项选择题
(1)以下不能用作变量名的是()
A)_26B)caseC)scanfD)Double
(2)以下合法的八进制数是()
A)0135B)068C)013.45D)o7
(3)若变量已正确定义,以下非法的表达式是()
A)a/=b+cB)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的表达式是()
A)x%=k%=5B)x%=(k-k%5)C)x%=k-k%5D)(x%=k)-(k%=5)
(7)能正确表示数学公式
,的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)))
(8)以下变量x、y、z均为double型且已正确赋值,不能正确表示代数式
的C语言表达式是()
A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z
(9)以下叙述中正确的是()
A)A)C程序中,赋值运算符的优先级最低。
B)B)若a是浮点型变量,C程序中允许进行以下赋值:
a=10,因此,浮点型变量中允许存放整型数。
C)C)若a和b类型相同,在执行了赋值a=b后b中的值将放入a中,b中的值将丢失。
D)D)在C程序中,除号运算符“/”两边的类型相同时才能进行相除运算。
(10))有以下程序:
#include
voidmain(void)
{intk=2,i=2,m;
m=(k+=j*=k++);printf("%d,%d\n",m,j);
}
执行后的输出结果是()
A)8,6B)8,3C)6,4D)7,4
(11)有以下程序:
#include
voidmain(void)
{unsigneda=32768;intb;
b=a;
printf("b=%d\n",b);
}
程序执行后的输出结果是()
A)b=32768B)b=32767C)b=-32768D)b=-1
(12)有以下程序段:
inta=1234;
printf("%2d\n",a);
其输出结果是()
A)12B)34C)1234D)输出宽度不足,无结果
(13)已有定义和语句:
doublea,b,c;
scanf("%lf%lf%lf",&a,&b,&c);
要求给a、b、c分别输入10.0、20.0、30.0,不正确的输入形式是()
A)10.0↙B)10.0↙C)1020↙D)10.0,20.0,30.0↙
20.0↙2030↙30.0↙
30.0↙
(14)已有定义语句:
intx=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)已有定义语句:
intm=0,n=1;执行表达式(m=5<3)&&(n=7>9)后,n的值是()
A)1B)0C)3D)4
(17)以下选项中非法的字符常量是
A)′\12′B)′\0xff′C)′,′D)′\′
(18)表达式′9′-′3′的值是()
A)整数6B)字符6C)表达式不合法,无确定值D)字符9
(19)以下不能将变量n清零的表达式是()
A)n=n&~nB)n=n&0C)n=n^nD)n=n|n
(20)putchar函数可以向屏幕输出一个()
A)整型变量值B)浮点型变量值C)字符串D)字符或字符变量值
(21).若inta,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)|12345.6780|C)|12345.67800|D)|12345.678|
(23)若有以下程序段,其输出结果是()
inta=0,b=0,c=0;
c=(a–=a–5),(a=b,b+3);
printf("%d,%d,%d\n",a,b,c);
A)3,0,–10B)0,0,5C)–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,7FC)125,176,7DD)125,175,2F
2.2设圆半径为5,编写程序,求圆的周长和面积。
2.3设a=3,b=4,c=5,d=1.2,e=2.23,f=–43.56,编写程序,使程序输出为:
a=
3,b=4
c=**5
d=1.2
e=
2.23
f=–43.5600
**
(其中表示空格)
2.4.执行下列程序,按指定方式输入(其中表示空格),能否得到指定的输出结果?
若不能,请修改程序,使之能得到指定的输出结果。
输入:
2
3
4↙
输出:
a=2,b=3,c=4
x=6,y=24
程序:
#include
voidmain(void)
{
inta,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=%f\n",x,"y=%f\n",y);
}
第三章控制流
3.1输入一个华氏温度,要求输出摄氏温度。
公式为:
C=(F-32)*5/9
要求:
输出要有文字说明,保留2位小数。
3.2有一函数:
x(x<1)
y=2x-1(1≤x<10)
3x-11(x≥10)
写一程序,输入x值,输出y值。
3.3输入4个整数,要求按由小到大的次序输出。
3.4求二次方程ax2+bx+c=0的根。
3.5运输公司对用户计算运费。
公司规定,路程越远,每公里运费越低。
标准如下:
S<250km 没有折扣
250≤S<5002%折扣
500≤3<10005折扣
10000≤S<20008%折扣
2000≤S<300010%折扣
3000≤S15%折扣
设每公里每吨货物的基本运费为P,货物重为W,距离为S,折扣为d,分别用if结构和switch结构编一程序求总运费F,计算公式为:
F=P*W*s*(1-d)
3.6用π/4≈1-1/3+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+43。
3.10猴子吃桃就问题。
猴子第一天摘下若干桃子,当即吃了一半又加一个,第二天早上又将剩下的桃子吃掉一半又加一个。
以后每天早上都吃了前一天剩下的一半加一个。
到第10天早上时想吃,就只剩下一个桃子了。
求第一天共摘多少桃子。
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比,编程找出三对手名单。
第四章算法
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输入a1、a2、………、a10,计算bi=(a2i-1+a2i)/2i=1、2、…、10
5.2编程将一个数组中的数据按逆序重新存放。
例如,原来顺序是1、2、3、4、5,现在改为5、4、3、2、1。
5.3已由一个排好序的整数数组,输入一个数据,要求按原来排序的顺序将这个整数插入到数组中去。
5.4编程将两个从小到到排好序的一维数组归并成一个有序的一维数组。
5.5n个人围成一圈,依次编号从1到n。
从编号为1的人开始从1到3报数,凡报数是3的人退出圈子,编程输出依次出列的人的编号。
5.6编程将一个整数形式的数字字符串(可能含符号位)转换成一个整数输出。
5.7编程把一个输入的十进制整数转换为任意进制的数。
5.8-编程检查输入的字符串是否满足以下两个条件:
(1)字符串中左括号“(”的个数与右括号“)”的个数相等
(2)从首字符开始起顺序查找,任何时候右括号“)”的个数都不能超过左括号。
5.9编程将一个字符串中的所有大写字母变成小写,而小写字母变成大写,其余字符不变。
5.10输入30个学生的平均成绩和姓名,按照平均成绩由高到低的顺序输出每个学生的姓名和平均成绩。
5.11建立两个4×4的整数矩阵A和B,编程求矩阵A和B的和(和矩阵的元素等于两个相加的矩阵的相应元素之和)。
5.12找到一个二维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能不存在鞍点。
5.13不使用stracat函数,分别用数组和指针编程将两个字符串连接成一个字符串。
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个数据。
例如,数组原来有数组元素1、2、3、4、5、6,假设k为2,则交换后结果为3、4、5、6、1、2。
要求总共只能使用一个数组。
5.19有5个预先设定的关键单词。
编程输入一行字符串,从前到后查找其中出现的关键单词及出现次数。
5.20输入一个数字字符串,将其转换为整数输出。
5.21输入矩阵s(3×4)和矩阵t(4×5),编程计算它们的乘积v。
已知:
i=1,2,3j=1,2,3,4,5
5.22插入排序(在输入过程中完成排序)。
任意顺序输入10个整数,把输入的第1个数放在数组的第1个位置上。
以后每读入个数都和已存入的数进行比较,确定该数按照从小到大的顺序在数组应处的位置。
把原处于该位置上以及后面的所有数都后移一个位置,把新输入的数填入空出来的位置上。
这样数组中的数总是从小到大来排列的。
10个数输入完以后输出数组。
5.23全班30个学生,输入每个学生的平均成绩和姓名,按照成绩从高到低输出学生姓名和平均成绩。
5.24输入一个字符串,判断是否是回文。
“回文”指顺读和逆读都一样的字符串。
如“abcdcba”。
5.25输入两个字符串s和t,判断s中是否包含字符串t。
5.26从一个字符串中删除指定字符。
要求字符串和指定删除的字符都从键盘输入。
5.27全班有30个学生,输入每个学生姓名、出生日期、学号、专业等信息;编程实现查找查找学生操作,要求输入待查找学生学号,输出该学生基本信息。
第六章结构与联合类型
6.1编程实现两个复数的加法和减法运算。
6.2定义一个结构类型表示日期,编程输入今天的日期,输出明天的日期。
6.3定义一个结构类型表示日期,输入年号和该年的第几天的天数,输出该天的日期。
6.4定义一个结构类型表示日期,输入一个日期,输出该天是当年的第几天。
6.5有10个学生,每个学生的数据包括:
学号、姓名、3门课程的成绩,输入10个学生的数据,求每个学生的平均成绩,并按平均成绩由高到低输出学生的姓名、学号和平均成绩。
6.6有10个学生,每个学生的数据包括:
学号、姓名、3门课程的成绩,输入10个学生的数据,求每个学生的平均成绩计算平均成绩在85分以上的人数。
6.7编程,输入10个用户的姓名和电话号码,并按照姓名的字典顺序输出用户的姓名和电话号码。
6.8建立一个10个人的学生情况登记表,每个学生的信息包括:
学号、姓名、性别、出生日期(结构类型)、政治面貌,政治面貌可以是党员、团员或群众;对于党员,要求填写入党时间(结构类型)、入党地点和入党介绍人姓名;对于团员,要求填写入团时间和入团介绍人;对于群众,不需要填写其它附加内容。
编程输入这些学生的信息,并输出指定学号的学生的姓名、政治面貌和入党(团)时间。
6.9分配房间问题,按房间容量从小到大的次序输入20各房间号和房间容量组成结构数组。
在然后输入若干班号和各班人数,以输入班号为0周围输入结束的标志。
对于每个班,按照输入的次序按人数分配最合适的房间。
输出班号、人数、有无房间分配、及分配的房间号、容量。
注意一个班只能分配一个房间,一个房间只能分配给一个班。
第七章其他数据类型和预处理
7.1输入一个日期,计算当天是该年的第几天?
要求其中月份设计成枚举类型数据。
7.2输入某单位每个职工的职工号和工资(以元为单位,不含小数位)编程求发工资时,每位职工工资所需的不同人民币的张数。
并计算该单位职工的工资总和,以及累计所需要的不同人民币的张数。
7.3编写一个程序,求三个数中的最大数,要求用带参数的宏实现。
7.4编程将用户输入的一个字符串中的大小写字母互换,即大写字母转换为小写字母,小写字母转换为大写字母。
要求定义判断是大写、小写字母的宏以及大小写相互转换的宏。
7.5编程求三角形的面积,三角形的面积计算公式为
其中
,a、b、c为三角形的边长。
定义两个带参数的宏,一个用于求s,另一个求area。
7.6分析下列变量a、b、c分别占用多少字节的空间,并编程计算它们各自占据的字节数。
struct{
inti:
5;
int:
6;
unsignedj:
7;
}a;
struct{
inti:
5;
int:
0;
unsignedj:
7;
}b;
struct{
inti:
5;
unsignedintj;
intk:
7;
}c;
第八章函数
8.1编写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。
8.2编写一个判断素数的函数,在主函数中输入一个整数,输出是否是素数的信息。
8.3编写一个程序,已知一个圆筒的半径、外径和高,要求调用函数计算该圆筒的体积。
8.4编写一个求水仙花数的函数,求100到999之间的全部水仙花数。
所谓水仙花数是指一个三位数,其各位数字的立方的和等于该数。
例如:
153就是一个水仙花数:
153=1*1*1+5*5*5+3*3*3
8.5编写一个函数,将给定的一个二维数组(3×4)转置,即行列互换。
8.6编写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
8.7求方程ax2+bx+c=0的根,从主函数输入a、b、c的值,并用三个函数分别求当b2-4ac大于0、等于0和小于0时的根,并输出结果。
8.8一只球从100米高度自由落下,每次落地后反跳回到原高度的一半再落下。
求它在第10次落地时共经过多少米?
第10次反跳多高?
8.9编写一个函数,将两个字符串连接起来。
8.10编写一个函数,输入一个4位正整数,输出该4位数的4个数字的字符,要求数字之间空一个空格。
如输入1990,应输出“1990”。
8.11编写一个函数,输入一行字符,将此字符串中最长的单词输出。
8.12编写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列。
8.13编写一个函数,输入一个十进制数,输出相应的十六进制数。
8.14使用指针,编写一个求串长的递归函数。
8.15使用指针,输入一个字符串,要求用递归方法实现以相反的顺序输出该字符串。
8.16编写一个函数,将一个链表按逆序排列,即将链头当链尾,链尾当链头。
8.17设有两个链表,每个链表的结点都包括姓名、学号、住址、专业等信息,要求编写一个函数把两个链表合并成一个链表,按学号升序排列。
8.18编写一个函数,创建一个学生信息的双向循环链表;链表中每个结点包括学号、姓名、成绩等信息。
8.19有两个链表a和b,设结点中包括学号、姓名等信息。
编程从链表a中删除与链表b中学号相同的那些结点。
8.20编程,实现任意长度的两个正整数的加法运算。
8.21编写一个函数,创建一个一个学生信息的单向有序链表;链表中每个结点包括学号、姓名、成绩等信息,链表中结点按照学号从小到大排列。
第九章文件
9.1将一个文本文件按二进制进行读操作,会出现什么问题?
换行符在文件中占几个字节,其值是什么?
9.2如果打开一个文件后,程序在结束前会出现什么现象?
并请解释你所发现的现象。
9.3你认为可能有几种情况使得以读方式打开一个文件出现故障,写方式打开文件的故障呢?
9.4如果在操作系统下可以用命令copyyour.txtPRN将文件your.txt送到打印机上打印出来。
请你设计一个C语言程序完成这个程序的打印。
9.5设计一个函数LineCount()计算一个文本文件的行数。
9.6编程,输入的一系列书信息(书名,作者,出版社,单价,库存数目,类别等),把这些信息保存到文件book,dat中。
9.7编写一个程序,当用户输入一个关键字后,从按照9.6题要求建立好的data文件中找出所有包含该关键字的书的信息。
9.8将题9.6中建立好的文件内容按照单价由高到低排序,将排好序的内容存入到文件newbook.dat中。
9.9不改变题9.6建立好的文件book.dat的内容,建立一个book.dat文件的索引文件bindex.dat,该索引文件按照书名建立索引,bindex.dat文件中存储每本书的书名以及该书的信息记录在book.dat文件中的记录号,例如index.dat文件的某个数据值为{“CProgrammingLanguage”,10}表示书名为“CProgrammingLanguage”的信息是book.dat文件中的第10个数据项。
9.10编写一个程序,输入一个文件名,按照十六进制在屏幕上输出文件的内容。
9.11编写一个程序,输入一个文件名,统计该文件的长度(字节数)。
9.12编写一个程序,输入一个文件名,将文件的内容反序后重新存储到一个新的文件中。
第十章综合程序设计
10.1编写一个程序,输入购买的商品的单价和数量,输出清单并统计总金额。
10.2编写一个航班售票系统,要求完成以下功能:
(1)假设该民航有若干航班,要求实现增加航班和取消某个航班的功能。
(2)查询:
根据用户提出的终到站查询航班号、售票情况等航班信息;也可根据航班号,列出该航班已订票的乘客名单。
(3)订票:
根据航班号为客户订票,如该航班有余票,则为客户订票;如该航班已满员,则显示相应信息。
(4)退票:
按乘客要求退出已预定的机票。
10.3编写一个银行账户管理相系统,要求建立二进制文件存储银行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计基础 语言程序设计 基础 习题集 答案