问答题 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入“abc4Efg”,则应输出“aBc4Efg”。
注意:部分源程序存在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入要编写的若干语句。
#include<stdio.h>
#include<string.h>
voidfun(char*ss)
{
}
main()
{char tt[81];
void NONO();
printf("/nPlease enter an string within 80characters:/n");gets(tt);
printf("/n/nAffer changing,the stringkn"%s"",tt);
fun(tt);
printf("/nbecomes/n"%s"/n",tt);
NONO();
}
voidNONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/
FILE*fp,*wf;
char tt[81];
int i;
fp=fopen("in.dat","r");
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(fp,"%s",tt);
fun(tt);
fprintf(wf,"%s/n",tt);
}
fclose(fp);
fclose(wf);
}
【正确答案】
【答案解析】int i;
for(i=1;i<strlen(ss);i+=2){
if(ss[i]>="a"&&ss[i]<="z")ss[i]-=32;
} [解析] 该程序功能是将字符串中所有下标为奇数位置上的字母转换为大写。其中,同一英文字母的大写和小写的ASCII码值相差32。因此,要将小写字母转换为大写字母,只要将其对应的ASCII码值减去32即可。
(1)首先取得字符串中下标为奇数的字符。
(2)判断奇数位置的字符是否为小写字母。
(3)若(2)中的判断结果是小写字母,则对其进行转换。
[考点] 数组操作;指针操作。