给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:det35adh3kjsdf7。执行结果为: def3*5*adh3*kjsdt7*。 请在程序的下划线处填入正确的内容并把下划

admin2013-03-29  15

问题 给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为:det35adh3kjsdf7。执行结果为:
    def3*5*adh3*kjsdt7*。
    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
    注意:源程序存放在考生文件夹下的BI.ANK1.C中。
    不得增行或删行,也不得更改程序的结构!
#include
void fun(char*s)
{  int i,j,n;
  for(i=0;s!=’\0’; i++)
/******************found*******************/
    if(s>=’0’【1】s<=’9’)
    {  n=0;
/******************found*******************/
    while(8[i+1+n]!= 【2】)n++;
    for(j=i+n+1;j>i;j--)
/******************found*******************/
    s[j+1]=【3】;
    s[j+1]=’*’;
    i=i+1;
    }
}
main()
{  char s[80]="ba3a54cd23a";
  printf("\nThe original string is:
%s\n",s);
  fun(s);
  printf("\nThe result is:%s\n",s);
}

选项

答案(1)&& (2)0或“\0" (3)s[j]

解析 第一空:“if(s>=’0’【1】s<=’9’)"是判断s是否是数字字符,数字字符必须满足s>=’0’和s<=’9’,两者之间是与的关系,故第一空处应填“&&"。
    第二空:显然“while(s[i+1+n]!=[2])n++;"是求s(i+1)之后的字符数量,找到其后的字符数量之后便可以在“for(j=i+n+l;j>i;j--)"循环中移动后面的字符了,故while的条件是没有达到字符串结束位,n++,即第二空处应填“0"或“\0"。
    第三空:“for(j=i+n+1;j>i;j--)"循环是将数字字符后面的字符往后移动一位,从最后一个字符开始往后移动,故s[j+1]=s[j],即第三空处为“s[j]"。
转载请注明原文地址:https://jikaoti.com/ti/OBn0FFFM
0

最新回复(0)