《C语言程序设计》各章练习题
2016年12月汇编
第1-3章C语言基础、编程规范、顺序结构程序设计
编程题1:设a和b均为int型变量,编写一个程序,通过键盘读入a,b的值,然后交换a,b的值。要求屏幕显示“输入2个整数,用空格隔开”的提示语句,并且输出交换前a,b的值,交换后a,b的值。
附加要求:(1)允许定义第3个变量,实现交换; (2)不允许定义第3个变量,实现交换。 第4章选择结构程序设计
编程题2:根据下列函数关系写程序,要求提示输入x的值,输出y的值。 编程题2:根据下列函数关系写程序,要求提示输入x的值,输出y的值。
编程题3:求ax2+bx+c=0方程的解。(只输出b2-4ac>=0的求解结果,小于0,输出“不予求解!”)
第5章循环结构程序设计
编程题4:编程计算?i。要求提示键盘输入n,如n为负数,不予计算,直接返回。
i?1n编程题5:编程序计算n!,要求n从键盘输入,如n小于0,不予计算。 编程题6:从键盘输入一个数n,判断n是否是素数。
编程题6:编写程序输出1~100之间的偶数,要求屏幕显示时5个偶数一行,每个数占5位,右对齐。
编程题7:编程计算100到1000之间有多少个数其各位数字之和是5,并将其输出。 编程题8:求满足下列条件的三位数n,它除以11(整数相除)所得到的商等于n的各位数字的平方和,且其中至少有二位数字相同的数。
编程题9:有一些十进制整数对ab和cd具有如下特性:ab×cd=ba×dc,其中a≠b且c≠d。如:12×42=21×24。请编程找出30~50之间满足上述等式所有m,n值,并按上述等式的格式输出。(×用*表示)
编程题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)
编程题12:输入一行字符(字符数组的个数小于100),统计其中字母、数字以及其它符号的个数。(注:数组限定字符个数小于100)
编程题12:输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。(注:字符个数不受限制) 第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:主函数中定义两个数组inta[5]={5,4,8,-1,2},b[10]={1,-1,2,4,8,4,0,9,3,7};用子函数实现从小到大的选择法排序,子函数为voidsort(int[],int);要求在主函数中显示排序前、后的数组a和b的元素。(循环、条件分支、子函数、数组、地址传递) 编程题16:用递归函数计算n!。
编程题17:编写一个子函数intfact(intn),计算n的阶乘。调用该函数计算1!+2!+3!+…+n!,要求n从键盘输入,如输入n小于0,不予计算。(循环、递归函数)
编程题18:将16进制或8进制或2进制数转换为十进制数(字符数组、字符串函数、子函数、字符ASCII值与10进制数的转换,指数函数的调用)
编程题18:编程实现八进制数转换为十进制数(注:用字符数组n[100]接收输入,输入的八进制数肯定正确,无须检测;八进制数转换为十进制数的子函数为inthtoi(charhnum[]);) 编程题18:编写一个子函数,将16进制数转换为10进制数。
编程题19:编写一个子函数,主函数用字符数组作为实参,统计字符串中字母、数字、空格以及其他符号的个数,要求主函数中显示字符串与统计结果。
编程题20:编写一个子函数,主函数输入一行字符,子函数找出字符串中最长的单词,并显示结果。
编程题21:用递归法将一个整数n转换为字符串。例如:输入483,输出字符串“483”,n的位数不确定。
编程题22:写一个子函数,将输入的字符串按反序存放,在main中输入和输出字符串。 第8章指针
编程题23:编写一个子函数mystrcmp(char*s1,char*s2)实现2个字符串的比较。 编程题23:编程实现两个字符串连接起来,不要用strcat函数。 编程题23:用函数调用实现字符串的复制。
编程题23:写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
112编程题24:写一个用矩形法求定积分的通用函数,分别计算 x?sinxdx、?cosxdx、?edx0?10编程题25:输入一个字符串,内有数字和非数字字符,如:A123x45617960?302tab5876,将
其中连续的数字作为一个整数,依次用数组存放这些数,统计有多少个整数,并输出这些数。
编程题26:主函数输入整数的个数,用指针变量动态申请内存,并用键盘按任意次序输入n个整数,用子函数voidbubble(int[],int)实现从小到大的冒泡排序。 第9章结构
编程题27:建立一个链表,每个结点包括:学号、姓名、性别、年龄,输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
编程题28:13个人围成一圈,从第一个人开始顺序报号,凡报到3者退出圈子,找出最后留在圈子中的人原来的序号。要求用链表实现。
编程题29:阅读链表操作相关函数,完成指定的操作函数。 #include\#include\#include\structStudent {
charname[20]; intnum; intmath;
structStudent*next; };
structStudent*Create(structStudent*head);//生成数据链表 voidShowList(structStudent*head);//显示链表
链表内容仅限表头表尾添加、删除、查询、显示、保存,不考排序、中间节点的插入和删除