ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:20.33KB ,
资源ID:11970734      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11970734.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(沈工大C语言程序设计复习题.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

沈工大C语言程序设计复习题.docx

1、沈工大C语言程序设计复习题C语言程序设计复习题题型:填空、选择、读程序写结果(参看实验教程)、编程题编程题如下:1.输出1001000以内的所有3位水仙花数。所谓水仙花数是指所有位的数字的立方和等于该数。例如153=1+5+3(实验教程P25)解:#includevoid main()int i;int w1,w2,w3;for(i=100;i999;i+)w1=i%10;w2=i/10%10;w1=i/100%10;if(i=w1*w1*w1+w2*w2*w2+w3*w3*w3) /*判断是否是水仙花数*/printf(“%d”,i);2.使用冒泡法对从键盘上输入的10个数进行排序(由大到小

2、)。(实验教程P33)解:#includevoid main()int i,j,temp;int a10;printf(“Input 10 numbers:n”);for(j=0;j10;i+)scanf(“%d”,&aj);printf(“n”);for(i=1;i10;i+)for(j=0;j10-I;j+)if(ajaj+1)temp=aj;aj=aj+1;aj+1=temp;Printf(“The sorted numbers is:n”);for(j=0;j10;j+)printf(“%5d”,aj);printf(“n”);3.设计一个实用程序,为比赛选手评分。要求:从十名评委的评

3、分中扣除一个最高分,扣除一个最低分,然后统计总分,并除以8,最后得到这个选手的最后得分(打分采用百分制)。(实验教程P37)解:分析:定义一个一维数组用来存放10名评委为选手所给的成绩,从键盘上输入10名评委所给的成绩,计算成绩的总和,然后减掉最高分和最低分,再除以8,就可以得到选手的最后得分。程序清单:#includevoid main()int score10; /*定义数组存放10个评委的成绩*/float mark;int i;int max=0; /*最高分*/int min=0; /*最低分*/int sum=0; /*10评委的总和*/for(i=0;i10;i+) /*输入10

4、个评委的成绩*/printf(“Please Enter the Score of No.%d:”,i+1);scanf(“%d”,&scorei);sum=sum+scorei; /*将10个成绩求和*/for(i=0;imax)max=scorei;for(i=0;i10;i+) /*查找最低分*/if(scoreimin)min=scorei;mark=(sum-max-min)/8.0; /*计算平均成绩*/printf(“The mark of the player is %.2fn”,mark); 4.在主函数中输2100之间的整数,调用函数判断其是否为素数,在主函数中输出这些素数

5、。(实验教程P60) 提示:在第四章中的4.4.5中第2题给出了判断素数的方法。还有一种方法就是:如果一个整数能被小于它的某一个整数出尽,该数一定不是素数。解:#includevoid main()int i;for(i=2;ia;i+)if(a% i =0)return(0);return(1);void main()int j;for(j=2;j100;j+)if(is_ prime(j)printf(“n”);5.使用递归方法,利用碾转相除法,求两个正整数的最大公约数,并在主函数调用该函数,输出计算结果。(实验教程P64)解:#includeInt gcd(int a,int b)if(

6、a% b=0)return b;elsereturn gcd(b,a% b); /*递归调用*/void main()int x,y,t;printf(“Please input 2 number(x,y):n”);scanf(“%d%d”,&x,&y);while(x0|y1)解:#includefloat fun(int n,int x); /*定义递归函数*/int t;if(n=0) /*如果n=0返回1*/return(1);else if(n=1) /*如果n=1返回x*/return(x);else /*否则递归计算*/return(2*n-1)*x*fun(n-1),x)-(n

