浙江师范大学c语言函数实验答案,浙江师范大学夏C语言参考答案.doc

浙江师范大学夏C语言参考答案.doc

浙江师范大学计算机应用理C语言程序设计考试卷(20112012学年第二学期)考试类别 闭卷 使用学生 公共课理科各专业学生 考试时间 120 分钟 出卷时间 2012 年 5 月 15 日说明考生应将全部答案标清题号写在答题纸上,否则作无效处理。一、 程序填空题(每小空2分,共32分)试题1、以下程序的功能是从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。includestdio.hvoid main float x, amax, amin;scanf“f”, x;amaxx; aminx;while x0 if xamax amaxx ;else if xamin aminx ; scanff, x ;printf“namaxfnaminfn”, amax, amin;试题2、从键盘输入一批以 -1结束的整数,将其中的奇数以”3d”的格式写入当前目录下的文本文件res.txt。include stdio.hinclude stdlib.hvoid main int x; FILE *fp ;注意FILE为大写 iffpres.txt,wNULL printf不能打开文件; exit0; scanfd, x; while x-1 ifx20 fprintffp, “3d”,x ; scanfd, x ; fclosefp ;可在当前C仿真目录下找到res.txt文件查看结果试题3、输入100个整数,将其中的前20个数从小到大排序,然后输出这100个数。 include stdio.hvoid sort int a, int n 注意形参是有类型的 int i, k, m, t; fori 0; i n-1; i ki; formi1; mn; m if ai am km; tai; aiak; akt; void main int k, a100; fork0; k100; k scanfd, ak; sorta,20 ;注意题目是20个 fork0; k100; k printfd , ak;为了便于实验,在程序中已将100改为10,20改为5。这样程序对于输入超过10个数,只接收10个数,而且对其前面的5个数按从小到大排序。试题4、验证哥哥德巴赫猜想任何一个大于6的偶数均可表示为两个素数之和。例如633,83518711。将6到100之间的每个偶数都表示成两个素数之和。函数primem用于判断m是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。include stdio.hinclude math.h 因调用了sqrt函数,一般在main函数外面的填空,可能为头文件也可能为函数声明void main int i, k; int primeint m; for i6;i100;ii2fork3;k50;k此处卷有小错误,请将改为 if primek primei-k 下面的输出起到了提示作用 printf d ddn, i, k, i-k; break; int primeint m int k, n;ifm 1 return 0;n intsqrt m;for k 2; k n ;k ifmk0 return 0 ; 注意为m而不是n if kn return 1 ; 二、 程序阅读题(每小题5分,共25分)试题1、阅读下列程序并回答问题。【程序】include stdio.hfun1int a, int ba11,b19 int c;aa; bb; a22,b38cfun2 a, b; 调用函数,得到返回值2return c*c; 4fun2 int a, int b a22,b38 int c;ca*b3; 22*3832return c;c2main int x11, y19;printf “dn”, fun1 x, y ; 调用函数,得到返回值4程序运行后,输出 4 。试题2、阅读下列程序并回答问题。【程序】include stdio.hvoid fint *m;int a 0; void mainint i;fori 0; i 3; i fi; 传递地址,使m指向i,因此*m相当于i,程序只循环2次,也只调用了2次f函数printfd n, a;用的是全局变量,a为先使a的值加1再输出,原来a的值为0因此输出a的值为1。void fint *mstatic int a 1; printfd,d,, a,*m; a为先输出a的值后使a的值加1程序运行后,输出 1,0,2,2,1 。(1) 当i0时,调用f 函数;(2) f 函数中先输出a的值1,后使a的值为2;先输出*m的值也就是i的值为0,后使i的值为1;(3) f函数第一次调用结束以后,for语句i,使i的值为2;(4) 当i2时,调用f 函数;(5) f 函数中先输出a的值2(因是静态局部变量,所以程序static int a 1只执行一次),后使a的值为3;先输出*m的值也就是i的值为2,后使i的值为3;(6) f函数第二次调用结束以后,for语句i,使i的值为4,不满足i 3,循环结束;(7) for语句结束,输出全局变量,先使a的值加1再输出。试题3、阅读下列程序并回答问题。【程序】include stdio.hfun int *s, int n1, int n2 函数的功能为将n1到n2之间的数组元素进行两两交换 int i, j, t ; in1; jn2; while ij t*si; *si*sj; *sjt; i; j; main int a101,2,3,4,5,6,7,8,9,0, i, *pa; funp,0,3; funp,4,9; funp,0,9; for i0 ; i10 ; i printf “d”,*ai ;程序运行后,输出 。大家可以在纸上画出来调用funp,0,3后结果为交换前1 2 3 4 5 6 7 8 9 0交换后4 3 2 1 5 6 7 8 9 0调用funp,4,9后结果为交换前4 3 2 1 5 6 7 8 9 0交换后4 3 2 1 0 9 8 7 6 5调用funp,0,9后结果为交换前4 3 2 1 0 9 8 7 6 5交换后5 6 7 8 9 0 1 2 3 4试题4、阅读下列程序并回答问题。【程序】include stdio.hvoid main int j, k, n, s, a66; scanfd,n; fork0; kn; k forj0; jn; j akjj*nk; printfa01d,, a01; s0; for k0; kn; k s akk;求主对角线 printfsum1d,, s; for k0; kn; k求主对角线,再加上副对角线 s an-k-1k; printfsum2d, , s; for k0; kn; k s ak2; 求主对角线加上副对角线,再加上第3列 printfsum3dn, s;输入3回车后,程序输出 。输入得3到的3x3矩阵为0 3 61 4 72 5 8试题5阅读下列程序并回答问题。【程序】include stdio.hinclude string.hvoid fchar p10,int n 函数的功能为将字符串按大到排,p0存放最大的字符串dcdbe char t20; int i,j;fori0;in-1;ifor ji1;jn;jifstrcmppi,pj0 strcpyt,pi;strcpypi,pj;strcpypj,t;void main char p10abc,aabdfg,abbd,dcdbe,cdfp,5; printfdn,strlenp0; dcdbe的长度为5程序运行后,输出 5 。三、 程序设计题(共43分)1、在主函数中编写程序,输入整型变量x,计算并输出下列分段函数fx的值。可以调用数学库函数平方根函数sqrt,绝对值函数fabs和幂函数 pow。(10分)fx|x| x0 0 x2x23 2x42x5 x4方法一可用if else 语句实现include stdio.hincludemath.h 调用数学库函数,请注意上述三种数学函数的调用方法void main double x, fx; printf x; scanflf, x ; if x0 fx fabsx;else if x2 fx sqrtx;else if x4 fx powx2,3;else fx 2*x5;printfx.2f, fx.2f n, x, fx;方法二可用if加逻辑运算符实现include stdio.hincludemath.h 调用数学库函数,请注意上述三种数学函数的调用方法void main double x, fx; printf x; scanflf, x ; if x0 fx fabsx;if x0 x2 fx sqrtx;if x2x4 fx powx2,3;if x4 fx 2*x5;printfx.2f, fx.2f n, x, fx;2、在主函数中编写程序,输出1-35-7-99101的值。(10)方法一分析找规律,从取值来看后一项是上一项加2,并且每一项是正负变化交替 include stdio.hvoid main int i, flag1; flag获得取值的正负变化交替double sum0; 求和变量一定要记得初始化fori1;i101;ii2sumsumflag*i;flagflag*-1;printf sum.2f n,sum;方法二分析找规律,可以分别求出所有正数的和,再求出所有负数的和,再相减。 include stdio.hvoid main int i;double add0, sub0,sum0; 求和变量一定要记得初始化所有正数的和fori1;i101;ii4addaddi;所有正数的和fori3;i99;ii4subsubi;两者之差sumadd-sub;printf sum.2f n,sum;3、编写一个求幂的函数powerm,n,用于计算整数m的n次幂,其中n是正整数,函数的返回值是双精度类型。通过主函数调用该函数分别求2和3的10次幂并输出。(11分) include stdio.hdouble powerint m, int n; 函数声明最好请放在main函数的上面void main int m, n;double pow; printf“ integers m, nn”;scanf“dd”, m,n;pow powerm,n;printf“ pow.2f n”, pow;double powerint m, int nint i; double r1 ;for r1, i1; in; i r*m;return r ; 函数是要返回值的,其类型与函数的类型一致4、编写一个函数,实现从字符串str中删除所有的指定字符ch,从主函数中输入一个字符串str和一个字符ch,并在主函数中调用该函数,输出删除后的字符串str。(12分) include stdio.hvoid delete char str, char ch; 注意函数的参数类型,对于字符和字符串类型为char,并且字符串可用数组或指针,传递的是地址; include string.h 用了puts gets函数最好加上头文件void main char str100, ch; 定义字符型数组放字符串,定义字符型变量放想删的字符printf“输入一个字符串,以回车结束n”;getsstr;printf“输入想要删除的一个字符n”;chgetchar;deletestr, ch;调用函数从字符串中删除字符printf“输出删除后字符串n”; putsstr;方法一void delete char str, char chint i,j;fori0; stri 0; i 处理存储字符串的数组常用到字符串结束标志0 ifch stri forji; strj 0;j删除的方法为将后面所有的字符从后向前移 strj strj1;方法二调用strcpy函数,看不懂的话请掌握方法一void delete char str, char chint i;fori0; stri 0stri,stri1; 将i1开始的所有字符copy到i处开始,注意是strcpy函数参数为数组名即传递的是地址 数理与信息工程学院考试卷 第 9 页 共 9 页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值