学校英文版网站建设,佛山市南海区交通建设网站,做家乡网站源代码,国外优秀创意的个人网页设计欣赏第93套#xff1a;
给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun 函数,每调用一次fun函数#xff0c;输出链表尾部结点中的数据#xff0c;并释放该结点#xff0c;使链表 缩短。 请在程序的下划线处填入正确的内容并把下划线删除#xff0c;使程…第93套
给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun 函数,每调用一次fun函数输出链表尾部结点中的数据并释放该结点使链表 缩短。 请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。 注意源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行也不得更改程序的结构 给定源程序
#include stdio.h
#include stdlib.h
#define N 8
typedef struct list
{ int data;
struct list *next;
} SLIST;
void fun( SLIST *p)
{ SLIST *t, *s;
tp-next; sp;
while(t-next ! NULL)
{ st;
tt-___1___;
}
printf( %d ,___2___);
s-nextNULL;
free(___3___);
}
SLIST *creatlist(int *a)
{ SLIST *h,*p,*q; int i;
hp(SLIST *)malloc(sizeof(SLIST));
for(i0; iN; i)
{ q(SLIST *)malloc(sizeof(SLIST));
q-dataa[i]; p-nextq; pq;
}
p-next0;
return h;
}
void outlist(SLIST *h)
{ SLIST *p;
ph-next;
if (pNULL) printf(\nThe list is NULL!\n);
else
{ printf(\nHead);
do { printf(-%d,p-data); pp-next; } while(p!NULL);
printf(-End\n);
}
}
main()
{ SLIST *head;
int a[N]{11,12,15,18,19,22,25,29};
headcreatlist(a);
printf(\nOutput from head:\n); outlist(head);
printf(\nOutput from tail: \n);
while (head-next ! NULL){
fun(head);
printf(\n\n);
printf(\nOutput from head again :\n); outlist(head);
}
} 解题思路 本题是对已经建立的链表通过调用一次函数就输出链表尾部的数据。程序中共有三处要填上适当的内容使程序能运行出正确的结果。 第一处由于本题要求输出链表尾部的数据函数是利用while循环语句找出链表尾部的指针并存入临时变量s中那么每循环一次就要判断链表是否已结束位置如果是则退出循环进行输出由于是通过t指针变量进行操作的因此都要取t的next指针重新赋给t来实现所以本处应填next。 第二处输出最后一个结点的数据所以应填t-data或(*t).data。 第三处输出出最后一个结点数据后并把此结点删除了程序要求释放内存所以应填t。 给定程序MODI1.C中函数fun的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。 例如若字符串为abcd则应输出dcba。 请改正程序中的错误使它能计算出正确的结果。 注意不要改动main函数不得增行或删行也不得更改程序的结构 给定源程序
#include stdio.h
fun (char a)
{ if ( *a )
{ fun(a1) ;
printf(%c *a) ;
}
}
main( )
{ char s[10]abcd;
printf(处理前字符串%s\n处理后字符串, s);
fun(s); printf(\n) ;
} 解题思路 第一处形参a应定义为字符串指针。 第二处语句中缺少逗号。 请编写一个函数fun它的功能是比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数)函数返回较长的字符串。若两个字符串长度相同则返回第一个字符串。 例如输入beijing shanghai 为回车键, 函数将返回shanghai。 注意: 部分源程序存在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入 你编写的若干语句。 给定源程序
#include stdio.h
char *fun ( char *s, char *t)
{
}
main( )
{ char a[20],b[20];
printf(Input 1th string:) ;
gets( a);
printf(Input 2th string:) ;
gets( b);
printf(%s\n,fun (a, b ));
NONO ();
} 解题思路 本题是比较两个字符串的长度并按要求返回字符串。 我们给出的程序是使用for循环来判断两个字符串中哪一个比较长或相等循环的终止值为两个字符串中是否字符串结束符如果有则退出循环体。接下来再判断两个字符串是否同时出现结束符则返回第一个字符串s如果不没有同时出现则判断哪一个字符串先有结束符则按要求返回指定的字符串。 参考答案
char *fun ( char *s, char *t)
{
int i;
char *ps, *qt;
for(i0;*p *q; i) {
p; q;
}
if(*p 0 *q 0) return s ;
if(*p) return s ;
else return t ;
}