《c程序设计期末复习题程序题.doc》由会员分享,可在线阅读,更多相关《c程序设计期末复习题程序题.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、写出程序运行结果1、写出程序运行结果:void main()int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; printf(“x=%dn”,x);2、写出程序运行结果:nvoid main()int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+;break; case 1:b+;break; case 2: a+;b+;break; case 3:a+;b+; printf(“a=%d,b=%dn”,a,b); 3、下列程序运行
2、后输出结果是#include main()int I,j,k;for(I=1;I=6;I+)for (j=1;j20-2*I;j+)printf(“ ”);/*一个空格*/for(k=1;k=I;k+)printf(“%4d”,I);printf(“n”);4、下列程序运行后输出结果是#include void sub(int x,int y,int *z)*z=y-x;main()int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(“%d,%d,%dn”,a,b,c);5、下列程序运行后输出结果是#include stdio.h#def
3、ine M 5main()int aM=1,2,3,4,5;int i,j,t;i=0;j=M-1;while(iJ)t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i+;j-;for(i=0;iM;I+)printf(%d,*(a+i);6、下列程序运行后输出结果是#include stdio.h#define M 5main()int aM=1,2,3,4,5;int i,j,t;i=0;j=M-1;while(iJ)t=*(a+i);*(a+i)=*(a+j);*(a+j)=t;i+;j-;for(i=0;iM;I+)printf(%d,*(a+i);二、编写求解下列问题
4、的程序1. 输入一个年份,判断该年度是否为闰年(用函数完成),输入输出在主函数完成。闰年识别条件:年份可以被400整除或者可被4整除但不能被100整除。2. 输入一行字符,以分号结束;分别统计其中的字母字符,数字字符和其它字符的个数。3. 定义一个包含10个元素的一维数组,从键盘上读入数组初始值,并编写程序将数组中的元素逆序输出。4、有200个正整数,且每个数均在1000至9999之间存放在数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。5. 已知两
5、个串为 s1=bc cad cabcadf,s2=abc,试求两个串的长度,并判断s2串是否是s1串的子串;如果s2是s1的子串,请指出s2在s1中的起始位置。6一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:abcdefghijklmnopqrstuvwxyzngzqtcobmuhelkpdawxfyivrsj则字符串encrypt被加密为tkzwsdf。试写一算法将输入的文本串进行加密后输出;另写一算法,将输入的已加密文本串进行解密后输出7、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按1
6、0%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?8、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?9、将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。10、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=123.编程找出10
7、00以内的所有完数。11、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?12猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。13两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。14、求1+2!+3!+.+20!的和15、给
8、一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。16有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。17、打印出杨辉三角形(要求打印出10行如下图) 11 11 2 11 3 3 11 4 6 4 11 5 10105 118、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(用数组实现)19求01000中能同时被7和13整除的那些数之和。打印输出这个和,不要有其它字符。20. 从键盘上输入20名学生的信息(学号、姓名、性别、成绩),计算出平均成绩,统计并输出高于平均成绩、低于平
9、均成绩的人数以及低于平均成绩的学生信息。21 设 A和B是两个单链表,其表中元素递增有序。试写一算法将A和B归并成一个按元素值递减有序的单链表C。22、写一算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同。 23、请编写一个函数jsValue(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠m的k个素数存入数组xx传回。24、把 s 字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其它字符不做改变。请考生编写函数chg(char *s)实现程序要求,最后把结果输出到文件bc1.c中。25、
10、读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS10.c中。替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。26、编写一个函数findStr(char *str,char *substr),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数
11、。例如,假定输入的字符串为asd asasdfg asd as zx67 asd mklo,子字符串为as,函数返回值是6。27、利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。 Xn+1=cos(Xn) 迭代步骤如下:(1)取X1初值为0.0;(2)X0=X1,把X1的值赋给X0;(3)X1=cos(X0),求出一个新的X1;(4)若X0-X1的绝对值小于0.,执行步骤(5),否则执行步骤(2);(5)所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。28、请编写函数countValue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的
12、平方根s,并作为函数值返回。例如若n为1000时,函数值应为:s=153.。29、在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。30、寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。31、选出100以上1000之内所有个位数字与十位数字之和被10除所得余
13、数恰是百位数字的素数(如293)。计算并输出上述这些素数的个数cnt以及这些素数值的和sum。 请考生编写函数countValue( )实现程序要求。32、已知在文件IN.c中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT1.c中。33、输入20个整数,利用起泡法对20个整数进行排序并输出。34、输入10个学生信息(学号、姓名、年龄、成绩)实现如下功能:l 计算学生的平均成绩l 统计不及格学生人数输出最高分和最低分学生信息。35、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(用指针实现,包括建立链表)