下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。 请修改函数fun()中的错误,得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程

admin2013-03-25  9

问题 下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。
    请修改函数fun()中的错误,得出正确的结果。
    注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
    试题程序:
#include
#include
#includevoid fun(char * str)
{  
    //****found****
    while(*str!=’@’)
    {
    if(* str>=’A’&&*str<=’Z’||*str<=’a’
    && * str<=’z’)
    {
    if( * str==’Z’)
    * str=’A’;
    else if(* str==’z’)
    *str=’a’;
    else
    * str+=1;
    }
    //****found****
    (*str)++;
  }
}
void main()
{
  char str[80];
  printf("\n Enter a string with length<80.:\n\n
  gets(str);printf("\n The string:\n\n");
  puts(str);
  fun(str);
  printf("\n\n The Cords:\n\n");
  puts(str);
}

选项

答案(1)错误:(*str++); 正确:str++ (2)错误:while1*str!=’@’ 正确:while(*str)或while(*str!=’\0’)或while(*str!=0)

解析 首先判断字母是否为小写字母,如果是小写字母则进行转换。
    第一个标识下“while(*str!=’@’)”语句原意是str不指向字符串尾就进入下面的循环,所以对于指针判断不为结束符的语句应该是循环里为真,所以应为“while(*str)”或“while(*str!=’\0’)”或“while(*str!=0)”。
    第二个标识下“(*str)++;”是对字符内容加1,而原题是对字符位置加1,所以将其改为“str++;”。
转载请注明原文地址:https://jikaoti.com/ti/SakiFFFM
0

相关试题推荐
最新回复(0)