当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
2015年计算机二级C语言上机操作题及答案(35)
发布时间:2011/7/12 8:43:32 来源:城市学习网 编辑:ziteng
  第35套
  填空题
  Str是全部由小写字母字符和空格字符组成的字符串,由num传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串str中的单词数,结果由变量num传回。给个单词之间有空格隔开,并且字符串str开始不存在空格。
  例如,str=”how are you”,结果为:num=3.
  注意:部分源程序给出如下
  请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
  试题程序:
  #include <stdio.h>
  #define  N 80
  void fun(char  *s, int  *num)
  {
  int  i, n = 0;
  for (i=0; ___1___; i++)
  if (s[i]>='a' && s[i]<='z' && s[i+1]==' ' || s[i+1]=='\0')
  ___2___;
  ___3___;
  }
  main()
  {
  char  str[N];
  int  num = 0;
  printf("Enter a string :\n");
  gets(str);
  while (str[num])
  num++;
  fun(str, &num);
  printf("The number of word is : %d\n\n", num);
  }
  第1处填空:i<*num或*num>i
  第2处填空:n++或++n或n+=1或n=n+1
  第3处填空:*num=n [NextPage]   改错题
  下列给定程序中,函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指由空格隔开的字符串)。例如,若输入:
  I am a student to take the examination.
  则应输出: I aM A studenT tO takE thE examinatioN.
  请改正程序中的错误,使其能得出正确结果。
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
  试题 程序:
  #include <string.h>
  #include <ctype.h>
  #include <stdio.h>
  void fun(char  *p)
  {
  int  k = 0;
  for (; *p; p++)
  /********found********/
  if (k)
  {
  if (p == ' ')
  {
  k = 0;
  /********found********/
  *p = toupper(*(p-1));
  }
  }
  else
  {
  k = 1;
  }
  }
  main()
  {
  char  chrstr[64];
  int  d;
  printf("\nPlease enter an english sentence within 63 letters: ");
  gets(chrstr);
  d = strlen(chrstr);
  chrstr[d+1] = ' ';
  chrstr[d+1] = 0;
  printf("\n\nBefor changing: %s", chrstr);
  fun(chrstr);
  printf("\nAfter changing:\n  %s", chrstr);
  }
  第1处:if (p==’ ’)应改为if(*p==’ ’)
  第2处:*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));
 [NextPage]   编程题
  请编写一个函数,用来删除字符串中的所有空格。
  例如,输入asd af aa z67,则输出为asdafaaz67。
  注意:部分源程序给出如下。
  请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
  试题程序:#include <stdio.h>
  #include <ctype.h>
  #include <conio.h>
  void fun(char *str)
  {
  }
  main()
  {
  char str[81];
  char Msg[] = "Input a string:";
  int n;
  FILE *out;
  printf(Msg) ;
  gets(str);
  puts(str);
  fun(str);
  printf("*** str: %s\n", str);
  out=fopen ("out.dat", "w");
  fun(Msg);
  fprintf (out, "%s", Msg);
  fclose (out );
  }
  答案是:
  void fun(char *str)
  {
  int i=0;
  char *p=str;
  while(*p)
  {
  if(*p!=’ ’)
  {
  str[i]=*p;
  i++;
  }
  p++;
  }
  str[I]=’\0’;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved