计算机等级考试二级C语言上机题集(第51~55套)
第51套1.程序填空题
给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<stdlib.h>
#define N5
typedef struct node
{
intdata;
struct node*next;
} NODE;
/**********found**********/
__1__ fun(NODE *h)
{
NODE*p, *q, *r;
p = h;
if (p == NULL)
return NULL;
q = p->next;
p->next = NULL;
/**********found**********/
while (__2__)
{
r = q->next;
q->next = p;
p = q;
/**********found**********/
q = __3__ ;
}
returnp;
}
NODE *creatlist(inta[])
{
NODE*h,*p,*q;
inti;
h=NULL;
for(i=0; i<N; i++)
{
q=(NODE *)malloc(sizeof(NODE));
q->data=a;
q->next = NULL;
if (h == NULL)h = p = q;
else {p->next = q;p = q; }
}
returnh;
}
void outlist(NODE*h)
{
NODE*p;
p=h;
if (p==NULL)printf("The list is NULL!\n");
else
{
printf("\nHead");
do
{
printf("->%d", p->data);
p=p->next;
} while(p!=NULL);
printf("->End\n");
}
}
int main()
{
NODE*head;
inta={2,4,6,8,10};
head=creatlist(a);
printf("\nThe original list:\n");
outlist(head);
head=fun(head);
printf("\nThe list after inverting :\n");
outlist(head);
return 0;
}2.程序修改题
给定程序中,函数fun的功能是将字符串s中位于奇数位置的字符或ASCII码为偶数的字符放入字符串t中(规定第1个字符放在第0位中)。
例如,字符串中的数据为:AABBCCDDEEFF,则输出应为:ABBCDDEFF。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
#include #include #defineN80void fun(char *s, char t[]){ inti, j=0; for(i=0; i
页:
[1]