下列程序的功能是输入一个字符串并将其中从左到右第一个最大的字符与最后一个字符交换。

如:“imaastudent123”,交换后为“imaast3dent12u”。请输入并改正程序中带*的行中的错误,使它能够正确的输出结果。
#include <stdio.h>
void main()
{ char s[80],max; *int i,k;
* getchar(s); *scanf(“c”,&s);
max=s[0];
k=0;
* for(i=0;s[i]!=’\n’;i++) *for(i=1;s[i]!=’\0’;i++)
* if(s[i]> s[0]) *if(s[i]> max)
max=s[i],k=i;
if(k!=i-1)
* s[k]= s[i-1], s[k]=max; *s[k]= s[i], s[k]=max;
puts(s);
}
想请问一下高手,该怎样修改,请把正确的答案重新写出来!

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char * argv[])
{
char s[80],max;
int i, index, length;
printf("请输入英文字符串:");
scanf("%s", s); // 获取字符串
printf("交换前:%s\n", s);
length = strlen(s); // 求字符串的长度
max = s[0]; // 假设最大的字符是第0下标的字符
index = 0; // 假设下标0位置的字符最大
for(i = 1; i < length; i++)
{
if(s[i] > max) // 如果循环到的字符大于之前保存的临时最大字符
{
max = s[i]; // 将临时最大字符保存到max变量中
index = i; // 记录该临时最大字符的下标
}
}
// 按照记录的最大字符位置index进行替换
s[index] = s[length - 1]; // 最后一个字符的下标是字符串长度减1
s[length - 1] = max;
printf("交换后:%s\n", s);
}
温馨提示:答案为网友推荐,仅供参考
相似回答