7、-1)*fun(n-2),x)/n;void main()int x,n;printf(“Please input n and x:n”);scanf(“%d%d”,&n,&x);printf(“The result is:%fn”,fun(n,x);7编写程序,利用子函数实现计算字符串的长度。(实验教程P92)解:程序代码如下:#includeint length(char*s);void main()char a100;int i;printf(“Please input the string:n”);gets(a);i=length(a);printf(“nThe length of s

8、tring is %d”,i);int length(char*s)char*p=s;while(*p)p+;return(p-s);8编写程序,利用字符串实现两个字符串的合并。(实验教程P93)解:程序代码如下:#include“stdio.h”char *link(char*p1,char*p2);void main()char str1100,str2100;printf(“Please input the first string:n”);gets(str1);printf(“nPlease input the second string:n”);gets(str2);link(str

9、1,str2);printf(“nThe linked result is:n”);puts(str1);char*link(char*p1,char*p2)char*p;p=p1;while(*p1)pl+;while(*p2)*p1=*p2;P1+;P2+;*p1=0;return(p);9.将一个整数字符串转换为一个整数,如“-1234”转换为-1234。(实验教程P98)解:#include#includeint chnum(char*p);void main()char s6;int n;gets(s);if(*s=-)n= -chnum(s+1);printf(“%dn”,n);c

10、hnum(char*p)int num=0,k,len,j;len=strlen(p);for(;*p!=0;p+)k=*p-0;j=(- -len);while(j-0)k=k*10;num=num+k;Return(num);10.编写计算个人所得税的程序输入一个纳税人的个人月收入,计算应纳的个人所得税。(程序设计教程P65)纳税是每个公民的义务。我国的个人所得税税率表如下表所示:级数应纳税金额(月收入-1600)税率%1不超过500元52500元2000元10320015000元154500120000元2052000140000元25640001元60000元30760001元8000

11、0元35880001元100000元409超过100000元45解:源程序清单如下:#include”stdio.h”void main()double salary,s,tax;printf(“please input your salary one month:”);scanf(“%lf”,&salary);s=salary-1600;if(s=500)tax=s*0.05;else if(s=2000)tax=(s-500)*0.1+500*0.05;else if(s=5000)tax=(s-2000)*0.15+1500*0.1+500*0.05;else if(s=20000)ta

12、x=(s-5000)*0.2+3000*0.15+1500*0.1+500*0.05;else if(s=40000)tax=(s-20000)*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05;else if(s=60000)tax=(s-40000)*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05;else if(s=80000)tax=(s-60000)*0.35+20000*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05;else if

13、(s=100000)tax=(s-80000)*0.4+20000*0.35+20000*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05;else if(s=100000)tax=(s-100000)*0.45+20000*0.4+20000*0.35+20000*0.3+20000*0.25+15000*0.2+3000*0.15+1500*0.1+500*0.05;printf(“tax is %10.2fn”,tax);程序说明:1)变量salary中存放的是月收入;s存放月收入中应纳税的金额,月收入减去减免税金额,即月收入减去1

14、600元;tax是计算出来的纳税额。2)公式中的“”是换行符,由于写不下,用“”符号标识下一行是本行的续行。3)本例要处理多种情况,最适合使用else if形式。因为很难找到月收入中应纳税的金额与一个常量之间的关系,因此不适合使用switch语句。11求出斐波那契数列的前20项,存在数组中,并将他们输出。(程序设计教程P73)说明:【斐波那契数列是一递推数列,满足下面关系:fib(0)=1,fib(1)=1,fib(n)=fib(n-1)+fib(n-2)(n2)】 对于这个问题,可以定义一个整形数组,用于存放20个整数,先将fib(0)和fib(1)赋初值,然后建立一个循环,每次取出两个数进

15、行递推求值,并将其存入数组中,每输出5项数据换行,直到前20项都被计算出来为止。解:源程序清单如下: #include void main()int i,fib20=1,1; /*初始化*/printf(”n”);for(i=2;i20;i+) /*计算后18项斐波那契数列中的数据并存入数组*/fibi=fibi-2+fibi-1;for(i=0;i20;i+) /*输出数组*/if(i%5=0) /*每输出5个数据换行*/printf(“n”);printf(“%10d”,fibi);printf(“n”)注:数组fib采用部分初始化法,将fib(0)和fib(1)初始化为1,其他各元素默认

