高级程序设计期末习题.doc_第1页
高级程序设计期末习题.doc_第2页
高级程序设计期末习题.doc_第3页
高级程序设计期末习题.doc_第4页
高级程序设计期末习题.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.输入用单个字母表示的成绩信息,转换为百分制分数。说明:输入A,输出95;输入B,输出85;输入C,输出75;输入D,输出65;输入E,输出65.#includemain()int score;char grade;scanf(%c,&grade);switch(grade)case A:printf(95n);break;case B:printf(85n);break;case C:printf(75n);break;case D:printf(65n);break;printf(n);return 0;2.根据下面的函数关系,输入X,计算Y,要求输出结果保留两位小数。(1)当x小于5时,y=0(2)当x大于5且小于等于10时,y=sin(x)(3)当x大于10时,y=cos(x)+sin(x)#include#includemath.hmain()float y,x;scanf(%f,&x);if (x5&x10)printf(%.2fn,y=cos(x)+sin(x);else printf(“No numbern”);3.根据下面的函数关系,输入X,计算Y,要求输出结果保留两位小数。(1)当x小于6时,y等于(1+x)(2)当x大于等于6且小于10时,y等于(x-2)的平方加1(3)当x大于等于10时,y等于sin(x)+2x#include#includemath.hmain()float y,x;scanf(%f,&x);if (x=6&x=10)printf(%.2fn,y=sin(x)+1);4.从键盘输入三个整数,找处其最大和最小的数,并输出。#includemain()int a,b,c,max,min;scanf(%d,%d,%d,&a,&b,&c);max=a;min=a;if(ab)min=b;if(bc)min=c;else if(ca)max=c;else if(ba)min=a;max=b;if(cb)max=c;if(ca)min=c;printf(max=%d,min=%d,max,min);5.输入一个3位的正整数,判定该正整数是否为一个回文数。(所谓回文数是指正读和反读都相同的数,例如131)。#includemain()int x;printf(请输入一个三位数n);scanf(%d,&x);if(x/100=x%10)printf(该数为回文数n);elseprintf(该数不是回文数n);6.从键盘输入三个整数a、b、c,输出其中最大的数。#includemain()int a,b,c,max;printf(输入三个整数n);scanf(%d,%d,%d,&a,&b,&c);max=a;if(ba&bc)max=b;if(ca&cb)max=c;printf(The bigest num is:%dn,max);7.从键盘输入任意一个字母,如果其为大写字母,则转为小写字母;如果其为小写字母,请转换为大写字母;其他情况保持不变,计算并输出。#include int main() char tmp; scanf(%c , &tmp); if( tmp = 65 & tmp =97 & tmp = 122) tmp =tmp - 32; printf(%c , tmp); return 0; 8.从键盘读入一个实数,对其进行四舍五入处理,要求精确到到小数点后两位。例如输入12.345,其结果为12.35;输入12.341,其结果为12.34。#includemain()float a;int b;printf(input a numn);scanf(%f,&a);b=a*100+0.5;a=b/100.0;printf(the num is:%.2fn,a);9.从键盘输入一个三位整数,计算其上下边界,例如123,其下边界为100,上边界为199,依此类推#includemain()int a,up,down;scanf(%d,&a);up=a/100*100;down=a/100*100+99;printf(up=%d,down=%dn,up,down);10.从键盘输入一个三位纯小数,计算其上下边界,例如0.123,其下边界为0.100,上边界为0.199,依此类推#includevoid main()float a,up,down,i;printf(请输入三位小数n);scanf(%f,&a);for(i=0;i1;i=i+0.1)if(i=a)down=i;up=i+0.1-0.001;printf(下边界%.3f,上边界%.3fn,down,up);11.根据下面的函数关系,对输入的每个x值,计算出相应的y值并输出结果。(1)当x小于1时,y等于2+cos(x)(2)当x大于等于1且x小于2时,y等于x的平方加上sin(x)(3)当x大于等于2时,y等于(x-2)的平方根;要求:按格式输出x和y的值,要求小数点后保留2位。#include#includemath.hmain()float y,x;scanf(%f,&x);if (x=1&x=2)printf(%.2fn,y=sqrt(x-2);12.从键盘输入国际货币表示的商品价格,请转换为人民币。要求:仅仅考虑美元($)和欧元,汇率分别6和8。例如输入$100,输出600,输入E100,输出800#includemain()char a;int b;scanf(%c%d,&a,&b);switch(a)case E:printf(¥%dn,8*b);break;case $:printf(¥%dn,6*b);break;13.从键盘读入一个自然数,判定其是否为素数,如果是,输出Yes,否则输出No#include#includemain()int i,a,k;printf(Please input a num:n);scanf(%d,&a);k=(int)sqrt(a);for(i=2;ik) printf(YESn);else printf(NOn);14.输出公元1000至今的所有闰年的数量#includemain()int year,i;for(i=1000;i=2014;i+)if(i%4=0&i%100!=0)printf(%dn,i);if(i%400=0)printf(%dn,i);15.计算1-1/2+1/3-1/4+1/n的和,在主函数输入n,计算输出结果。#includemain()int i,n,j=1;double sum=0.0;printf(Please input a num:n);scanf(%d,&n);for(i=1;i=n;i+)sum+=1.0/i*j;j=-j;printf(sum=%lfn,sum);16.从键盘输入一个自然数,判定其是否为完数,如果是,输出Yes,否则输出No。完数是指一个整数的所有因子之和等于其自身的数,例如6=1+2+3。#includemain()int a,i,s=0;scanf(%d,&a);for(i=1;ia;i+)if(a%i=0)s+=i;if(a=s)printf(YESn);elseprintf(Non);17.计算分数序列:2/1,3/2,5/3,8/5,13/8,21/13,的前10项之和并输出。#includemain()int i;float s=0.0,a=2.0,b=1.0,k=0.0,j=1.0;for(i=1;i=10;i+)s+=a/b*j;j=-j;k=a;a=b+a;b=k;printf(S=%fn,s);18.计算Fibonacci数列中前5项的和。提示:Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1,F(n)=F(n1)F(n2)。#includemain()int a5,s=0,i;a0=0;a1=1;for(i=2;i=4;i+)ai=ai-1+ai-2;for(i=0;i=4;i+)s+=ai;printf(S=%dn,s);19.计算全部水仙花数的和(提示:“水仙花” 数是指一个三位数,其各位数字的立方和等于该数本身,例如:153).#includemain()int a,b,c,s=0,i;for(i=100;i1000;i+)a=i%10;b=i/100;c=i/10-b*10;if(i=a*a*a+b*b*b+c*c*c)s+=i;printf(S=%dn,s);20.计算S=1-1/12+1/12-1/12+1/12-1/102的值,并输出21.计算1/1+1/(1+2)+1/(1+2+3)+1/(1+2+n)的,要求小数点后保留6位#includevoid main()double sum=0;int n,i,j=0;scanf(%d,&n);for(i=1;i=n;i+)j+=i;sum+=1.0/j;printf(%lfn,sum);22.由x,y二个数字组成二位数xy和yz,且xy+yz=102。如果有解,输出所有解,否则输出无解#include main() int x,y,z,count=0; for(x=1;x10;+x) for(y=1;y10;+y) for(z=0;z10;+z) if(x*10+y+y*10+z=102) printf(%d %d %dn,x,y,z); count+; if(!count) printf(无解n); 23.由x,y二个数字组成二位数xx和yz,且xy+yz=124。如果有解,输出所有解,否则输出无解#include main() int x,y,z,count=0; for(x=1;x10;+x) for(y=1;y10;+y) for(z=0;z10;+z) if(x*10+x+y*10+z=124) printf(%d %d %dn,x,y,z); count+; if(!count) printf(无解n); 24.计算1/2,2/3,3/5,5/8,8/13,13/21, 的前10项和,并输出结果。#includemain()float sum=0.0,j=1.0,k=2.0,m;int i,n;for(i=1;i=10;i+)sum+=j/k;m=k;k=j+k;j=m;printf(%fn,sum);25.编写函数astrcat(char *t,char *s)将字符串s中的全部大写字符连接到字符串t的尾部,要求在主函数中定义数组存储字符串信息,调用函数实现链接后,输出结果。#include#includeastrcat(char *t,char *s);void main( ) char s140,s240,*s,*t;t=s1;s=s2;printf(Input string1:n);gets(s1);printf(Input string2:n);gets(s2);astrcat(s1,s2);printf(The string is :%sn,s1);astrcat(char *t,char *s)int i,j=0,n,m;m=strlen(t);n=strlen(s);for(i=0;i=A&si=Z)tm+j=si;j+;tm+j=0;26.编写函数clear(char *t)将字符串t中的非英文字母删除,要求在主函数中定义数组存储字符串信息,调用函数实现链接后,输出结果。#include#includevoid clear(char *t);void main()char *t,s140;t=s1;printf(Input the string:n);gets(t);clear(s1);printf(The string is:%sn,s1);void clear(char *t)int n,i,j=0;n=strlen(t);for(i=0;i=a&ti=A&ti=Z)tj=ti;j+;tj=0;27.已知一有序序列1,2,4,6,12,14,要求从键盘输入一个整数,将此整数插入到此有序序列中。要求输出原始数组和插入之后的数组。要求编制函数insert(int *p,int d)实现此功能,在主函数调用此函数。提示:例如输入整数位7,首先要找到7在整个序列中的位置,然后将7插入到当前位置。#include#includevoid insert(int *p,int d)int i,j,n=6;for(i=0;i6;i+)printf(%d.,pi);printf(n);for(i=0;i6;i+)if(d=j;i-)pi+1=pi;pi+1=d;for(i=0;i=n;i+)printf(%d.,pi);printf(n);main()int *p,s17=1,2,4,6,12,14,d;p=s1;printf(Input a num:n);scanf(%d,&d);insert(s1,d);return 0;28. 从键盘读入一整数,判断其在数组3,23,-7,8,9,10中是否存在,假设此数组中不存在重复的数字。若存在,则删除此数;否则,提示此数不存在。要求:编制函数remove(double *p,double d)实现数据的清理工作,并输出原始数据和删除后的数据。#includevoid mremove(double *p,double d)int i,j=0;for(i=0;i6;i+)printf(%lfn,pi);for(i=0;i6;i+)if(d=pi)j=i;break;else if(d!=pi)j=7;break;if(j!=7)for(i=j;i6;i+)pi-1=pi;p5=0;for(i=0;i5;i+)printf(%lfn,pi);elseprintf(此数不存在n);main()double *p,d,s110=3,23,-7,8,9,10;printf(Input a numn);scanf(%lf,&d);p=s1;mremove(s1,d);return 0;29.从键盘读入一字符c,判断其在字符串English中是否存在,假设此数组中不存在重复的字符。若存在,则删除此数;否则,提示此数不存在。要求:编制函数del(char *p,char c)实现数据的清理工作,并输出原始数据和删除后的数据。#include#includevoid del(char*p,char c);main()char *p;char c;char s1=English;p=s1;scanf(%c,&c);del(p,c);return 0;void del(char *p,char c)int n,i,j=0;n=strlen(p);printf(%sn,p);for(i=0;in;i+)if(pi=c)j=1;for(i=i;in;i+)pi=pi+1;printf(%sn,p);if(j=0)printf(不存在n);30.编写函数mstrcat(char *t,char *s)将字符串s中的全部英文字符连接到字符串t的尾部。#include#includevoid mstrcat(char *t,char *s);void main()char *t,*s,s240,s140;t=s1;s=s2;printf(Input the string1:n);gets(t);printf(Input the string2:n);gets(s);mstrcat(s1,s2);printf(The string is:%sn,s1);void mstrcat(char *t,char *s)int n,m,i,j=0;n=strlen(t);m=strlen(s);for(i=0;i=a&si=A&si=Z)tn+j=si;j+;tn+j=0;31. 编写函数itoa(int n,char *p)实现将整数n转换为字符串存储到p中。要求在主函数中输入整数n,调用itoa函数,并将结果输入到字符串。#includeitoa(char *p,int n)int i=0,j;char c;while(n!=0)pi=n%10+0;i+;n/=10;pi=0;j=-i;while(j-ii)c=pj-i;pj-i=pi;pi=c;i-;void main()char *p,s110;int n;p=s1;scanf(%d,&n);itoa(p,n);printf(%sn,s1);32.编写函数mstrcpy(char *t,char *s,int m)字符串s中的第m个字符开始的全部字符复制成另一个字符串t。要求在主函数中初始化字符串s,从键盘读入m的值,输出字符串s和复制的字符串t。#include#includevoid mstrcpy(char *t,char *s,int m)int n,i,a=0;n=strlen(t);for(i=m-1;i100;i+)tn+a=si;a+;printf(%sn,t);main()char *t,*s;char s1100,s2100;int m;printf(Input the string1:n);gets(s1);printf(Input the string2:n);gets(s2);printf(The num:n);scanf(%d,&m);t=s1;s=s2;mstrcpy(t,s,m);return 0;33.编写函数clear(char *t)将字符串t中的全部英文字母删除,要求在主函数中定义数组存储字符串信息,调用函数实现链接后,输出结果。#include#includevoid clear(char *t);void main()char *t,s140;t=s1;printf(Input the string:n);gets(t);clear(s1);printf(The string is:%sn,s1);void clear(char *t)int n,i,j=0;n=strlen(t);for(i=0;in;i+)if(ti=0)tj=ti;j+;tj=0;34.编写函数mstrcat(char *t,char *s)将字符串s中的全部数字字符连接到字符串t的尾部。#include#includevoid mstrcat(char *t,char *s);void main()char *t,*s,s240,s140;t=s1;s=s2;printf(Input the string1:n);gets(t);printf(Input the string2:n);gets(s);mstrcat(s1,s2);printf(The string is:%sn,s1);void mstrcat(char *t,char *s)int n,m,i,j=0;n=strlen(t);m=strlen(s);for(i=0;i=0&si=9)tn+j=si;j+;tn+j=0;35.在物理实验中,获得5个数据0.89,0.78,0.0009,0.67,0.56,其中有一个数据小于0.001,此数据无效,将此无效数据删除。要求编制函数cleandata(double *p)实现数据的清理工作,并在主函数输出删除之前的数组和删除之后的数组。#includevoid cleandata(double *p)int i,j;for(i=0;i5;i+)printf(%lfn,pi);for(i=0;i5;i+)if(pi0.0010)j=i;break;for(i=j;i5;i+)pi=pi+1;p4=0;for(i=0;i4;i+)printf(%lfn,pi);main()double *p,s15=0.89,0.78,0.0009,0.67,0.56;p=s1;cleandata(s1);return 0;前年题注:与上面重复的题不再编辑,循环部分只挑较为特殊的题做。第一题1.根据下面的函数关系,对输入的每个x值,计算出相应的y值并输出结果。(1)当x小于1时,y等于2+cos(x)(2)当x大于等于1且x小于2时,y等于x的平方加上sin(x)(3)当x大于等于2时,y等于(x-2)的平方根;要求:按格式输出x和y的值,要求小数点后保留3位。(if语句,输出用%.3f)2. 从键盘读入一个实数,对其进行四舍五入处理,要求精确到到小数点后两位。例如输入12.345,其结果为12.35;输入12.341,其结果为12.34。(int a=n*100+0.5)3. 从键盘输入三个整数a、b、c,输出其中最小的数。4. 从键盘输入三个整数a、b、c,输出其中最大的数。5. 从键盘输入一个百分制成绩,将其转换为等级A、B、C、D、E后输出成绩。转换规则为:90分以上为A;8089分为B;7079分为C;6069分为D; 60分以下为E。(if语句)6. 输入一个3位的正整数,判定该正整数是否为一个回文数。(所谓回文数是指正读和反读都相同的数,例如131)。(if(a%10=a/100)7. 从键盘输入一个字母表示的成绩,将其转换为分数。规则是A对应95、B对应85、C对应75、D对应65、E对应55。要求输入字母后,输出对应的成绩8. 输入一个整数,将其数值按小于10,1099,100999,1000以上分类并显示(例如:输入358时,显示358 is 100 to 999)。(if)9. 根据下面的函数关系,输入X,计算Y,要求输出结果保留两位小数。(1)当x小于2时,y等于(1+x)(2)当x大于等于2且小于4时,y等于(x-2)的平方加1(3)当x大于等于4时,y等于(x-2)的平方加上(x-1)的立方10.根据下面的函数关系,输入X,计算Y,要求输出结果保留两位小数。(1)当x大于0时,y=0(2)当x大于0且小于等于10时,y=x(3)当x大于10时,y=0.5+sin(x)11.从键盘读入一个3位整数,将各个权位的数字转化为字符后输出。例如输入123,则转换为三个字符1,2,3,输出结果为1,2,3.(a=n%100;b=(n%100)/10;c=n%10;)12.从键盘输入三个数字字符,将其转换为三位整数后输出。例如输入1,2,3,转换为整数123后输出。#includemain()int a,b,c,n;char x,y,z;scanf(%c,%c,%c,&x,&y,&z);a=x-48;b=y-48;c=z-48;n=a*100+b*10+c;printf(%dn,n);第二题13.计算1-1/2+1/3-1/4+1/n的和,在主函数输入n,计算输出结果。14.计算1-1000之间所有完数的和。完数是指一个整数的所有因子之和等于其自身的数,例如6=1+2+3。15.计算1/2,2/3,3/5,5/8,8/13,13/21, 的前n项和,在主函数输入n,计算并输出结果。16.计算分数序列:2/1,3/2,5/3,8/5,13/8,21/13,的前20项之和并输出。17.输出1000以内的全部素数的和。#include#includemain()int i,a,k,sum=0;for(a=2;a1000;a+)k=(int)sqrt(a);for(i=2;ik) sum+=a;printf(%dn,sum);18. 由x,y,z三个数字组成三位数xyz和yzz,且xyz+yzz=532。求x,y,z的值#includemain()int x,y,z;for(x=1;x10;x+)for(y=1;y10;y+)for(z=0;z10;z+)if(x*100+y*100+y*10+z*10+2*z=532)printf(%d %d %d,x,y,z);19.计算Fibonacci数列中前n项的和。提示:Fibonacci数列F(n)的定义为:F(0)=0,F(1)=1,F(n)=F(n1)F(n2)。20.计算全部水仙花数的和(提示:“水仙花” 数是指一个三位数,其各位数字的立方和等于该数本身,例如:153),在主函数调用fun函数,计算全部水仙花数的和。21.计算S=1-1/22+1/32-1/42+1/52-1/1002的值,并输出22.计算e=1/1!+1/2!+1/3!+1/20!,并输入,要求小数点后保留6位23.由a,b,c三个数字组成三位数abc和cba,且abc+cba=1333。求a,b,c的值24.输出公元元年至今的所有闰年的数量和数字和#includemain()int i,sum=0,num=0;for(i=1;i=2014;i+)if(i%4=0&i%100!=0|i%400=0)sum+=i;num+;printf(Sum=:%dnNum=:%dn,sum,num);第三题25.在物理实验中,获得5个数据0.89,0.78,0.0009,0.67,0.56,其中有一个数据小于0.001,此数据无效,将此无效数据删除。要求编制函数cleandata(double *p)实现数据的清理工作,并在主函数输出删除之前的数组和删除之后的数组。26.在跳水比赛中,有10个评委共同打分,评分规则是去除最高分和最低分,然后计算剩余8个评委分数的平均分作为最终成绩。要求编制打分函数pscore(double *p),输入一次跳水动作中,10个评委打出的成绩,并计算此动作的最终成绩。在主函数中调用此函数计算某次动作的分数。#includevoid pscore(double *p)int i;double n,max,min,sum=0.0;max=p0;min=p0;for(i=0;imax) max=pi;if(pimin) min=pi;printf(The max is:%lfn,The min is:%lfn,max,min);for(i=0;i10;i+)sum+=pi;sum=sum-max-min;n=sum/8;printf(The score is:%lfn,n);main()int i;double *p,s10;for(i=0;i10;i+)scanf(%lf,&si);p=s;pscore(s);return 0;27.已知一有序序列1,2,4,6,12,14,要求从键盘输入一个整数,将此整数插入到此有序序列中。要求输出原始数组和插入之后的数组。要求编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论