c语言要使程序运行到"ss=(k…"这一行暂停下来,该如何操作,2017年计算机等级二级C语言上机考前预测题...

2017年计算机等级二级C语言上机考前预测题

学习是要持之以恒的一件事,坚持就是胜利!下面是小编整理的2017年计算机等级二级C语言上机考前预测题,希望对大家有用,更多消息请关注应届毕业生网。

一、程序填空题

请补充函数proc(),该函数的功能是建立一个带头结点的单向链表并输出到文件“out.dat"和屏幕上,各结点的值为对应的下标,链表的结点数及输出的文件名作为参数传人。

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

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

试题程序:

#include

#include

#include

typedef struct ss

{

int data;

struct SS*next;

}NODE;

void proc(int n,char*filename)

{

NODE*h,*p,*S;

FILE*pf;

int i:

h=p=(NODE*)malloc(sizeof(N()DE));

h->data=0;

for(i=1;i   {

s=(N()DE*)malloc(sizeof(N()DE));

s>data= 【1】 ;

【2】 ;

p= 【3】 ;

}

P->newt=NULL;

if((pf=fopen(filename,"W"))==NULL)

{

printf("Can not open out98.dat!");

exit(0);

}

P=h;

{printf(pf,"\n***THE LIST***\n");

printf("\n***THE LIST***\n");

while(p)

{

fprintf(pf,"%3d",P->data):

printf("%3d",p->data);

if(p>next!=NULL)

{

fprintf(pf,"->"):

printf(" >"):

}

p=p->next;

}

fprintf(pf,"\n"):

printf("\n"):

fclose(pf);

p=h;

while(p)

{

s=p:

p=p- >next;

free(s):

}

}

void main()

{

char*filename- "out dat":

int n;

system("CLS"):

printf("\nlnput n:");

scanf("%d",&n);

proc(n,filename);}

二、程序改错题

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

t=1-1/2+1/3-1/4+…+(-1)(n+1)/n

例如,若输入6,则应输出0.616667。

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

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

试题程序:

#include

#include

#include

//****found****

int proc(int n)

{

double t=1.0,j=1.0;

int i;

//****found****

for(i=1:i   {j=-1*j;t十=j/i;}

return t;

}

void main()

{

int n;

system("CLS"):

printf("\nPlease enter 1 integer number:");scanf("%d",&n);printf("\nThe result is%1f\n",proc(n));}

三、程序设计题

请编写函数proc(),其功能是:计算并输出F列多项式的值。

S=1+1/(1+2)十1/(1+2+3)+…+1/(1+2+3+…m)

例如,若主函数从键盘给m输入20后,则输出为S=1.904762。

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

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

试题程序:

#include

double proc(int m)

{

}

void main()

{

int m;

double s;

printf("\nInput m:");

scanf("%d",&m);

s=proc(m):

printf("\n\ns=%f\n\n",s);

}

上机考试试题答案与解析

一、程序填空题

【1】i【2】p->next=S【3】p->next

【解析】s->data指向节点S的值,其下标为i,题目中要求各节点的值为对应的下标,因此,【1】处填“i”。函数的功能是建立一个带头节点的单向链表,因此每生成一个节点上一个节点的next指针指向该结点。由程序可知,指针p一直都指向上一个结点,因此,【2】处填“p->next=S”。每生成一个节点,P指向下一个节点,因此,【3】处填“p-> next”。

二、程序改错题

(1)错误:int proc(int n)

正确:double proc(int n)

(2)错误:for(i=1;i  正确:for(i=2;i<=n;i++)【解析】由主函数中的函数调用以及函数proc()中返回值的类型,可知函数proc()的返回值类型为double型数据。因此,“int proc(int n)”应改为“double proc(int n)”。由题目中给出的表达式可知,循环的最大值应该取到n,因此,“for (i=1;i  三、程序设计题double proc(int m){

int i;

double s=0.0,s1=0.0; //s表示分数的和,sl为分数for(i=1;i<=m;i++) //通过循环求S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)

{ s1=s1+i;

s=s+1.0/s1;

}

return s;//最后把和s返回到主函数中

}

【解析】由题目中所给公式可知,多项式的值为rrl项的和。多项式每一项的分子均为1,第i项的分母为1~i所有整数的和。根据这个特点,通过m次循环求出多项式的每一项并求和。最后将多项式的和返回到主函数中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值