您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 《C语言程序设计》期末程序设计练习题库-(1)
《C语言程序设计》期末程序设计练习题库第3章程序流程1、写程序,判断某一年是否闰年。(判断闰年条件①:非整百年数除以4,无余为闰,有余为平;②整百年数除以400,无余为闰有余平。)2、输入三个数a,b,c,要求按由小到大的顺序输出。3、打印出100-999之间所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。4、输出101至1000以内的所有的质数。5、运输公司对用户计算运费。距离(s)越远,每公里运费越低。具体标准如下:s250(km)没有折扣250=s500(km)2%折扣500=s1000(km)5%折扣1000=s2000(km)8%折扣2000=s3000(km)10%折扣3000=s(km)15%折扣设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费计算公式为:f=p*w*s*(1-d)编程要求:1)输入p、w、s数据,能够输出总运费。2)用switch结构实现编程。6、编写程序求下列分段函数的值。0x-5f(x)=5x2+5-5≤x510x-10x≥57、编写程序输出100-1000中17的倍数,每行输出5个数,每个数占5位。8、有一组序列:2/13/25/38/513/821/1334/2155/34…,编程计算前20项的和,并输出计算结果。9、输入一串字符,以回车键作为结束,统计出其中英文字母、数字和其他字符的个数。10.编程计算2!+4!+6!+8!+10!+12!+14!+16!+18!+20!,并输出结果。第4章数组1、采用“冒泡法”对任意输入的10个整数按由小到大的顺序排序。算法过程必须小的数向上冒,也就是第一遍扫描结束,最小的数组元数放在a[0],第二遍扫描结束,次小的数组元数放在a[1]。要求程序代码完整,程序在运行过程中输入10个整数,10个整数一行输入,每个整数输入时空一个空格;在排序算法处理后,按由小到达的顺序输出,输出也一行输出,每个整数之间空一个空格。2、已知二维数组a[3][4]为⎟⎟⎟⎠⎞⎜⎜⎜⎝⎛121110987654321,请实现这个二维数组的转置,将数组转换成b[4][3],效果为⎟⎟⎟⎟⎟⎠⎞⎜⎜⎜⎜⎜⎝⎛128411731062951。要求如下:用双重循环输入数组a的每个元数,并用双重循环输出数组b。输入输出效果如下:3、由键盘任意输入10个字符串,找出其中最大的串。4、请判断字符数组中的字符是否构成回文。回文就是字符从左向右读和从右向左读都一样。字符串长度不超过20个字符。5、用三维数组来保存输入的数据,并输出其中的值。数组为两个面,每个面两行,每行3列。数组元素的值请直接初始化处理,不用输入函数运行的时候输入。输出效果如下图。6、采用“直接插入法”对任意输入的10个整数按由小到大的顺序排序并输出。7、设一维数组中已存储一个从小到大的10个整数序列,请使用折半(二分)查找法查找指定整数key,如找到,输出“found”,如没有找到,输入”notfound”。8、往数组中输入长度小于50的字符串,将其中的数字字符按输入顺序提出,并存储到digital数组中,然后输出该数组。9、设计一个密码验证程序,已知密码长度不超过12位,系统密码为“admin”。程序要求:密码验证错误超过3次,提示“sorry”。10、请输入10个学生的名字,找出姓名中字符长度最长的名字。第5章函数1、由键盘任意输入两个整数,求两个整数的最小公倍数。2、编写fun函数,其功能是:将一个N*N的二维数组进行转置,转置以后的结果仍然存放在原来的二维数组中。在main函数中按如下数据对一个二维数组a进行初始化,并输出原始数组,调用main函数,输出转置的数组。原始数据1234转置后的数据13573456246856673569789046703、编写函数fun,该函数的功能是:求出整型数组a中N个数值的平均值,并将大于平均值的整数放入数组b中,数组b中的个数作为函数值返回。在main函数中,输入N个整数,调用fun函数,最后输出这N个整数中所有大于平均值的整数,每行输出5个数。4、数组元素作为函数参数,任输入10个三位数,计算有多少个数其各位数字和是55、用递归法求n!6、请编写一个函数完成将用户输入的一串整型数字字符转换为整型数值,例如用户输入串”567”,应该能返回整数值567。7、请编写一函数strcpy,函数原型声明为:voidstrcpy(char*target,char*src);能实现将字符串src拷贝到字符数组target。8、请编写一函数getFileExtName,函数原型声明为:char*getFileExtName(char*filename);能实现返回传入文件名的扩展名,例如用户传入的文件名为”d:\\finalexame\\exam.c”,函数返回字符串”c”。9、请编写一函数strcmp,函数原型声明为:intstrcmp(char*str1,char*str2);能实现两个串的大小比较,若str1比str2大返回1,若str1等于str2返回0,若str1小于str2返回-1。10.请编写一函数draw,函数原型声明为:voiddrawPyramid(intlevel);能实现绘制level层高度的金字塔。例如,输入层高为12,输出如下的图形第7章指针一、读程序并回答问题#includestdio.hvoidfun(int*a,intbott,inttop){inti,j;i=bott;j=top;while(ij){t=a[i];a[i]=a[j];a[j]=t;i++;j--;}}voidmain(){inta[10]={1,2,3,4,5,6,7,8,9,0};fun(a,0,3);fun(a,4,9);fun(a,0,9);for(i=0;i10;i++)printf(%d,a[i]);}写出程序的运行结果:_____________.二、自定义函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,计算这些最小值和,通过函数返回【函数头部规定如下:intSumColumMin(inta[M][N],int*min)】。在主函数中调用SumColumMin函数,任意输入M*N个数,输出所有列的最小值和这些最小值之和。三.编写fun()函数【提示:voidfun(char*a,int*t)】,其功能是实现统计形式参数s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中。例如:形参s所指字符串为:abcdef35agd3khe7,则数字出现的次数为4次。在main()函数中,从键盘输入一行字符(字符个数不超过80个)到字符数组str中,调用fun()函数,统计出数字出现的次数,并在屏幕上输出结果。要求:用指针实现fun函数的功能,否则按零分处理。四、编写一个fun函数,判断一个字符串中指定字符出现的次数。在主函数中从键盘上任意输入一个字符串和一个指定的字符,输出该字符在字符串中出现的次数。要求:用指针实现fun函数的功能,否则按零分处理,函数头部如下定义:intfindchar(char*src,charch)。五、invert函数功能:将数组a中的数据按相反的顺序存放。在主函数中,任意输入10个整数,调用invert函数,最后输出逆序存放的。要求:用指针实现invert函数的功能,否则按零分处理。六、在主函数中任意输入一字符串,调用func函数,并输出结果。func函数完成:将字符串逆序排列,并统计该字符串中所有的数字字符个数,函数返回统计出来的个数。要求:用指针实现func函数的功能,否则按零分处理。七、函数voidinsert(char*s1,char*s2)的功能是:在字符串s1中插入一个新串s2,在字符串s1中查找s2串的第一个字符,如果找到,则在此位置插入s2串,注意插入时会将找到的字符覆盖;如果没找到,即s2串中的第一个字符没有被s1所包含,则在s1尾部插入。main函数中输入字符串s1和s2,调用insert函数,输出插入后的字符串。例如:若字符串s1为abcdef,s2为d45,输出abcd45ef;若字符串s1为abcdef,s2为45,输出abcdef45。八、用指针编程实现:将用户输入的由数字字符和非数字字符组成的字符串(字符个数不超过256个)中的数字提取出来,例如:输入“msl123xyz456hkl789”,则提取的数字分别是123、456和789。将结果打印在屏幕上(要求每个数字一行)。要求:用指针实现函数的功能,否则按零分处理。九、编写字符串比较函数mystrcpy,其功能:对两个字符串进行比较,若这两个字符串相等,则返回0,若这两个字符串不相等,则返回它们第一个不同字符的ASCII码差;编写main()函数:从键盘输入两个字符串,调用mystrcpy函数,输出比较结果。要求:用指针实现mystrcpy函数的功能,否则按零分处理。十.编写函数fun,其功能是实现对从指定位置m开始的n个数反序。编写main函数,在main函数中,输入10个数,指定位置m和要反序的数据个数n;调用fun函数,最后输出反序后的10个数。例如:输入的数为:1,2,3,4,5,6,7,8,9,10。若要对从第3个数开始的7个数进行反序,则最后输出的结果为:1,2,9,8,7,6,5,4,3,10。要求:用指针实现fun函数的功能,否则按零分处理。十一.自定义函数完成库函数strcat,strcpy,strlen等字符串函数的功能,并编写主函数来测试。要求:用指针实现strcat,strcpy,strlenn函数的功能,否则按零分处理。第8章结构体1、建立100个人的电话号码薄信息。其中:(1)编号:code,整型。(2)姓名:name,不超出10个字符。(3)电码号码:tel,不超出15个字符要求:(1)任何常量数字(如“100”)在整个程序中只能出现1次(数字1、0除外)!(2)从键盘上输入这100个联系人的信息。(3)输出每个联系人的信息(每个人的信息单独占一行,各属性之间用“\t”分隔)2、建立30个学生的信息表,每个学生的数据包括学号、姓名、三门课的成绩。其中:(1)学号:no,12位数字组成的字符串,长度固定。(2)姓名:name,不超出10个字符。(3)三门课程的成绩:C、WEB、DS,均为整型要求:(1)任何常量数字(如“30”)在整个程序中只能出现1次(数字1、0除外)!(2)从键盘上输入这30个学生的信息(3)输出时显示每个学生的平均成绩(保留一位小数)(4)输出每个学生的信息(每个学生的信息单独占一行,各属性之间用“\t”分隔)3、学生信息管理系统中需要记录学生如下信息:(1)学号:12位数字组成的字符串,长度固定。(2)姓名:不超出10个字符。(3)性别:单个字符F(女)或M(男)表示。(4)生日:分别由年、月、日三个整型构成。(5)C语言课程的成绩:整型各信息标识符名称如下:numnamegenderbirthdayscoreyearmonthday要求:(1)请合理定义能够表示学生信息的结构体,其中birthday须使用嵌套结构体。(2)假设程序处理30位同学的信息,请使用合理的数据结构去存储他们的信息。(3)任何常量数字(如“30”)在整个程序中只能出现1次(数字1、0除外)!(4)依次接收用户输入所有学生的全部信息。(5)输出每个学生的信息(每个学生的信息单独占一行,各属性之间用“\t”分隔)4、银行大厅办理业务时,客户需要根据先后次序领取排号单,然后等待广播里喊到自己的号码,才办理业务。本程序模拟此排号流程,要求如下:(1)操作人员通过键盘输入每个客户的ID号(假设ID号不超出10个字符且唯一,即输入时不考虑重复问题),表示有一个客户排队。(2)可以输入任意个客户ID号,并且可以随时停止输入。(3)停止输入后,按排队顺序依次输出现有客户的ID号信息。5、学生信息管理系统中需要记录学生如下信息:(1)学号:
本文标题:《C语言程序设计》期末程序设计练习题库-(1)
链接地址:https://www.777doc.com/doc-1358688 .html