程序填空.docx
《程序填空.docx》由会员分享,可在线阅读,更多相关《程序填空.docx(115页珍藏版)》请在冰豆网上搜索。
程序填空
1.给定程序中,函数fun的功能是将不带头结点的单向链表逆置。
即若原链表中从头至尾结点数据域依次为:
2、4、6、8、10,逆置后,从头至尾结点数据域依次为:
10、8、6、4、2。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineN5
typedefstructnode{
intdata;
structnode*next;
}NODE;
/**********found**********/
NODE*fun(NODE*h)
{NODE*p,*q,*r;
p=h;
if(p==NULL)
returnNULL;
q=p->next;
p->next=NULL;
while(q)
{
/**********found**********/
r=q->next;
q->next=p;
p=q;
/**********found**********/
q=r;
}
returnp;
}
NODE*creatlist(inta[])
{NODE*h,*p,*q;inti;
h=NULL;
for(i=0;i{q=(NODE*)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h==NULL)h=p=q;
else{p->next=q;p=q;}
}
returnh;
}
voidoutlist(NODE*h)
{NODE*p;
p=h;
if(p==NULL)printf("ThelistisNULL!
\n");
else
{printf("\nHead");
do
{printf("->%d",p->data);p=p->next;}
while(p!
=NULL);
printf("->End\n");
}
}
main()
{NODE*head;
inta[N]={2,4,6,8,10};
head=creatlist(a);
printf("\nTheoriginallist:
\n");
outlist(head);
head=fun(head);
printf("\nThelistafterinverting:
\n");
outlist(head);
}
2.给定程序中,函数fun的功能是:
在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。
ss所指字符串数组中共有N个字符串,且串长小于M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineN5
#defineM10
intfun(char(*ss)[M],intk)
{inti,j=0,len;
/**********found**********/
for(i=0;i{len=strlen(ss[i]);
/**********found**********/
if(len<=K)
/**********found**********/
strcpy(ss[j++],ss[i]);
}
returnj;
}
main()
{charx[N][M]={"Beijing","Shanghai","Tianjing","Nanjing","Wuhan"};
inti,f;
printf("\nTheoriginalstring\n\n");
for(i=0;if=fun(x,7);
printf("Thestringwitchlengthislessthanorequalto7:
\n");
for(i=0;i3.给定程序中,函数fun的功能是将不带头结点的单向链表逆置。
即若原链表中从头至尾结点数据域依次为:
2、4、6、8、10,逆置后,从头至尾结点数据域依次为:
10、8、6、4、2。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#defineN5
typedefstructnode{
intdata;
structnode*next;
}NODE;
/**********found**********/
NODE*fun(NODE*h)
{NODE*p,*q,*r;
p=h;
if(p==NULL)
returnNULL;
q=p->next;
p->next=NULL;
while(q)
{
/**********found**********/
r=q->NODE;
q->next=p;
p=q;
/**********found**********/
q=r;
}
returnp;
}
NODE*creatlist(inta[])
{NODE*h,*p,*q;inti;
h=NULL;
for(i=0;i{q=(NODE*)malloc(sizeof(NODE));
q->data=a[i];
q->next=NULL;
if(h==NULL)h=p=q;
else{p->next=q;p=q;}
}
returnh;
}
voidoutlist(NODE*h)
{NODE*p;
p=h;
if(p==NULL)printf("ThelistisNULL!
\n");
else
{printf("\nHead");
do
{printf("->%d",p->data);p=p->next;}
while(p!
=NULL);
printf("->End\n");
}
}
main()
{NODE*head;
inta[N]={2,4,6,8,10};
head=creatlist(a);
printf("\nTheoriginallist:
\n");
outlist(head);
head=fun(head);
printf("\nThelistafterinverting:
\n");
outlist(head);
}
4.给定程序中,函数fun的功能是:
判断形参s所指字符串是否是"回文"(Palindrome),若是,函数返回值为1;不是,函数返回值为0。
"回文"是正读和反读都一样的字符串(不区分大小写字母)。
例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include
#include
#include
intfun(char*s)
{char*lp,*rp;
/**********found**********/
lp=s;
rp=s+strlen(s)-1;
while((toupper(*lp)==toupper(*rp))&&(lp