一、改错题(40分)
以下程序由主函数给出一个英文单词(全是小写字母)字符串,子函数将该单词字符串中的字符逆序排列后,将第一个字母改成对应大写字母,再由主函数输出处理后的字符串。
例如,得出dog,输出God
含有错误的源程序如下:
#include <stdio.h>
#include <string.h>
char invert(char p)
{int i,low,high;
char t;
for(i=0;p[i]!='\0';i++);
low=0;
high=i;
while(low<high)
{t=p[low];
p[low]=p[high];
p[high]=t;
low++;
high--;
}
p[low]=p[low]-('a'-'A');
return p;
}
main()
{char word[20]="dog";
char *inv;
inv=invert(word[20]);
puts(inv);
}
【要求】
1. 将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。
2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预处理命令,但不能增加其它语句,也不能删去整条语句。
#include <stdio.h>
#include <string.h>
char* invert(char *p) //返回值类型丛岩变成char*
{int i,low,high;
char t;
for(i=0;p[i]!='亮告