填空题 下列给定程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第5个字母;若小写字母为v~z,则使小写字母的值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;形参是字母w,则转换为小写字母b。
请改正函数fun中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<ctype.h>
char fun(char c)
{
if(c>="A"&& c<="Z")
/**********found**********/
c=c-32;
if(c>="a"&& c<="u")
/**********found**********/
c=c-5;
else if(c>="v"&& c<="z")
c=c-21;
return c;
}
main()
{
char c1,c2;
printf("/nEnter a letter(A-Z):");
c1=getchar():
if(isupper(c1))
{
c2=fun(c1);
printf("/n k nThe letter %c change to%c/n",c1,c2);
}
else
{
printf("/nEnter(A-Z)!/n");
}
}
【正确答案】
【答案解析】(1)c=c+32;
(2)c=c+5; [解析] (1)从ASCII码值表中可以看出,小写字母的ASCII码值比对应大写字母的ASCII码值大32,所以大写字母转换成小写字母要加32。
(2)将大写字母转换成对应小写字母之后,再将其转换成其后面的第5个字母,所以要加5。