模拟试题

3773考试网计算机等级考试模拟试题正文

2013计算机二级C语言上机题库第三十七套及答案解析三

来源:2exam.com 2013-6-24 11:30:11

编程题
  假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度, 形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。
  例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:A*BC*DEF*G。 
  注意: 部分源程序在文件PROG1.C文件中。 
  请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 
  给定源程序: 
  #include <stdio.h> 
  void fun( char *a, int n,int h,int e ) 
  { 
  }  来源:考试大网
  main() 
  { char s[81],*t,*f; int m=0, tn=0, fn=0; 
  printf("Enter a string:\n");gets(s); 
  t=f=s; 
  while(*t){t++;m++;} 
  t--; 
  while(*t=='*'){t--;tn++;} 
  while(*f=='*'){f++;fn++;} 
  fun( s , m,fn,tn ); 
  printf("The string after deleted:\n");puts(s); 
  NONO(); 
  } 
  解题思路: 
  本题是考察对字符串的操作。 
  1. 求出字符串的长度。 
  2. 利用循环把字符串中字符按要求仍存放在原字符串首址开始的位置上。 
  参考答案: 
  void fun( char *a, int n,int h,int e ) 
  { 
  char *p=a ; 
  int j=0,len=0; 
  while(*p) {p++; len++;} 
  while(j<len-h-e) { 
  a[j]=a[h+j]; 
  j++; 
  } 
  a[j]=0; 
   } 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1