使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含—个源程序文件modi1.c。此程序建立了一个带头节点的单向链表,并用随机函数为各节点赋值。函数fun()的功能是将单向链表节点(不包括头节点)数据域为偶数的值累加起来,并将

admin2023-02-27  9

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含—个源程序文件modi1.c。此程序建立了一个带头节点的单向链表,并用随机函数为各节点赋值。函数fun()的功能是将单向链表节点(不包括头节点)数据域为偶数的值累加起来,并将结果作为函数值返回。
    请改正函数fun()中的错误,使它能得出正确的结果。
    注意:部分源程序在文件modi1.c中,不要改动main()函数,不得增行或删行,也不得更改程序的结构!
  试题程序:
1 #include<stdio.h>
2 #include<conio.h>
3 #include<stdlib.h>
4 typedef struct aa
5 {int data;
6  struct aa*next:
7 }NODE;
8 int fun(NODE*h)
9 {int sum=0;
10  NODE*p;
11  p=h->next;
12 /*********found*********/
13  while(p->next)
14    {if(P->data%2==0)
15    sum+=P->data;
16 /*********found*********/
17    p=h->next;
18    }
19  return sum;
20 }
21 NODE*creatlink(int n)
22 {
23  NODE*h,*p,*s;
24  int i;
25  h=p=(NODE*)malloc(sizeof(NODE));
26  for(i=1;i<n;i++)
27  {
28    s=(NODE*)malloc(sizeof(NODE});
29    s->data=rand()%16;
30    s->next=P->next;
31    p->next=s;
32    p=p->next;
33  }
34  p->next=NULL;
35  return h;
36 }
37 outlink(NODE*h)
38 { NODE*p;
39  P=h->next:
40  printf("\n\n The List:\n\nHEAD");
41  while(p)
42    (printf("->%d",p->data);
43    p=p->next;}
44 printf("\n");
45 }
46 void main()
47 {NODE*head;int sum;
48    system("CLS");
49    head=creatlink(10);
50    outlink(head);
51    sum=fun(head);
52    printf{"\nSUN=%d",sum);
53 }

选项

答案(1)while(p!=NULL) (2)p=p->next;

解析 (1)判断当前指针p指向的节点是否存在,若存在,则对该节点数据域进行判断操作。
    (2)判断结束后指针指向下一个节点。   
转载请注明原文地址:https://kaotiyun.com/show/yP0D777K
0

最新回复(0)