请问为什么把函数部分的int改成void就可以了?感觉好神奇

img


我一开始的做法是:

img


结果:

img

后来在尝试过程中改成了:

#include <bits/stdc++.h>
using namespace std;
void max(char a[],int len)
{
    int i=0,j=0,p,t,c;
    for(i=0;i<len-1;i++)
    {
        p=i;
        for(j=i+1;j<len;j++)
        {
            if(a[j]<a[p]) p=j;
        }
        if(p!=i)
        {
            t=a[p];
            a[p]=a[i];
            a[i]=t;
        }
    }
}
int main()
{
    char string[81];
    int len,c;
    cin.getline(string,81);
    len=strlen(string); 
    max(string,len);
    cout<<string[len-1]<<endl;
    return 0;
}

结果:

img


为什么会这样?

因为你把char的值给了int,然后输入出int,则会输出这个字符的ASCII编码值。
因此会输出一个奇怪的数。

你将函数改为void后,不会返回任何值。但你将字符串已经按照小到大排列,因此输出最后一个字符就是最大值。
并且字符串是char型,不会输出ASCII的编码值,而是输出字符。