问答题
给定程序MODI1.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a~u,则将其转换为其后的第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(iaupper(c1))
{ c2=fun(c1);
printf("/n/nThe letter"%c" change to"%c"/n", c1, c2);
}
else printf("/nEnter (A-Z)!/n");
}
【正确答案】
【答案解析】(1)c=c+32; (2)c=c+5;
答案考生文件夹 [解析] 函数的功能是将某些大写字母转换为对应小写字母之后的第五个字母。
(1)第一个标识下“C=C+32;”中变量C没有定义,编译时会提示出错。根据题意,这行语句的作用是将大写字母转换为小写字母,C语句中大写字母转换为对应的小写字母是对原有ASCII码加32,小写转换为大写是减32,所以应将“C=C+32; ”改为“c=c+32; ”。
(2)第二个标识下是将小写字母转换为其后的第五个字母,字母在a~u之间只加上5就可以了,原题中减5则是将字母转换到该字母之前的第五个字母,所以第二个标识下“c=c-5; ”改为“c=c+5; ”。
[考点] if语句及其构成的选择、数据类型和常量、变量。