当前位置:学者斋 >

计算机 >C语言 >

计算机二级C语言预测上机精选训练题

计算机二级C语言预测上机精选训练题

以下是本站小编为大家整理的2017年计算机二级考试C语言预测上机精选训练题,希望对各位考生有所帮助!

计算机二级C语言预测上机精选训练题

  一、程序填空题

请补充函数proc(),其功能是:计算并输出给定10个数的方差。

例如,给定的10个数为12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,18.0,输出为s=8.877500。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填人所编写的若干表达式或语句。

试题程序:

#include

#include

double proc(double x[10])

{

int i;

double avg=0.0;

double sum=0.0;

double abs=0.0:

double sd;

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

【1】 ;

avg=sum/10;

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

【2】 ;

sd= 【3】 ;

return sd;

}

void main()

{

double S,str[10]={12.0,9.0,26.0,5.0,6.0,31.0,

9.0,3.0,8.0,18.0};

int i;

printf("nThe original data is:n");

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

printf("%6.1f",str[i]);

printf("nn");

s=proc(str):

printf("s=%fnn",s);

}

  二、程序改错题

下列给定程序中,函数proc()的功能是:从字符串str 中,删除所有大写字母’F’。

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

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

试题程序:

#include

void proc(char*str)

{

int i,j;

//****found****

for(i=j=0;str[i]!=’0’;i++)

if(str[i]!=’F’)

//****found****

str[j]=str[i];

str[j]=’’;

}

void main()

{

char str[80];

printf("nEnter a string:");

gets(str);

printf("The original strin9:");

puts(str);

proc(str);

printf("The string after deleted:");

puts(str);

printf("nn");}

  三、程序设计题

假定输入的字符串中只包含字母和*号。请编写函数proc(),它的`功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

例如,若字符串中的内容为****a*bc*def*g** **,删除后,字符串中的内容则应当是a*bc*def*g** **。

注意:部分源程序给出如下。

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

试题程序:

#include

#include

woid proc(char*st r)

{

}

void main()

char str[81];

printf("Enter a string:n");

gets(str);

proc(str):

printf("The string after deleted:n");

puts(str);}

  上机考试试题答案与解析

一、程序填空题

【1】sum+=x[i]【2】abs+=(x[i]-avg)*(x[i]

avg) 【3】sqrt(abs/10)

【解析】由函数proc()可知,变量SHill中存放n个数的和,因此,【1】处填“sum+=x[i]”;然后求其平方差,因此,【2】处填“abs+=(x[i]- avg)*(x[i] -avg)”;最后求10 个数的方差,因此,【3】处填“sqrt(abs/10)”。

二、程序改错题

(1)错误:for(i=j=0;str[i]!=’0’;i++)

正确:for(i=j=0;str[i]!=’’;i++)

(2)错误:str[j]=str[i];

正确:str[j++]=str[i];

【解析】根据题目中的要求,从字符串str中删除所有大写字母’F’,需要检查字符串str中的每一个字符,直到字符串结束,因此,“for(i=j=0;str[i]!=’0 ’;i++)”应改为“for(i=j=0;str[i]!=’ ’;i++)”;将每一个不是’F’的字符放入原来的字符串中.形成新的字符串,因此,“str[j]= str[1];”应改为“str[j++]=str[i];”。

三、程序设计题

void proc(char*str)

{

char*p=str:

while(*p==’*’)p++;//通过P的移动来达

到使P指向第一个不是*号的字符

for(;*p!=’ ’;p++,str++)//把从第一个

不是*号的字符放到a中 ‘

*str=* P:

*str=’ ’; //最后用’’作为字符串结束标志

}

【解析】题目中要求将字符串中的前导*号全部删除首先将指针p移动到第一个不是*的字符,将指针P之后的字符放入原来的字符串中,并为新的字符串添加结束符。

  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/cyuyan/4xm59m.html