问答题 给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。 例如,调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGH。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 给定源程序: #include fun( char *p ) { char max,*q; int i=0; max=p[i]; while( p[i]!=0 ) { if( max /TAB { max=p[i]; /**********found**********/ /TAB q=p+i /TAB } i++; } /**********found**********/ wihle( q>p ) { *q=*(q-1); q--; } p[0]=max; } main() { char str[80]; printf("Enter a string: "); gets(str); printf("/nThe original string: "); puts(str); fun(str); printf("/nThe string after moving: "); puts(str); printf("/n/n"); }
【正确答案】
【答案解析】解题思路: 第一处:在语句后缺少分号,所应改为:q=p+i;。 第二处:保留字while写错,所应改为:while(q>p)。