首页 > 全部 > 二级C语言 > 国家二级C语言机试(操作题)模拟试卷607

国家二级C语言机试(操作题)模拟试卷607

本单篇文档共3077字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C语言 章节练习 6391人下载
价格: 1.00 原价:¥9.60
收藏

国家二级C语言机试(操作题)模拟试卷607

程序填空题

1.使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的功能是:用函数指针指向要调用的函数,并进行调用。规定在【2】处使f指向函数n,在【3】处使f指向函数f2。当调用正确时,程序输出:

x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。

注意:部分源程序在文件BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

double f1(double x)

{return x*x;}

double f2(double x,double y)

(return x*y;}

double fun(double a,double b)

{

/*********found*********/

【1】(*f)();

double r1,r2;

/*********found*********/

f=【2】

rl=f(a);

/*********found*********/

f=【3】

r2=(*f)(a,b);

return r1+r2;

}

main()

{double x1=5,x2=3,r;

r=fun(x1,x2);

printf(\\

(1)double

(2)n

(3)f2

解析:填空1:(*f)()代表一个指向函数的指针变量,而本题所被调用的n、f=!两函数的返回值均为double型,因而此空应该填写double。

填空2:因为在给函数指针变量赋值时,只需给出函数名而不必给出参数,因而此空应该填写n。

填空3:同填空2,此空应该填写f2。

相关知识点:

(1)指向函数的指针变量的一般定义形式为:数据类型(*指针变量名)();

(2)函数的调用可以通过函数名调用,也可以通过函数指针调用。

(3)在给函数指针变量赋值时,只需给出函数名而不必给出参数。

程序修改题

2.使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:求两个非零正整数的最大公约数,并作为函数值返回。

例如,若numl和num2分别为49和21,则输出的最大公约数为7;若numl和num2分别为27和8l,则输出的最大公约数为27。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

试题程序:

#include<stdio.h>

int fun(int a,int b)

{

int r,t;

if(a<b){

/*********found*********/

t=a;b=a;a=t;

}

r=a%b;

while(r!=0)

{a=b;b=r;r=a%b;}

/*********found*********/

return(a);

}

void main()

{

int num1,num2,a;

printf(\\

(1){t=a;a=b;b=t;}

(2)return(b);或returnb;

解析:求最大公约数算法一般采用辗转相除法。辗转相除法的算法为:首先将m除以n(m>n)得余数r,再用余数r去除原来的除数,得到新的余数,重复此过程直到余数为0时停止,此时的除数就是m和n的最大公约数。

程序首先判断参数a和b的大小,如果a<b则进行交换,这里是一个数学逻辑错误,应先将a的值赋给中间变量t,再将b的值赋给a,最后将t的值赋给b。当余数r为0时,除数b即为所求的最大公约数,所以函数应返回b。

程序设计题

3.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数intfun(int lim,int aa[MAX]),其功能是求出小于或等于lim的所有素数并放在aa数组中,并返回所求出的素数的个数。

注意:部分源程序在文件PROG1.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

试题程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#define MAX100

int fun(int lim,inta a[MAX])

{

}

void main()

{

FILE*wf;

int limit,i,sum;

int aa[MAx];

system(\\

int fun(int lim,int aa[MAX])

{

int i,j,k=0;

for(i=2;i<=lim;i++)/*求出小于或等于lim的全部素数*/

{for(j=2;j<i;j++)

if(i%j==0)break;

if(j>=i)

aa[k++]=i;/*将求出的素数放入数组aa中*/

}

return k;/*返回所求出的素数的个数*/

}

解析:本程序如果一个数是合数,那么它的最小质因数肯定小于等于他的平方根。使用for循环语句查找小于lim的所有数,使用内嵌的循环判断语句判断该数是否为素数。在做这道题时,需要重点掌握素数的判定方法:

for(j=2;j<sqrt(i);j++)

if(i%j==0)break;

本文档预览:3600字符,共3077字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C语言机试(操作题)模拟试卷607

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号