网站首页 语言 会计 电脑 医学 资格证 职场 文艺体育 范文

2016年计算机二级C语言上机试试题及答案

栏目: 计算机一级 / 发布于: / 人气:2.12W

  一、程序改错题(共24分)

2016年计算机二级C语言上机试试题及答案

下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:

Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

例如,n中的值为l0,则应输出0.817962。

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

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

试题程序:

#include

#include

#include

double proc(int n)

{

double y=1.0;

f|****found****

int J=1; .

int i;

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

{

j=-l*j;//****found****

y+=1/(i*i);

)

return(y);

)

void main()

{

int n=10:

system("CLS"):

printf("nThe result is%lfn",proc(n));

)

  二、程序设计题(共18分)

编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

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

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

试题程序:

#include

#include

#include

char*proc(char(*a)[81],int num)

{

)

void main()

{

char ss[l0][81],*max;

int n,i=0;

printf("输入若干个字符串:");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")= =0)

{

i++:

gets(ssEi]);

puts(ss[i]);

)

n=i:

max=proe(SS,n);

printf("nmax=%sn",max);

}

  【参考答案及解析

程序改错题

(1)错误:int j=1;正确:double j=1.0;

(2)错误:y+=1/(i*i); 正确:y+=j/(i*i);

【解析】由函数proc()可知,变量j的作用是控制每一项符号的变化,并且作为运算的分子,应改为double型变量。因此,“int j=1;”应改为“double j=1.0;”。变量y中存放多项式的值,多项式中的每一项符号由变量j决定。因此,“y+=1/(i*i);”应改为“y+=j/(i*i);”。

程序设计题

char*proc(char(*a)[81],int M)

{

char*max;

int i=0:

max=a[O]:

for(i=0;i  if(strlen(max)  max=a[i];

return max; //返回最长字符串的地址

}

【解析】本题首先要定义一个字符指针用于保存最长的字符串,并使其初始值指向第一个字符串;再循环遍历字符串数组,通过if语句比较字符串的长度,并把最长的字符串地址赋给字符指针;最后返回最长字符串的地址。