云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C语言指针模拟测试题 - 答案

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

  • 62 次阅读
  • 3 次下载
  • 2025/6/14 10:23:40

}

程序输出的第一行是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语言指针模拟测试题 - 答案 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

} 程序输出的第一行是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

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com