C语言程序设计各章练习题文档格式.docx
- 文档编号:19879633
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:38
- 大小:52.50KB
C语言程序设计各章练习题文档格式.docx
《C语言程序设计各章练习题文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计各章练习题文档格式.docx(38页珍藏版)》请在冰豆网上搜索。
(×
用*表示)
编程题10:
从键盘上输入一个整数,然后把这个整数的各位逆序输出。
例如,输入123456,输出654321。
第6章数组
编程题11:
有一个已排好序的数组inta[11]={-5,-3,0,6,8,12,16,28,66,88};
,要求输入一个数后,按原来排序的规律将它插入数组中。
编程题12:
输入一个字符串(字符个数为小于100),统计其中字母、数字、空格以及其它符号的个数,并将大写字母改为小写字母,输出改变后的字符串。
(提示:
A的ASCII值为65,a的ASCII值为97)
输入一行字符(字符数组的个数小于100),统计其中字母、数字以及其它符号的个数。
(注:
数组限定字符个数小于100)
输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
字符个数不受限制)
第7章函数
编程题13:
编写一个子函数intfun(intn),其功能是判断整数n是否为素数,n是素数,返回值为1;
n不是素数,返回值为0。
调用该函数,将100~200之间的素数全部输出,要求屏幕上每个数占4位,每行显示5个素数,左对齐。
(循环、条件分支、子函数、变量的值传递、屏幕显示格式控制)
编程题14:
主函数中定义两个数组inta[5]={5,4,8,-1,2},b[10]={1,-1,2,4,8,4,0,9,3,7};
用子函数实现从小到大的冒泡排序,子函数为voidbubble(int[],int);
要求在主函数中显示排序前、后的数组a和b的元素。
(循环、条件分支、子函数、数组、地址传递)
编程题15:
用子函数实现从小到大的选择法排序,子函数为voidsort(int[],int);
编程题16:
用递归函数计算n!
编程题17:
编写一个子函数intfact(intn),计算n的阶乘。
调用该函数计算1!
+2!
+3!
+…+n!
,要求n从键盘输入,如输入n小于0,不予计算。
(循环、递归函数)
编程题18:
将16进制或8进制或2进制数转换为十进制数(字符数组、字符串函数、子函数、字符ASCII值与10进制数的转换,指数函数的调用)
编程实现八进制数转换为十进制数(注:
用字符数组n[100]接收输入,输入的八进制数肯定正确,无须检测;
八进制数转换为十进制数的子函数为inthtoi(charhnum[]);
)
编写一个子函数,将16进制数转换为10进制数。
编程题19:
编写一个子函数,主函数用字符数组作为实参,统计字符串中字母、数字、空格以及其他符号的个数,要求主函数中显示字符串与统计结果。
编程题20:
编写一个子函数,主函数输入一行字符,子函数找出字符串中最长的单词,并显示结果。
编程题21:
用递归法将一个整数n转换为字符串。
例如:
输入483,输出字符串“483”,n的位数不确定。
编程题22:
写一个子函数,将输入的字符串按反序存放,在main中输入和输出字符串。
第8章指针
编程题23:
编写一个子函数mystrcmp(char*s1,char*s2)实现2个字符串的比较。
编程实现两个字符串连接起来,不要用strcat函数。
用函数调用实现字符串的复制。
写一个函数,求一个字符串的长度。
在main函数中输入字符串,并输出其长度。
编程题24:
写一个用矩形法求定积分的通用函数,分别计算
编程题25:
输入一个字符串,内有数字和非数字字符,如:
A123x45617960?
302tab5876,将其中连续的数字作为一个整数,依次用数组存放这些数,统计有多少个整数,并输出这些数。
编程题26:
主函数输入整数的个数,用指针变量动态申请内存,并用键盘按任意次序输入n个整数,用子函数voidbubble(int[],int)实现从小到大的冒泡排序。
第9章结构
编程题27:
建立一个链表,每个结点包括:
学号、姓名、性别、年龄,输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
编程题28:
13个人围成一圈,从第一个人开始顺序报号,凡报到3者退出圈子,找出最后留在圈子中的人原来的序号。
要求用链表实现。
编程题29:
阅读链表操作相关函数,完成指定的操作函数。
链表内容仅限表头表尾添加、删除、查询、显示、保存,不考排序、中间节点的插入和删除
#include"
stdio.h"
malloc.h"
string.h"
structStudent
{
charname[20];
intnum;
intmath;
structStudent*next;
};
structStudent*Create(structStudent*head);
//生成数据链表
voidShowList(structStudent*head);
//显示链表
voidsaveList(structStudent*head);
//保存链表数据
voidAddTail(structStudent*head,structStudent*temp);
//表尾添加元素
structStudent*AddHead(structStudent*head,structStudent*temp);
//表头添加元素
structStudent*DeleteSomeone(structStudent*head);
//删除元素
voidFindSomeone(structStudent*head);
//查询元素
structStudent*DeleteHead(structStudent*head);
//删除表头
voidDeleteTail(structStudent*head);
//删除表尾
voidmain()
structStudent*head=NULL,*temp=NULL;
intchoice;
do
{
printf("
1:
创建数据链表\n"
);
2:
添加链表单元\n"
3:
删除链表单元\n"
4:
查询链表单元\n"
5:
删除表头\n"
6:
删除表尾\n"
7:
退出\n"
请输入功能选择:
"
scanf("
%d"
&
choice);
//cin>
>
choice;
if(choice==1)
{
head=Create(temp);
ShowList(head);
saveList(head);
}
elseif(choice==2)//表头添加元素
temp=(structStudent*)malloc(sizeof(structStudent));
printf("
姓名:
scanf("
%s"
temp->
name);
学号:
temp->
num);
成绩:
math);
AddTail(head,temp);
//head=AddHead(head,temp);
elseif(choice==3)//删除元素
{
head=DeleteSomeone(head);
elseif(choice==4)//查找元素
FindSomeone(head);
elseif(choice==5)//删除表头
head=DeleteHead(head);
elseif(choice==6)//删除表尾
DeleteTail(head);
elseif(choice==7)
谢谢使用!
\n"
else
非法输入,请输入1~7之间的数!
}while(choice!
=7);
}
structStudent*Create(structStudent*head)//包含读文件创建链表
structStudent*pS,*pEnd;
FILE*fp;
fp=fopen("
e:
\\list.txt"
"
r"
if(fp!
=NULL)//表明已有链表数据,直接读入
{
intflag;
while
(1)
pS=(structStudent*)malloc(sizeof(structStudent));
flag=fscanf(fp,"
%s%d%d"
pS->
name,&
pS->
num,&
if(flag==EOF)
break;
if(head==NULL)
head=pS;
else
pEnd->
next=pS;
pEnd=pS;
if(head!
=NULL)
pEnd->
next=NULL;
已从文件中读入数据创建链表!
deletepS;
fclose(fp);
}
if(head==NULL)
if(strcmp(pS->
name,"
000"
))
{
printf("
else
pEnd->
returnhead;
voidShowList(structStudent*head)//显示链表上的数据
printf("
学生姓名学号成绩:
while(head)
%20s"
head->
%6d"
%5d\n"
head=head->
next;
voidsaveList(structStudent*head)//保存链表上的数据
w"
if(fp==NULL)
无法创建文件e:
\\list.txt!
return;
fprintf(fp,"
%s%d%d\n"
name,head->
num,head->
fclose(fp);
voidAddTail(structStudent*head,structStudent*temp)//加在表尾
structStudent*last;
last=head;
last->
next=temp;
temp->
structStudent*AddHead(structStudent*head,structStudent*temp)//加在表头
structStudent*first;
first=head;
head=temp;
head->
next=first;
structStudent*DeleteSomeone(structStudent*head)
structStudent*temp;
intxnum,flag=0;
请输入学号:
xnum);
表为空!
returnhead;
if(head->
num==xnum)
temp=head;
deletetemp;
Student*first=head;
if(head->
next==NULL)
break;
next->
temp=head->
head->
next=temp->
deletetemp;
flag=1;
if(flag==0)
未发现!
returnfirst;
voidFindSomeone(Student*head)//按学号查找
%4d\n"
structStudent*DeleteHead(structStudent*head)
deletehead;
head=NULL;
structStudent*first=head;
deletefirst;
voidDeleteTail(structStudent*head)
structStudent*temp,*end;
end=head;
while(end->
next!
temp=end;
end=end->
temp->
第10章文件
编程题30:
编程实现:
有一个文本文件“a.txt”,里面有大小写英文字母、数字和其它符号。
要求分别统计其中大写字母、小写字母、数字以及其它字符的个数。
从键盘输入一串字符,并以#结束,将其中的大写字母全部转换成小写字母,并输出到计算机D盘文件“test.txt”中保存。
一串字符并不意味着一行字符,另外一串字符的具体字符个数是不定的。
编程题31:
从键盘输入一个字符串,将其中的小写字母全部转换为大写字母,然后输出到C盘“test”文件中保存,输入的字符串以“!
”结束。
编程题32:
有两个磁盘文件“A”和“B”,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件“C”中去。
编程题33:
有5个学生,每个学生有3门课程的成绩,从键盘输入学号、姓名、3门课程成绩,计算每个学生的平均成绩,将原有数据和平时成绩存放在磁盘文件“stud”中。
一、选择题
1.C语言是一种(C)程序设计语言。
A.低级B.面向对象C.高级D.智能
2.下列特性中,(D)不是C语言的特征。
A.运行效率高B.结构化程序设计C.能直接访问物理地址D.类型检测严格
3.下列标识符中,(D)不是C的关键字;
A.intB.floatC.charD.scanf
4.下列标识符中,(D)不是C的关键字;
A.sizeofB.shortC.longD.define
5.下列标识符中,(D)不是C的关键字;
A.gotoB.breakC.autoD.printf
6.下列标识符中,(D)不是C的关键字;
A.staticB.structC.voidD.include
7.下列自定义标识符中,(C)是不符合规定。
A.point1xB._point1xC.2pointxD.pointx_2
8.下列自定义标识符中,(C)是不符合规定。
A.MAXB._MINC.MAX$D.MIN_2
9.下列自定义标识符中,(D)是不符合规定。
A.point1_B._point1xC.pointxD.pointx_
#
10.下列自定义标识符中,(A)是不符合规定。
A.2_point1xB._point1xC.pointxD.pointx_2
11.下列四个选项中,是不合法的用户标识符的选项是(C)
A.P_0 B._abc C.goto D.temp
12.下面是不正确的字符串常量的是(A)
A.’abc’ B.“12’12” C.“0” D.“”
13.已知inta;
floatf;
scanf(“a=%d,f=%f”,&
a,&
f);
为了把10和3.14分别赋值给a和f,则正确的输入为(C)
A.10,3.14B.103.14C.a=10,f=3.14D.a=10f=3.14
14.输入语句为:
scanf("
%f,%f\n"
radius,&
high);
下列键盘输入(D)是正确的。
A.12↙;
B.1,2\n↙;
C.1↙2↙;
D.1,2↙;
15.输入语句为:
a=%f,b=%f"
从键盘输入(D)是正确的。
B.1,2↙;
D.a=1,b=2↙;
16.输入语句为:
a=%f,b=%f\n"
从键盘输入(D)是正确的。
D.a=1,b=2\n↙;
17.输入语句为:
a=%fb=%f"
从键盘输入(D)是正确的。
D.a=1b=2↙;
18.doublePI=3.1415926,输出语句为:
printf("
%3.2lf"
PI);
下列输出结果(D)是正确的。
A.3.1415926;
B.3.2;
C.3.1;
D.3.14;
19.doublePI=3.1415926,输出语句为:
%5.4lf"
下列输出结果(B)是正确的。
B.3.1415;
C.3.1416;
D.5.4;
20.doublePI=3.1415926,输出语句为:
%3.4lf"
下列输出结果()是正确的。
A.3.1415926;
B.3.141;
C.3.1415;
D.3.1416;
21.设x,y均为float型变量,则下列不合法的赋值语句是()
A.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 各章 练习题