16、为0,用于存储后18项结果。使用for循环语句从数组的第3个元素开始递推计算后18项数据,并存储在数组fib中(从数组的第3位开始)。接下来又使用循环语句输出数据的全部元素,每输出5个数据就换行12.编写一函数,求x的m次方的值,其中m是整数。(程序设计教程P102)求任意m个x的乘积,可把x和m作为函数的参数,数据从主调函数里传递,增强了函数的灵活性。使用循环结构设计该算法,最后将计算所得的值返回解:#includedouble mul(double x,int m)int i=0;double p=1.0;for(;im;i+)p=-p*x;return(p);void main()dou

17、ble x,y;int m;printf(“Input the numbers(x,m):n”);scanf(“%lf%d”,&x,&m);y=mul(x,m); /*函数调用*/printf(“The result is:%6.5lfn”,y);说明:在程序中定义了mul()函数,其类型为double型,形参表中有两个形参x、m。由于函数定义在主调函数之前,在主调函数中就可以不对其进行函数声明。使用用户自定义函数时,要分清形参如何设定,包括其类型、个数及顺序,以便在发生函数调用时,准确地将实参值传递给实参,这样才不会出项错误。x、y定义为double类型,它的格式控制符为%lf,不能写成%f

18、,以免出错。函数调用结束后,将计算结果输出。13在主调函数调用函数计算5!的值。(程序设计教程P120)解:源程序清单如下:#includeint fun(int n) /*定义函数计算阶乘值*/int i;static int f=1; /*定义静态局部变量*/for(i=1;i=n;i+) /*循环计算n!乘值*/f=f*i;return(f); /*返回函数值*/void main()int n;printf(“Input the number:n”); /*输入数据*/scanf(“%d”,&n);printf(“%d!=%dn”,n,fun(n); /*调用函数*/说明:在自定义函数

19、fun()中,程序定义了静态局部变量f,用来存放每一次调用此函数计算后的值,该值在每次调用后保留其值并在下一次调用时继续使用,所以输出值为累乘的结果。14求一个数组中所有元素的最大值和最小值,并将其放入数组的最前面的两个元素的位置。(程序设计教程P143)解:#include void maxmin(int *p,int length);void main()int a10=2,5,7,1,10,4,6,33,20,9;maxmin(a,10);printf(“max=%d,min%d”,a0,a1);void maxmin(int *p,int length)int k,max=0,min=

20、0;for(k=1;kpmax)max=k;else if(pkpmin)min=k;p0=pmax;p1=pmin;说明:在子函数中实现了对数组中元素的最大值和最小值的求值,并把最大值和最小值放到了数组的最前面的两个元素中。因为函数传递的参数是数组的首地址,因此在子函数中对数组的全部操作,就是对主函数中数组的操作。15编写一个程序,将一个字符串写入文件“E:test.txt”后,再从该文件中读出该字符串。(程序设计教程P198)解:#include “stdio.h”void main()FILE*fp;char ch=”C language”,*str;int x;fp=fopen(“E:

21、test.txt”,”w”);if(fp=NULL)printf(“n Cant open the file!”);return;x=fputs(ch,fp); /*测试函数的返回值*/printf(”x=%d”,x);printf(“n Character input finished!n”);fclose(fp);fp=fopen(“E:test.txt”,”r”);if(fp=NULL)printf(“n Cant open the file!”);return;puts(fgets(str,20,fp);fclose(fp);程序说明:首先,程序以只写的方式打开E盘根下的文本文件test.txt,向文件中一次性写入字符串“C Lauguage”后,返回最后一个字符的ASCII值。最后一个字符是“e”,因此返回“e”的ASCII值,“x=101”。显示写入完成,并关闭文件。重新以只读的方式打开该文件,从文件中读出刚才写入的内容,最后关闭文件。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1