LikeHash 2022-11-07 21:30 采纳率: 100%
浏览 35
已结题

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

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;

}

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-11-08 08:01
    关注

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

    
    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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 已采纳回答 11月8日
  • 修改了问题 11月8日
  • 创建了问题 11月7日

悬赏问题

  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令