2011年程序员考试考前密卷(一)-下午试题

0
收藏   分享
  • 卷面总分:75分
  • 试卷类型:模拟考试
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:31次
  • 作答时间:150分钟
试卷简介
该试卷以考试大纲和考试专家委员会编写的考试指导为编写依据,以帮助考生熟悉和掌握专业知识、提高能力和素质为主要目的,切实反映考试对考生在知识点的掌握程度和专业水平上的要求。遵循科学、严谨、客观、规范的原则,严格按照实际考试的科目划分和题型分布进行编写,能够有效地帮助考生考前自测和反馈复习成果。
试卷预览
1

●试题四

阅读以下说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

该程序的功能是从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后把结果xx输出到文件OUT6.DAT中。

例如:原文:You He Me

I am a student.

结果:Me He You

student a am I

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。

【函数】

#include

#include

#include

#include

char xx[50][80];

int maxline=0;/*文章的总行数*/

int ReaaDat(void);

void WriteDat(void);

void StrOL(void)

{

char*pl,*p2,t[80];

int i;

for(i=0;i

{p1=xx[i];t[0]=0;

while(*p1)p1++;

while(p1>=xx[i])

{while(!isalpha(*p1)&&p1!=xx[i])p1--;

p2=p1;

while( (1) )p1--;

if(p1==xx[i])

if(isalpha(*p1))p1--;

else if(!isalpha(*(p1+1)))break;

p2++;

 (2) ;

strcat(t,p1+1);

strcat(t," ");

}

strcpy(xx[i],t);

}

}

void main()

{

if( (3)  ){

printf("数据文件in.dat不能打开!\n\007");

return;

}

StrOL();

writeDat();

getch();

}

int ReadDat(void)

{

FILE*fp;

int i=0;

char*p;

if((fp=fopen("e:\\a\\in.dat","r"))==NULL)return 1;

while(fgets(xx[i],80,fp)!=NULL){

p=strchr(xx[i],′\n′);

if(p)*p=0;

i++;

}

maxline= (4) 

fclose(fp);

return 0;

}

void WriteDat(void)

{

FILE*fp;

int i;

fp=fopen("e:\\a\\out6.dat","w");

for(i=0;i< (5) ;i++){

printf("%s\n",xx[i]);

fprintf(fp,"%s\n",xx[i]);

}

fclose(fp);

}

1

●试题三

阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明3.1】

假设以带头结点的单循环链表作非递减有序线性表的存储结构。函数deleteklist(LinkList head)的功能是删除表中所有数值相同的多余元素,并释放结点空间。

例如:链表初始元素为:

(7,10,10,21,30,42,42,42,51,70)

经算法操作后变为:

(7,10,21,30,42,51,70)

【函数3.1】

void deleteklist(LinkList head)

{

LinkNode*p,*q;

p=head->next;

while(p!=head)

{

q=p->next;

while( (1) )

{

 (2) ;

free(q);

q=p->next;

}

p=p->next;

}

}

【说明3.2】

已知一棵完全二叉树存放于一个一维数组T[n]中,T[n]中存放的是各结点的值。下面的程序的功能是:从T[0]开始顺序读出各结点的值,建立该二叉树的二叉链表表示。

【函数3.2】

#include

typedef struct node {

int data;

stuct node leftChild,rightchild;

}BintreeNode;

typedef BintreeNode*BinaryTree;

void ConstrncTree(int T[],int n,int i,BintreeNode*&ptr)

{

if(i>=n) (3) ;∥置根指针为空

else

{

ptr=-(BTNode*)malloc(sizeof(BTNode))

ptr->data=T[i];

ConstrucTree(T,n,2*i+1, (4) );

ConstrucTree(T,n, (5) ,ptr->rightchild);

}

}

main(void)

{/*根据顺序存储结构建立二叉链表*/

Binarytree bitree;int n;

printf("please enter the number of node:\n%s";n);

int*A=(int*)malloc(n*sizeof(int));

for(int i=0;i<n;i++)scanf("%d,A+i);/*从键盘输入结点值*/

for(int i=0;i<n;i++)printf("%d",A[i]);

ConstructTree(A,n,0,bitree);

}