读书人

计算机等考2013年度三级网络技术同步训

发布时间: 2013-05-06 13:36:28 作者: luck

  下列程序的功能是:把s字符串中的所有字母改成该字母的下一个字母,字母z改成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char *s)实现程序要求,最后调用函数readwriteDAT( ),读取in60.dat中的字符串,并把结果输出到文件out60.dat中。

  例如:s字符串中原有的内容为Mn 123Zxy,则调用该函数后,结果为No 123Ayz。

  注意:部分源程序已给出。

  请勿改动主函数main( )和输入输出函数readwriteDAT( )的内容。

  试题程序:

  #include

  #include

  #include

  #include

  #define N 81

  void readwriteDAT();

  void chg(char *s)

  {

  }

  void main()

  {

  char a[N];

  system("CLS");

  printf("Enter a string:");

  gets(a);

  printf("The original string is :");

  puts(a);

  chg(a);

  printf("The string after modified :");

  puts(a);

  readwriteDAT();

  }

  void readwriteDAT()

  {

  int i;

  char a[N];

  FILE *rf,*wf;

  rf=fopen("in60.dat","r");

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

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

  {

  fgets(a,81,rf);

  chg(a);

  fprintf(wf,"%s",a);

  }

  fclose(rf);

  fclose(wf);

  }


  【答案】

  void chg(char *s)

  {

  while(*s) /*若当前字符不是字符串结束符,则循环一直进行*/

  if(*s=='z'||*s=='Z') /*将当前字母是'z'或者'Z'*/

  {

  *s-=25; /*则分别将其改成'a'或'A'*/

  s++; /*取下一个字母*/

  }

  else if(*s>='a'&& *s<='y') /*若是小写字母,则改成该字母的下一个字母*/

  {

  *s+=1;

  s++; /*取下一个字母*/

  }

  else if(*s>='A'&& *s<='Y') /*若是大写字母,则改成该字母的下一个字母*/

  {

  *s+=1;

  s++; /*取下一个字母*/

  }

  else s++; /*取下一个字母*/

  }

  【解析】本题考查用指针访问字符串的方法。

  这里利用一个while循环对从字符串中逐个获取的字符进行判断,如果当前字符是小写字母'z'或'Z', 则相应地改成'a'或者'A'。如果不是,再接着判断是否是字母,如果是,就改成该字母的下一个字母,否则不作改变。

更多关注:

3月份计算机一级考试微机知识预测整理汇总

2013年计算机等级考试一级微机考题预测汇总

计算机二级C语言上机题考前预测汇总

2013年计算机二级C语言考试预测及答案汇总

3月计算机一级MS Office自测题附答案汇总

3月份计算机二级C语言上机练习题及答案汇总

更多精彩请关注读书人网计算机频道!


读书人网 >三级考试

热点推荐