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

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

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

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

程序填空题

1.给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在___2___处使fa指向函数f1,在___3___处使fb指向函数f2。当调用正确时,程序输出:

x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000

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

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

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

#include <stdio.h>

double f1(double x)

{ return x*x;}

double f2(double x,double y)

{ return x*y;}

double fun(double a,double b)

{

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

___1___(*f)();

double r1,r2;

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

f=___2___;/*point fountion f1*/

r1 = f(a);

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

f=___3___;/*point fountion f2*/

r2=(*f)(a,b);

return r1 +r2;

}

main()

{double x1=5,x2=3,r,

r=fun(x1,x2);

printf(\\

(1)double

(2)f1

(3)f2

解析:本题中函数fun的功能是用函数指针指向要调用的函数,并进行调用,主要考察函数的指针的使用。存放函数的入口地址的指针是指向函数的指针,简称函数的指针。

第一空:由“f=___2___;/*point fountion f1*/”和“r1=f(a);”可知f是一个函数的指针,且f指向的函数的返回值为double型,函数的指针的定义方式是:类型标识符(*指针变量名)(),故第一空处的函数的指针的定义为“double”。

第二空:“f=___2___;/*point fountion f1*/”和“r1=f(a);”可知f指向的函数只有一个参数a,因此,f指向f1函数,即第二空处为“f1”。第三空:“f=___3___;/*point fountion f2*/”和“r2=(*f)(a,b);”,f指向的函数有两个参数,因此,f是指向f2函数,故第三空处应为“f=2”。

程序修改题

2.给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include<stdio.h>

#include<stallib.h>

typedef struct aa

{int data;struer aa*next;}NODE;

int fun(NODE*h)

{ int sum=0;

NODE*p;

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

p=h;

while(p)

{ if(p->data%2==0)

sum+=p->data;

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

p=h->next;

}

return sum;

}

NODE*creatlink(int n)

{NODE*h r*p,*s;

int i;

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

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

{s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%16;

s->next=p->next;

p->next=s;

p=p->next;

}

p->next=NULL;

return h;

}

outlink(NODE*h,FILE*pf)

fNODE*p;

p=h->next;

fprintf(pf,\\

(1)p=h->next;

(2)p=p->next;

解析:(1)该题中函数功能是单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。对单向链表进行遍历,并在遍历过程查找数据域为偶数的结点,并将数据域为偶数的元素累加起来。

(2)从已给定源程序的main主函数开始入手,“head=creatlink(12);”语句生成随机数的链表,“outlink(head,stdout);”输出该链表,“even=fun(head);”语句调用函数fun求得链表中的数据域为偶数的值的累加和。

(1)根据题干中求得除了头结点之外的结点数据域中的数据值,头指针h,工作指针p指向头结点的下一个结点,所以第一个标识下的“p=h;”指向头结点应该改为指向下一个结点“p=h->next;”。

(2)工作指针p,利用p实现对链表的遍历,p表示指向链表的当前结点,所以指向下一个结点应该是“p=p->next;”。

程序设计题

3.请编写函数fun,函数的功能是:判断字符串是否为回文?若是,函数返回1,主函数中输出:YES否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。

例如,字符串LEVEL是回文,而字符串123312就不是回文。

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

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

#include<stdio.h>

#include<string.h>

#define N 80

int fun(char *str)

{

}

main()

{ char s[N];void NONO();

printf(\\

int i,n=0,flag=1;//初始设置标识位

char *p=str;

//设置工作指针

while(*p) //取字符串大小

{ n++;

p++;

}

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

//循环判断字符串s是否为回文

if(str[i]==str[n-1-i]);

//设置比较位j为n-1-i

else

//若不符合条件,标识位设为0,跳出循环

{flag=0;

break;

}

return flag;

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号