频道栏目
首页 > 考试 > 等级考试 > 三级 > 网络技术 > 正文

2013计算机等级考试三级网络技术上机模拟题及答案解析5

2013-03-30 08:17:12           
收藏   我要投稿
下列程序的功能是:把s字符串中的所有字母改成该字母的下一个字母,字母z改成字母a。要求大写字母仍为大写字母,小写字母仍为小写字母,其他字符不做改变。请编写函数chg(char *s)实现程序要求,最后调用函数readwriteDAT( ),读取in60.dat中的字符串,并把结果输出到文件out60.dat中。
  例如:s字符串中原有的内容为Mn 123Zxy,则调用该函数后,结果为No 123Ayz。
  注意:部分源程序已给出。
  请勿改动主函数main( )和输入输出函数readwriteDAT( )的内容。
  试题程序:
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
  #include <ctype.h>
  #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'。如果不是,再接着判断是否是字母,如果是,就改成该字母的下一个字母,否则不作改变。
上一篇:2013计算机等级考试三级网络技术上机模拟题及答案解析6
下一篇:2013计算机等级考试三级网络技术上机模拟题及答案解析4
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站