- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                计算机C语言上机题库
                    
03
程序填空题:
给定程序中,函数fun的功能是:计算出带有头结点的单向链表中各结点数据域之和作为函数值返回。
    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
    注意:源程序存放在考生文件夹下的BLANK1.C中。
          不得增行或删行,也不得更改程序的结构!
#include    stdio.h
#include    stdlib.h
#define    N    8
typedef  struct list
{  int  data;
   struct list  *next;
} SLIST;
SLIST *creatlist(int  *);
void outlist(SLIST  *);
int fun( SLIST  *h)
{  SLIST  *p;         int  s=0;
   p=h-next;
   while(p)
   {
/**********found**********/
      s+= p-___1___;
/**********found**********/
      p=p-___2___;
   }
   return s;
}
main()
{  SLIST  *head;
   int  a[N]={12,87,45,32,91,16,20,48};
   head=creatlist(a);    outlist(head);
/**********found**********/
   printf(\nsum=%d\n, fun(___3___));
}
SLIST *creatlist(int  a[])
{  SLIST  *h,*p,*q;        int  i;
   h=p=(SLIST *)malloc(sizeof(SLIST));
   for(i=0; iN; i++)
   {  q=(SLIST *)malloc(sizeof(SLIST));
      q-data=a[i];  p-next=q;  p=q;
   }
   p-next=0;
   return  h;
}
void outlist(SLIST  *h)
{  SLIST  *p;
   p=h-next;
   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);
  }
}
本题考查的是链表。
    在函数fun中,通过指针p遍历链表的各个结点,直到其为NULL,如果其不为NULL,则将其data域的值累加到s上去,并将p指向其后续结点,故第一空应为data,第二空为next;第三空的目的是调用函数fun,由于函数fun的形参为指向SLIST类型的指针,而head又是整个链表的头指针,故第三空应填head。
程序修改题:
给定程序modi.c中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。
    例如,s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。
    请改正程序中的错误,使它能得出正确结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
本题着重考察考生对C语言中一些简单算法的掌握情况。
#include stdio.h
#define SIZE 20
fun(double *s,double *w)
{  int k,i;  double sum;
   for (k=2,i=0;iSIZE;i++)
   {  s[i]=k;  k+=2; }
/************found************/
   sun=0.0;
   for(k=0,i=0;iSIZE;i++)
   {  sum+=s[i];
/************found************/
      if (i+1%5==0)
      {   w[k]=sum/5;sum=0;k++;}
   }
   return k;
}
main()
{  double a[SIZE],b[SIZE/5];
   int i,k;
   k=fun(a,b);
   printf(The origi
                您可能关注的文档
最近下载
- 2025年2季度5G产业和市场发展报告-TD产业联盟.pptx VIP
 - 基于plc的中央空调控制系统设计.docx VIP
 - 2017年11月浙江卷(健忘妈妈趣事)-2022年新高考英语读后续写历年真题解析(40张精品课件).pptx VIP
 - 2023年资料员资格考试题库答案下载.docx
 - 2025年中考数学总复习《二次函数的实际应用》专项测试卷(附答案).docx VIP
 - 2025年护理核心制度考核试题(附答案).docx
 - 超星尔雅学习通《中华传统文化之文学瑰宝》2021章节测试答案.docx VIP
 - RAZ-D分级阅读学前英语绘本Pillow Fort Password(可打印成册).pdf
 - 《赤壁》PPT下载一等奖新优质课比赛公开课获奖.ppt VIP
 - 论语 原文版精校 可直接打印.pdf VIP
 
原创力文档
                        

文档评论(0)