首页 > 全部 > 二级C语言 > 国家二级(C语言)机试模拟试卷907

国家二级(C语言)机试模拟试卷907

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

国家二级(C语言)机试模拟试卷907

程序填空题

1.给定程序BLANK1.C中函数fun的功能是将整数m转换成n(二~十六)进制数的字符串,并通过函数值返回字符串首地址。

例如,若输入:

125 16

则输出:

7d

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

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

#include

#include

char c[32];

char*fun(int m,int n)

{

int i=0,j=0,a[32];

char b[16]={’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’a’,’b’,’c’,’d’,’e’,’f’},*p;

do

{

a[i]=m%n;

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

m=【1】

i++;

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

}while(【2】);

for(–i;i>=0;–i)

{

n=a[i];

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

c[j++]=【3】

}

c[j]=0;

p=c;

return p;

}

void main( )

{

int m,n;

char s[32];

scanf(\\

(1)m/n(2)m!=0(3)b[n]

解析:整数转换为其他进制,使用辗转相除法,取余。

(1)数组a存放取余的余数,m存放整除后的结果,故此空应填写m/n。(2)当辗转相除后的结果等于0时,循环退出,故此空应填写m!=0。(3)需要将数组a中存放的数字转换为对应的字符,此处和b数组对应。如果n的值为0,对应数组b第0个元素’0’;如果n的值为5,则b数组的下标5为字符5。故此处应填写b[n]。

程序修改题

2.给定程序MODl1.C中函数fun的功能是求一维数组a中非素数之和sum,其结果sum通过函数返回。

例如,22,3,65,37,18,19,10,11,12,23,15,17,则输出结果:sum=142。

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

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

#include

int fun(int a[],int n)

{

int i,j,k,sum;

sum=0;

for(i=0,i<n;i++)

{

k=a[i]/2;

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

for(j=2;j<k;j++)

{

if(a[i]%j==0)

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

continue;

}

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

if(j>=k)

sum+=a[i];

}

return sum;

}

int main( )

{

int a[12]={22,3,65,37,18,3.9,10,11,12,23,15,17};

printf(\\

(1)for(j=2;j<=k;j++)(2)break(3)if(j<=k)或if(k>=j)或if(j<k+1)或if(j<(k+1))

解析:(1)如果一个数可以被除1和其自身以外的数整除,则该数为非素数。此处k=a[i]/2,所以判断条件应该包括是否能被k整除。故for循环中应将j<j修改为j<=k。(2)a[i]的值求余j,如果能整除,表示不是素数,即可结束循环,故这里应将continue修改为break。(3)如果能被除1和其自身以外的数整除,且除数小于k(k=a[i]/2),则该数为非素数,进行求和操作。故这里应填写if(j<=k)。

程序设计题

3.请编写函数fun,其功能是从一个整数数组中,统计出有重复数字数的个数存于m中,m值由函数值返回。

例如:

2430,3001,1798,199,498,277,229,851,369,1146

其中3001中有重复的数字0,则输出:

Total Nam=5

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

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

#include

#include

void NONO( );

int fun(int a[],int n)

{

}

void main( )

{

int a[10]={2430,3001,1798,199,498,277,229,851,369,1146};

int m:

m=fun(a,10);

printf(\\

int fun(int a[],int n)

{

int j,k,s,m,b[10],i=0,sum=0,flag=0;

for(;i<n;i++)

{

j=0;

while(a[i])

{

b[j++]=a[i]%10;

a[i]=a[i]/10;

}

for(k=0; k<j; k++)

{

s=b[k];

for(m=k+1;m<j,m++)

if(s==b[m])

flag=1;

}

if(flag==1)

{

sum++;

flag=0;

}

}

return sum;

}

解析:先通过while循环将数组元素的各个位上的数字存放到数组b中。再通过循环,将有重复数字的标志flag设置为1。如果flag值为1,表示有重复数字,则将变量sum++。最后将sum值作为函数值返回。

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号