第一范文网 - 专业文章范例文档资料分享平台

C语言指针模拟测试题 - 答案

来源:用户分享 时间:2025/5/25 12:46:31 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

}

程序输出的第一行是j=2 第二行是j=6 最后一行是j=10

三、完善程序

1.(2*3分=6分)以下min函数的功能是:在非空单向链表中查找结点数据域为最小的值,并作为函数返回值.链表如下.

head struct NODE{int data;NODE *next;}; int min(NODE *first) {

NODE *p; int m; p=first; m=p->data;

for(p=p->next;p!=NULL;p= p->next ) if(m> p->data )m=p->data;

return m; }

2.(3*2分=6分)以下程序求二维数组的平均值 float average(float (*p)[4],int n) {

float sum=0;

for(int i=0; i

}

return sum/(n*4); }

void main( )

{ float score[3][4]={{56,65,70,76},{89,97,52,81},{90,99,91,86}}; printf(”平均值=%f”,average(score, 3 )); }

3. (2*3.5分=7分)以下程序实现将以L为头指针的链表逆置(设结点个数n>2),即将链表头当链表尾,链表尾当链表头。如下图:

A2 An 0 L A1

5

L

An An-1 A1 0 提示:本算法的思想是,逐个地把L的当前结点q插入新的链表头部,p为新表表头.

void reverse(NODE * L) {

p=L->next; q=p->next;

L->next=NULL ; while(q!=NULL) {

p->next=L;

L=p; p=q;

q=q->next ; }

p->next=L;L=p; } 4. (3*2分=6分) 以下程序实现链表L中删除第i个元素(设1≤i≤元素个数) void Delete(NODE *L,int i) {NODE *p,*q;

if(i= =1) {q=L;L=L->next; } //删除第一个元素 else { p=L;

while(--i>1) p=p->next ; q=p->next;

p->next=q->next ; //删除第i个元素 }

free(q) ; }

5. (4*2.5分=10分)设链表上结点的数据结构定义如下: struct PNODE{ int x; PNODE *next; };

设已建立了一条链表,h为链表首指针。函数DelAdd的功能为:若链表上能找到结点的x值为value,则从链表上删除该结点(假设链表上各个结点值是

6

不同的);否则构造一个新结点,其x 的值为value,并将新结点插入链尾。该函数要返回链表的首指针。

PNODE *DelAdd(PNODE *h, int value) {

PNODE *p1, *p2; int flag=0; //值为1时,表示已删除值为value的结点 p1=h;

while(p1 && flag= =0) { if(p1->x= =value) { flag=1; if(p1= =h){h= p1->next ; free( p1); } else{p2->next= p1->next ; free( p1);} }

else {p2=p1; p1= p1->next ;} }

if(flag= =0) { p1= (PNODE *)malloc(sizeof (PNODE)); p1->x=value; p1->next=0; if(h= =0) h=p1; else p2->next =p1 ;

}

return h; }

7

搜索更多关于: C语言指针模拟测试题 - 答案 的文档
C语言指针模拟测试题 - 答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5u02o8o9wi6o2vt5ky7r_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top