【說明】
該程序的功能是從文件IN.DAT中讀取一篇英文文章存入到字符串?dāng)?shù)組xx中,以行為單位對行中以空格或標(biāo)點符號為分隔的所有單詞進行倒排。最后把已處理的字符串(應(yīng)不含標(biāo)點符號)仍按行重新存入字符串?dāng)?shù)組xx中,最后把結(jié)果xx輸出到文件OUT6.DAT中。
例如:原文:You He Me
I am a student.
結(jié)果:Me He You
student a am I
原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個字符,含標(biāo)點符號和空格。
【函數(shù)】
#include
#include
#include
#include
char xx[50][80];
int maxline=0;/*文章的總行數(shù)*/
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("數(shù)據(jù)文件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)isalpha(*p1)&&p1!=xx[i]
(2)*p2=0
(3)ReadDat()
(4)i
(5)maxline
試題二
閱讀下列說明和流程圖,將應(yīng)填入(n)的語句寫在答題紙的對應(yīng)欄內(nèi)。
【流程圖說明】
下面的流程(如圖1所示)用N-S盒圖形式描述了在一棵二叉樹排序中查找元素的過程,節(jié)點有3個成員:data,left和right。其查找的方法是:首先與樹的根節(jié)點的元素值進行比較:若相等則找到,返回此結(jié)點的地址;若要查找的元素小于根節(jié)點的元素值,則指針指向此結(jié)點的左子樹,繼續(xù)查找;若要查找的元素大于根節(jié)點的元素值,則指針指向此結(jié)點的右子樹,繼續(xù)查找。直到指針為空,表示此樹中不存在所要查找的元素。
【算法說明】
【流程圖】
將上題的排序二叉樹中查找元素的過程用遞歸的方法實現(xiàn)。其中NODE是自定義類型:
typedef struct node{
int data;
struct node*left;
struct node*right;
}NODE;
【算法】
NODE*SearchSortTree(NODE*tree,int e)
{
if(tree!=NULL)
{
if(tree->data (4) ;∥小于查找左子樹
else if(tree->data (5) ;∥大于查找左子樹
else return tree;
}
return tree;
}
【答案】
(1)p=p->left
(2)p=p->right
(3)return P
(4)return SearchSortTree(tree->left)
(5)return SearchSortTree(tree->right)
試題三
假設(shè)以帶頭結(jié)點的單循環(huán)鏈表作非遞減有序線性表的存儲結(jié)構(gòu)。函數(shù)deleteklist(LinkList head)的功能是刪除表中所有數(shù)值相同的多余元素,并釋放結(jié)點空間。
例如:鏈表初始元素為:
(7,10,10,21,30,42,42,42,51,70)
經(jīng)算法操作后變?yōu)椋?/p>
(7,10,21,30,42,51,70)
【函數(shù)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;
}
}
【說明2】
已知一棵完全二叉樹存放于一個一維數(shù)組T[n]中,T[n]中存放的是各結(jié)點的值。下面的程
序的功能是:從T[0]開始順序讀出各結(jié)點的值,建立該二叉樹的二叉鏈表表示。
【函數(shù)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)
{/*根據(jù)順序存儲結(jié)構(gòu)建立二叉鏈表*/
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
for(int i=0;i
ConstructTree(A,n,0,bitree);
}
答案:
(1)q!=head &&q->data==p->data
(2)p->next=q->next
(3)ptr=NULL
(4)ptr->leftchild
(5)2*i+2
- 環(huán)球網(wǎng)校:2024年計算機軟考高級旗艦班系規(guī)旗艦班課程
- 2025年計算機技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試時間:5月24日-27日、11月8日-11日
- 2024下半年計算機技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試成績查詢通知
- 2024年上半年計算機軟件資格考試單獨劃線地區(qū)合格標(biāo)準(zhǔn)
- 2023上半年計算機軟件資格考試單獨劃線地區(qū)合格標(biāo)準(zhǔn)通告
- 2023下半年計算機技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試模擬練習(xí)平臺上線公告
- 查看計算機軟件水平考試全部文檔 >>