代码错误,求正常运行截图及错误点

img

img

img

img


就是图片上的问题,主要看加的函数,主函数没问题最后将改好成功运行的截图发过来
#include <stdio.h>

// 对char数组进行排序
void charSort(char *charList, int charAmount)
{ int a[charAmount];
char b[charAmount];
for(int i=0;i<charAmount;i++){
for(int m=0;m<charAmount;m++){
if(charList[i]>charList[m])a[i]++;
if(charList[i]==charList[m]&&i>m)a[i]++;
}
}
for(int i=0;i<charAmount;i++)
{b[a[i]]=charList[i];
}
for(int i=0;i<charAmount;i++){
charList[i]=b[i];
}

}
// 对int数组进行排序
void numberSort(int *numberList, int numberAmount)
{

int a[numberAmount];
char b[numberAmount];
for(int i=0;i<numberAmount;i++){
    for(int m=0;m<numberAmount;m++){
        if(numberList[i]>numberList[m])a[i]++;
        if(numberList[i]==numberList[m]&&i>m)a[i]++;
    }
}
for(int i=0;i<numberAmount;i++)
{b[a[i]]=numberList[i];
}
for(int i=0;i<numberAmount;i++){
numberList[i]=b[i];
}
}

// 根据记录的位置将对应的字母装入数组str
void loadChar(char *str, char *charList, int *charLoc, int charAmount)
{
for(int i=0;i<charAmount;i++){
str[charLoc[i]]=charList[i];
}
}
// 根据记录的位置将对应的数字装入数组str
void loadNumber(char *str, int *numberList, int *numberLoc, int numberAmount)
{
for(int i=0;i<numberAmount;i++){
str[numberLoc[i]]=numberList[i];
}
}
int main()
{
// 字符串长度,字符串中字母的数量,数字的数量
int amount, charAmount = 0, numberAmount = 0;
char str[1001];
// 记录str数组中字母的下标和数字的下标
int charLoc[1001], numberLoc[1001];
// char数组中字母组成的数组
char charList[1001];
// str数组中数字组成的数组
int numberList[1001];

scanf("%d %s", &amount, str);

// 遍历str数组
for (int i = 0; i < amount; i++)
{
    char ch = str[i];
    // 对每个位置的字符进行分类和统计
    if (ch >= 'A' && ch <= 'Z')
    {
        // 记录所在下标
        charLoc[charAmount] = i;
        // 记录值
        charList[charAmount++] = ch;
    }
    else if (ch >= '0' && ch <= '9')
    {
        //记录所在下标
        numberLoc[numberAmount] = i;
        // 记录值
        numberList[numberAmount++] = ch - '0';
    }
}
// 调用对应的函数
charSort(charList, charAmount);
numberSort(numberList, numberAmount);
loadChar(str, charList, charLoc, charAmount);
loadNumber(str, numberList, numberLoc, numberAmount);

printf("%s", str);
return 0;

}

不能将源代码发出来么,还要一行一行敲啊


void charSort(char *charList, int charAmount)
{ 
    int i,j;
    char c;
    for(i=0;i<charAmount-1;i++)
        for(j=0;j<charAmount-1-i;j++)
        {
            if(charList[j] > charList[j+1])
            {
                c = charList[j];
                charList[j] = charList[j+1];
                charList[j+1] = c;
            }
        }
}
// 对int数组进行排序
void numberSort(int *numberList, int numberAmount)
{
    int i,j,t;
    for(i=0;i<numberAmount-1;i++)
        for(j=0;j<numberAmount-1-i;j++)
        {
            if(numberList[j] < numberList[j+1])
            {
                t = numberList[j];
                numberList[j] = numberList[j+1];
                numberList[j+1] = t;
            }
        }
}
// 根据记录的位置将对应的字母装入数组str
void loadChar(char *str, char *charList, int *charLoc, int charAmount)
{
    for(int i=0;i<charAmount;i++){
        str[charLoc[i]]=charList[i];
    }
}
// 根据记录的位置将对应的数字装入数组str
void loadNumber(char *str, int *numberList, int *numberLoc, int numberAmount)
{
    for(int i=0;i<numberAmount;i++){
        str[numberLoc[i]]=numberList[i] + '0';
    }
}
int main()
{
    // 字符串长度,字符串中字母的数量,数字的数量
    int amount, charAmount = 0, numberAmount = 0;
    char str[1001];
    // 记录str数组中字母的下标和数字的下标
    int charLoc[1001], numberLoc[1001];
    // char数组中字母组成的数组
    char charList[1001];
    // str数组中数字组成的数组
    int numberList[1001];

    scanf("%d %s", &amount, str);
 
    // 遍历str数组
    for (int i = 0; i < amount; i++)
    {
        char ch = str[i];
        // 对每个位置的字符进行分类和统计
        if (ch >= 'A' && ch <= 'Z')
        {
            // 记录所在下标
            charLoc[charAmount] = i;
            // 记录值
            charList[charAmount++] = ch;
        }
        else if (ch >= '0' && ch <= '9')
        {
            //记录所在下标
            numberLoc[numberAmount] = i;
            // 记录值
            numberList[numberAmount++] = ch - '0';
        }
    }
    // 调用对应的函数
    charSort(charList, charAmount);
    numberSort(numberList, numberAmount);
    loadChar(str, charList, charLoc, charAmount);
    loadNumber(str, numberList, numberLoc, numberAmount);
 
    printf("%s", str);

    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632