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

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

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

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

程序填空题

1.给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。

例如,形参s所指的字符串为:This is a C languageprogram,函数的返回值为6。

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

注意:源程序存放在考生文件夹下的BLANK1.C中。

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

#include <stdio.h>

int fun(char*s)

{ int n=0,flag=0;

while(*s!=’\0’)

{ if(*s!=’ ’&&flag==0){

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

___1___;flag=1;}

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

if(*s==’ ’)flag=___2___;

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

___3___;

}

return n;

}

main()

{ char str[81];int n;

printf(\\

(1)n++

(2)0

(3)s++

解析:函数fun的功能是计算出形参s所指字符串中包含的单词个数。

第一空:“if(*s!=’’&&fla==0)”说明找到空格了,单词的数量应加1,故第一空处应为“n++”。

第二空:“if(*s!=’’&&flag==0)”和“if(*s==’’)flag=___2___;”在flag为0的情况下,n才加1,因此,第二空处是将flag置,即第二空处应为“0”。

第三空:“while(*s!=’\0’)”循环的终止条件是s达到结尾,因此,在循环体内s应该不断往字符串尾移动,即第三空为“s++”。

程序修改题

2.给定程序MODI1.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。

例如,若输入8名学生的成绩:80.5 60 72 90.5 98 51.5 88 64

则低于平均分的学生人数为:4(平均分为:75.5625)。

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

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

#inolude<stdio.h>

#define N 20

int fun(float*s,int n,float*aver)

{ float ave,t=0.0;

int count=0,k,i;

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

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

t=s[k];

ave=t/n;

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

if (s[i] <ave) count++;

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

*aver=Ave;

return count,

}

main()

{ float s[30],aver;

int m,i;

printf (\\

(1)t+=s[k];

(2)*aver=ave;

解析:程序功能是统计出低于平均分的学生人数。

(1)根据题目要求求出平均分,首先要求总分,要把所有学生成绩相加再求平均分,因此第一个标识下面的“t=s[k];”应改为“t+=s[k];”。

(2)根据题目可知,比较的结果中低于平均分的分数ave放入指针aver所指的地址单元中,而变量Ave没有定义,因此,第二标识下应将“*aver=Ave;”改为“*aver=ave;”。

程序设计题

3.请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。

例如,输入如下整数:876 675 896 101 301 401 980 431 451 777

则输出结果为:6,980

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

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

#include<stdio.h>

void fun(int*s,int t,int*k)

{

}

main()

{

int a[10]={876,675,896,101,301,401,980,431,451,777},k;voidNONO();

fun(a,10,&k);

printf(\\

int i,pos=0,max=*s;

for(i=1;i<t;i++){

if(max<*(s+i)){

max=*(s+i);

pos=1;

}}

*k=pos;

解析:(1)该程序功能是求最大元素在数组中的下标。它的解题思路是,用最大值变量max标记第一个待找数据,逐个把所有待找数据和max进行比较,并用pos标记其当前最大值所在位置,从而找出最大值。

(2)从已给部分源程序的main主函数开始入手,核心函数“fun(a,10,&k);”中的参数a存放着给出的整数,fun函数实现查找最大元素的下标。

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号