给定程序中,函数fun的功能是:把形参S所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参S所指的字符串为:abodefgh,执行结果为:ahcb

admin2015-08-23  29

问题 给定程序中,函数fun的功能是:把形参S所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参S所指的字符串为:abodefgh,执行结果为:ahcbedgf。
    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
    注意:源程序存放在考生文件夹下的BLANK1.C中。
    不得增行或删行,也不得更改程序的结构!
#inciude
void fun(char*s)
{  int i,19,k;char c;
  n=0;
  for(2=0;  s!=’\0’;  i++)  n++;
/************found************/
  if(r1%2==0)k=n一  _____1_____ ;
  else k=n一2;
/************found************/
  c= _____2_____;
  for(i=k一2;i>=1;i=i一2)S[i+2]=s
/************found************/
  s[1]= _____3_____;
}
main()
{  char s[80]="abcdefgh";
  printf("\nThe  original  string
is:%s\n",s);
  fun(s);
  printf("\nThe result is:%s\n",s);
}

选项

答案(1)1 (2)s[k] (3)c

解析 函数fun的功能是移动下标为奇数位置的字符。
第一空:“for(i=0;s!=’\0’;i++)  n++;”n记录了数组s的长度,“if(n%2==0)”如果长度n是偶数,那么最右边被移出的字符的下标是在n-1,如果n是奇数,那么最右边被移出的字符的下标是n-2,因此第一空处应为“1”。
第二空:题目要求最右边被移出字符串的字符绕回放到第一个奇数位置,因此最右边被移出的字符是s[k],在s[k]被替换之前必须先把s[k]保存在其他变量中,故第二空处应为“s[k]”,将s[k]保存在c中。
第三空:此处是把最右边被移出字符串的字符绕回放到第一个奇数位置,最右边被移出字符保存在c,第一奇数位置是s[1],故第三处应为“c”。
转载请注明原文地址:https://kaotiyun.com/show/PHDp777K
0

最新回复(0)