计算机二级考试C语言模拟题五套.docx

上传人:b****6 文档编号:3396521 上传时间:2022-11-22 格式:DOCX 页数:25 大小:20.36KB
下载 相关 举报
计算机二级考试C语言模拟题五套.docx_第1页
第1页 / 共25页
计算机二级考试C语言模拟题五套.docx_第2页
第2页 / 共25页
计算机二级考试C语言模拟题五套.docx_第3页
第3页 / 共25页
计算机二级考试C语言模拟题五套.docx_第4页
第4页 / 共25页
计算机二级考试C语言模拟题五套.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

计算机二级考试C语言模拟题五套.docx

《计算机二级考试C语言模拟题五套.docx》由会员分享,可在线阅读,更多相关《计算机二级考试C语言模拟题五套.docx(25页珍藏版)》请在冰豆网上搜索。

计算机二级考试C语言模拟题五套.docx

计算机二级考试C语言模拟题五套

题库6

  一、填空题

  给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。

  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

  注意:

源程序存放在考生文件夹下BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #defineN8

  typedefstructlist

  {intdata;

  structlist*next;

  }SLIST;

  voidfun(SLIST*p)

  {SLIST*t,*s;

  t=p->next;s=p;

  while(t->next!

=NULL)

  {s=t;

  /**********found**********/

  t=t->___1___;

  }

  /**********found**********/

  printf("%d",___2___);

  s->next=NULL;

  /**********found**********/

  free(___3___);

  }

  SLIST*creatlist(int*a)

  {SLIST*h,*p,*q;inti;

  h=p=(SLIST*)malloc(sizeof(SLIST));

  for(i=0;i

  {q=(SLIST*)malloc(sizeof(SLIST));

  q->data=a[i];p->next=q;p=q;

  }

  p->next=0;

  returnh;

  }

  voidoutlist(SLIST*h)

  {SLIST*p;

  p=h->next;

  if(p==NULL)printf("\nThelistisNULL!

\n");

  else

  {printf("\nHead");

  do{printf("->%d",p->data);p=p->next;}while(p!

=NULL);

  printf("->End\n");

  }

  }

  main()

  {SLIST*head;

  inta[N]={11,12,15,18,19,22,25,29};

  head=creatlist(a);

  printf("\nOutputfromhead:

\n");outlist(head);

  printf("\nOutputfromtail:

\n");

  while(head->next!

=NULL){

  fun(head);

  printf("\n\n");

  printf("\nOutputfromheadagain:

\n");outlist(head);

  }

  }

  解题答案:

  /**********第一空**********/

  t=t->next;

  /**********第二空**********/

  printf("%d",t->data);

  /**********第三空**********/

  free(t);

  ******************************************

  二、改错题:

给定程序MODI1.C中函数fun的功能是:

将字符串中的字符按逆序输出,但不改变字符串中的内容。

  例如,若字符串为abcd,则应输出:

dcba。

  请改正程序中的错误,使它能计算出正确的结果。

  注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  /************found************/

  fun(chara)

  {if(*a)

  {fun(a+1);

  /************found************/

  printf("%c"*a);

  }

  }

  main()

  {chars[10]="abcd";

  printf("处理前字符串=%s\n处理后字符串=",s);

  fun(s);printf("\n");

  }

  解题答案:

  /************found************/

  voidfun(char*a)

  /************found************/

  printf("%c",*a);

  ******************************************

  三、程序题:

请编写一个函数fun,它的功能是:

比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。

若两个字符串长度相同,则返回第一个字符串。

  例如,输入beijingshanghai(为回车键),函数将返回shanghai。

  注意:

部分源程序存在文件PROG1.C中。

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

  给定源程序:

  #include

  char*fun(char*s,char*t)

  {

  }

  main()

  {chara[20],b[20];

  voidNONO();

  printf("Input1thstring:

");

  gets(a);

  printf("Input2thstring:

");

  gets(b);

  printf("%s\n",fun(a,b));

  NONO();

  }

  voidNONO()

  {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

*/

  FILE*fp,*wf;

  inti;

  chara[20],b[20];

  fp=fopen("in.dat","r");

  wf=fopen("out.dat","w");

  for(i=0;i<10;i++){

  fscanf(fp,"%s%s",a,b);

  fprintf(wf,"%s\n",fun(a,b));

  }

  fclose(fp);

  fclose(wf);

  参考答案:

  {

  inti;

  char*p=s,*q=t;

  for(i=0;*p&&*q;i++){

  p++;q++;

  }

  if(*p==0&&*q==0)returns;

  if(*p)returns;

  elsereturnt;

  }

题库7

一、填空题:

给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。

函数fun的功能是:

删除链表中数据域值相同的结点,使之只保留一个。

  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

  注意:

源程序存放在考生文件夹的BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #defineN8

  typedefstructlist

  {intdata;

  structlist*next;

  }SLIST;

  voidfun(SLIST*h)

  {SLIST*p,*q;

  p=h->next;

  if(p!

=NULL)

  {q=p->next;

  while(q!

=NULL)

  {if(p->data==q->data)

  {p->next=q->next;

  /**********found**********/

  free(___1___);

  /**********found**********/

  q=p->___2___;

  }

  else

  {p=q;

  /**********found**********/

  q=q->___3___;

  }

  }

  }

  }

  SLIST*creatlist(int*a)

  {SLIST*h,*p,*q;inti;

  h=p=(SLIST*)malloc(sizeof(SLIST));

  for(i=0;i<>

  {q=(SLIST*)malloc(sizeof(SLIST));

  q->data=a[i];p->next=q;p=q;

  }

  p->next=0;

  returnh;

  }

  voidoutlist(SLIST*h)

  {SLIST*p;

  p=h->next;

  if(p==NULL)printf("\nThelistisNULL!

\n");

  else

  {printf("\nHead");

  do{printf("->%d",p->data);p=p->next;}while(p!

=NULL);

  printf("->End\n");

  }

  }

  main()

  {SLIST*head;inta[N]={1,2,2,3,4,4,4,5};

  head=creatlist(a);

  printf("\nThelistbeforedeleting:

\n");outlist(head);

  fun(head);

  printf("\nThelistafterdeleting:

\n");outlist(head);

  }

  解题答案:

  /**********found**********/

  free(q);

  /**********found**********/

  q=p->next;

  /**********found**********/

  q=q->next;

  ******************************************

  二、改错题:

给定程序MODI1.C中函数fun的功能是:

用选择法对数组中的n个元素按从小到大的顺序进行排序。

  请修改程序中的错误,使它能得出正确的结果。

  注意:

不要改动main函数,不得增行和删行,也不得更改程序的结构!

  给定源程序:

  #include

  #defineN20

  voidfun(inta[],intn)

  {inti,j,t,p;

  for(j=0;j

  /************found************/

  p=j

  for(i=j;i

  if(a[i]

  /************found************/

  p=j;

  t=a[p];a[p]=a[j];a[j]=t;

  }

  }

  main()

  {

  inta[N]={9,6,8,3,-1},i,m=5;

  printf("排序前的数据:

");

  for(i=0;i

  fun(a,m);

  printf("排序后的数据:

");

  for(i=0;i

  }

  解题答案:

  /************found************/

  p=j;

  /************found************/

  p=i;

  ******************************************

三、程序题:

请编写一个函数fun,它的功能是:

求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

例如,若传送给m的值为50,则程序输出:

  711142122283335424449

  注意:

部分源程序存在文件PROG1.C中。

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入

  你编写的若干语句。

  给定源程序:

  #include

  #defineM100

  voidfun(intm,int*a,int*n)

  {

  }

  main()

  {intaa[M],n,k;

  voidNONO();

  fun(50,aa,&n);

  for(k=0;k

  if((k+1)%20==0)printf("\n");

  elseprintf("%4d",aa[k]);

  printf("\n");

  NONO();

  }

  voidNONO()

  {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

*/

  FILE*fp,*wf;

  inti,n,j,k,aa[M],sum;

  fp=fopen("in.dat","r");

  wf=fopen("out.dat","w");

  for(i=0;i<10;i++){

  fscanf(fp,"%d,",&j);

  fun(j,aa,&n);

  sum=0;

  for(k=0;k

  fprintf(wf,"%d\n",sum);

  }

  fclose(fp);

  fclose(wf);

  }

  参考答案:

  {

  inti;

  *n=0;

  for(i=7;i<=m;i++)

  if((i%7==0)||(i%11==0))a[(*n)++]=i;

  }

题库8

一、填空题:

给定程序中,函数fun的功能是:

在带有头结点的单向链表中,查找数据域中值为ch的结点。

找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。

  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

  注意:

源程序存放在考生文件夹的BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #defineN8

  typedefstructlist

  {intdata;

  structlist*next;

  }SLIST;

  SLIST*creatlist(char*);

  voidoutlist(SLIST*);

  intfun(SLIST*h,charch)

  {SLIST*p;intn=0;

  p=h->next;

  /**********found**********/

  while(p!

=___1___)

  {n++;

  /**********found**********/

  if(p->data==ch)return___2___;

  elsep=p->next;

  }

  return0;

  }

  main()

  {SLIST*head;intk;charch;

  chara[N]={'m','p','g','a','w','x','r','d'};

  head=creatlist(a);

  outlist(head);

  printf("Enteraletter:

");

  scanf("%c",&ch);

  /**********found**********/

  k=fun(___3___);

  if(k==0)printf("\nNotfound!

\n");

  elseprintf("Thesequencenumberis:

%d\n",k);

  }

  SLIST*creatlist(char*a)

  {SLIST*h,*p,*q;inti;

  h=p=(SLIST*)malloc(sizeof(SLIST));

  for(i=0;i<>

  {q=(SLIST*)malloc(sizeof(SLIST));

  q->data=a[i];p->next=q;p=q;

  }

  p->next=0;

  returnh;

  }

  voidoutlist(SLIST*h)

  {SLIST*p;

  p=h->next;

  if(p==NULL)printf("\nThelistisNULL!

\n");

  else

  {printf("\nHead");

  do

  {printf("->%c",p->data);p=p->next;}

  while(p!

=NULL);

  printf("->End\n");

  }

  }

  解题答案:

  /**********第一空**********/

  while(p!

=0)

  /**********第二空**********/

  if(p->data==ch)returnn;

  /**********第三空**********/

  k=fun(head,ch);

  ******************************************

二、改错题:

给定程序MODI1.C中函数fun的功能是:

删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。

输入字符串时用'#'结束输入。

  请改正程序中的错误,使它能输出正确的结果。

  注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #include

  fun(char*p)

  {inti,t;charc[80];

  /************found************/

  For(i=0,t=0;p[i];i++)

  if(!

isspace(*(p+i)))c[t++]=p[i];

  /************found************/

  c[t]="\0";

  strcpy(p,c);

  }

  main()

  {charc,s[80];

  inti=0;

  printf("Inputastring:

");

  c=getchar();

  while(c!

='#')

  {s[i]=c;i++;c=getchar();}

  s[i]='\0';

  fun(s);

  puts(s);

  }

  解题答案:

  /************found************/

  for(i=0,t=0;p[i];i++)

  /************found************/

  c[t]='\0';

  ******************************************

三、程序题:

请编写一个函数fun,它的功能是:

将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

  例如,若输入"abc4EFg",则应输出"aBc4EFg"。

  注意:

部分源程序存在文件PROG1.C中。

  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

  给定源程序:

  #include

  #include

  voidfun(char*ss)

  {

  }

  main()

  {chartt[81];

  voidNONO();

  printf("\nPleaseenteranstringwithin80characters:

\n");gets(tt);

  printf("\n\nAfterchanging,thestring\n\"%s\"",tt);

  fun(tt);

  printf("\nbecomes\n\"%s\"\n",tt);

  NONO();

  }

  voidNONO()

  {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。

*/

  FILE*fp,*wf;

  chartt[81];

  inti;

  fp=fopen("in.dat","r");

  wf=fopen("out.dat","w");

  for(i=0;i<10;i++){

  fscanf(fp,"%s",tt);

  fun(tt);

  fprintf(wf,"%s\n",tt);

  }

  fclose(fp);

  fclose(wf);

  }

  参考答案:

  {

  inti;

  for(i=1;i

  if(ss[i]>='a'&&ss[i]<='z')ss[i]-=32;

  }

  }

题库9

一、填空题:

给定程序中,函数fun的功能是:

统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

  注意:

源程序存放在考生文件夹的BLANK1.C中。

  不得增行或删行,也不得更改程序的结构!

  给定源程序:

  #include

  #include

  #defineN8

  typedefstructlist

  {intdata;

  structlist*next;

  }SLIST;

  SLIST*creatlist(int*a);

  voidoutlist(SLIST*);

  voidfun(SLIST*h,int*n)

  {SLIST*p;

  /**********found**********/

  ___1___=0;

  p=h->next;

  while(p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1