第51套
1.程序填空题
给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!- #include <stdio.h>
- #include <stdlib.h>
- #define N 5
- typedef struct node
- {
- int data;
- 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__ ;
- }
- return p;
- }
- NODE *creatlist(int a[])
- {
- NODE *h,*p,*q;
- int i;
- h=NULL;
- for(i=0; i<N; 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; }
- }
- return h;
- }
- 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;
- int a[N]={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函数,不得增行或删行,也不得更改程序的结构。
[code]#include #include #define N 80void fun(char *s, char t[]){ int i, j=0; for(i=0; i |