模拟试题

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

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

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

 改错题
  给定程序MODI1.C中函数fun的功能是:求出s所指字符串中最后一次出现的t 所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串; 若未找到,则函数值为NULL。 
  例如,当字符串中的内容为:"abcdabfabcdx",t中的内容为:"ab"时, 
  输出结果应是:abcdx。 当字符串中的内容为:"abcdabfabcdx",t中的内容为:"abd"时, 则程序输出未找到信息:not be found!。 
  请改正程序中的错误,使它能得出正确的结果。 
  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 
  给定源程序: 
  #include <stdio.h> 
  #include <string.h> 
  char * fun (char *s, char *t ) 
  { 
  char *p , *r, *a; 
  a = Null; 
  while ( *s ) 
  { p = s; r = t; 
  while ( *r ) 
  if ( r == p ) 
  { r++; p++; } 
  else break; 
  if ( *r == '\0' ) a = s; 
  s++; 
  } 
  return a ; 
  } 
  main() 
  { 
  char s[100], t[100], *p; 
  printf("\nPlease enter string S :"); scanf("%s", s ); 
  printf("\nPlease enter substring t :"); scanf("%s", t ); 
  p = fun( s, t ); 
  if ( p ) printf("\nThe result is : %s\n", p); 
  else printf("\nNot found !\n" ); 
  } 
  解题思路: 
  第一处:指向空指针错误,Null应NULL。 
  第二处:比较指针位置的值是否相等,所以应改为:if(*r==*p)。

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