计算机等级考试二级上机模拟试题(10).doc_第1页
计算机等级考试二级上机模拟试题(10).doc_第2页
计算机等级考试二级上机模拟试题(10).doc_第3页
计算机等级考试二级上机模拟试题(10).doc_第4页
全文预览已结束

下载本文档

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

文档简介

上机考试模拟试题( 10)一、填空题 请补充fun函数, 该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字, 是则返回“yes!”, 否则返回“no!”。 请勿改动主函数main与其他函数中的任何内容, 仅在fun函数的横线上填写所需的若干表达式或语句。 注意: 部分源程序给出如下。# include # include char *fun(int n) int t,s,a;t=n%10; s=n/10%10; a=_1_; if(t+a)= =s) return_2_;else return_3_;main() int 1en=0; printf(Please input a data n ); scanf(%d,&len); printf( The result is :); printf(%s,fun(len); 二、改错题 下列给定程序中函数fun的功能是求出以下分数列的前m项之和, ,和值通过函数值返回main函数。例如, 若m=10, 则应输出16.479905。请修改程序中的错误, 得出正确的结果。注意: 不要改动main函数, 不能增行或删行, 也不能更改程序的结构。 # include # include /*error*/fun(int m) int x,y,z,i; double s; s=0.0; x=2;y=1; for(i=1;i=m;i+) /*error*/s=s+(Double)x/y; z=x;x=x+y;y=z; return s; main() int m=10; printf(nThe value of fun is :%lfn,fun(m); 三、编程题 请编写函数fun, 其功能是: 将所有大于1且小于整数n的非素数存入a所指数组中, 非素数的个数通过m传回。 例如, 若输入11, 则应输出4 6 8 9 10。 请勿改动主函数main与其他函数中的任何内容, 仅在函数fun的花括号中填入所编写的若干语句。注意: 部分源程序给出如下。#include #include void fun(int n,int *m,int a)main() int k,h,c100; FILE*out; printf(nPlease enter an integer number between 10 and 100: ); scanf(%d,&h); fun(h,&k,c);printf(nnThere are %d non-prime numbers less than %d: ,k,h); for(h=0;hk;h+)printf(n %4d,ch);out=fopen(outfile.dat,w); fun(10,&k,c);fprintf(out,%dn,k);for(h=0;hk;h+)fprintf(out,%dn,ch); fclose(out); 上机考试模拟试题(10)参考答案及解析一、填空题 答案 (1) n/100%10 (2) yes! (3) no! 解析 本题中函数功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字。解题思路首先是截取整数的个位和百位, 然后对个位、百位的数字求和判断。 第一空: fun函数中语句“t=n%10;s=n/10%10;”分别是截取个位和十位, “a=_1_; ”是对百位的截取, 所以第一空填“n/100%10”。 第二空: 语句“if(t+a)=s)”是判断个位数字和百位数字之和是否等于其十位上的数字, 如果等于, 则返回yes, 所以第二空填“yes!”。 第三空: 根据第二空, 知道这里的分支是不等于其十位上的数字, 所以第三空填“no!”。二、改错题 答案 (1) double fun(int m) (2) s=s+(double)x/y; 解析 本题中函数的功能是求分数列的前m项之和。首先根据题干中给出的公式推出每一项之间的关系, 求出每一项的表达式, 然后求得数列的值。本题中, 每一项的分母是前一项的分子, 分子是前一项分子和分母的和。 (1)其中fun函数中的“double s; ”和“return s; ”语句, 说明fun函数具有double返回值, 所以将“fun(int m)”改为“double fun(int m)”。 (2)第二个标识下的“s=s+(Double)x/y;”语句中, 应该对x采用了强制转换, 在C语言中的数据类型说明应该是小写的, 所以第二个标识下“s=s+(Double)x/y;”应该改为“s=s+(double)x/y;”。三、编程题 答案 int i,j; int t=0; 初始化数组个数 for(i=2;in;i+) 循环判断小于n的数是否为素数 j=2; while(ji) if(i%j=0) /如果i不是素数 at =i; t+; break; j+; *m=t; 解析 该程序功能是将所有大于1小于整数n的非素数存入a所指数组中。求素数的常用方法: 从2到n-1除n, 如果中间的任何数被整除, 则不是素数。 (1)根据求素数的方法判断数i是否为素数。 (2)把不是素数的数留下来, 其方法是: 如果该数是素数则不处理; 如果不足素数则放到数组a中, 并且把数组的下标

温馨提示

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

评论

0/150

提交评论