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

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

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

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

程序填空题

1.给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。

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

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

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

#include <stdio.h>

{}include <stdlib.h>

#define N 5

typedef struct node {

int data;

struct node *next;

}NODE;

void fun(NODE*h)

{NODE*p,*q,*r;

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

p=h->___1___;

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

if(p==___2___)return;

q=p->next;

p->next=NULL;

while(q)

{ r=q->next;q->next=p;

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

p=q;q=___3___;

}

h->next=p;

}

NODE*creatlist(int a[])

{NODE*h,*p,*q;int i;

h=(NODE*)malloC(si zeof(NODE));

h->next=NULL;

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

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

q->daLa=a[i];

q->next=NULL;

if(h->next==NULL) h->next=p=q;

else{p->next=q;p=q;)

}

return h;

}

void outlist(NODE*h)

{NODE*p;

p=h->next;

if(p==NULL)printf(\\

(1)next

(2)0或NULL

(3)r

解析:函数fun的功能是将带头结点的单向链表逆置。第一空:“p=h->___1___;”对结点p进行初始化,由审题分析可知,p初始化为链表的第二个结点,即p->next,故第一空处应为“next”。第二空:“if(p==___2___)return;”如果链表只有一个结点,无需逆置,即第二空处为“0”或“\0”或“NULL”。第三空:循环内完成结点的指针指向前一个结点,“r=q->next;r已经指向q的下一个结点,“q->next=p;”将q结点指向链表的前一个结点,“p=q;”是将p结点往后移动一个结点位置,第三空处是q结点往后移动一个结点位置,即第三空处为“r”。

程序修改题

2.给定程序MODI1.C中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

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

#include<stdio.h>

#include<string.h>

#define N 80

int fun(char*s,char*t)

{ int n;

char*p,*r;

n=0;

while(*s)

{p=s;

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

r=p;

while(*r)

if(*r==*p) {r++;p++;}

else break;

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

if(*r=0)

n++;

s++;

}

return n;

}

main()

{ char a[N],b[N];int m;

printf(\\

(1)r=t;

(2)if(*r==0)

解析:函数的功能是计算字符串中含有某子串的数目。

(1)根据“while(*r)if(*r==*p){r++;p++;}”可知该循环是比较r和p指向的字符串是否相等,本题的要求是计算字符串中含有某子串的数目,p指向的源字符串s,所以r应指向的是字符串t,故第一标识下应改成“r=;”。

(2)根据题意第二标识下“if(*r=0)”应该是判断r是否指向字符串尾,在C语言中,等于是用“==”标识,因此,第二标识下应改成“if(*r===0)”。

程序设计题

3.请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。

例如,字符串数组中的M个字符串为

AAAA

BBBBBBB

CC

则合并后的字符串的内容应是:AAAABBBBBBBCC。

提示:strcat(a,b)的功能是将字符串b复制到字符串a的串尾上,成为一个新串。

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

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

#include<stdio.h>

#include<string.h>

#define 1 3

#define N 2 0

void fun(char a[M][N],char*b)

{

}

main()

{char w[M][N]={\\

int i,j,k=0;

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

{for(j=0;j<N;j++)

if(*(*(a+i)+j))

//如果不指向行的尾

{b[k]=*(*(a+i)+j);

//将行中的值赋值给数组b

k++;}//数组下标加1

else//如果指向尾,则跳出这一行

break;

b[k]=’\0’;}//数组加尾符

解析:(1)二维字符数组第i行j列元素a[i][j],就是指针形式的“*(*(a+i)+j)”。因此,如果字符“*(*(a+i)+j)”是串的结束符,则说明该字符串已经结束。

(2)当一维字符数组存放完字符串中各字符后,必须在一维字符数组的尾字符处加一个结束符“’\0’”,才能把字符数组变成字符串。否则,字符数组就只能是非字符串的一般字符数组。

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号