yueyufeng 发表于 2023-11-18 14:57:58

还是没有输出

isdkz 发表于 2023-11-18 14:58:13

问题在于内部循环的条件判断有误,导致排序部分无法正确执行。以下是修改后的代码:

#include <stdio.h>

int main()
{
    int n, i, j, temp;
    int a;
    int sum;
    while (scanf("%d", &n) != EOF && n != 0)
    {
      for (i = 0; i < n; i++)
      {
            scanf("%d", &a[ i]);
      }
      for (i = 0; i < n; i++)
      {
            int num = 0;
            int k = a[ i];
            while (k != 0)
            {
                int digit = k % 10;
                k = k / 10;
                num += digit;
            }
            sum[ i] = num;
      }
      for (i = 0; i < n - 1; i++)
      {
            for (j = 0; j < n - i - 1; j++)// 此处修改为正确的条件判断
            {
                if (sum > sum)
                {
                  temp = a;
                  a = a;
                  a = temp;
                  temp = sum;
                  sum = sum;
                  sum = temp;
                }
            }
      }
      for (i = 0; i < n; i++)
      {
            printf("%d ", a[ i]);// 修改为输出空格分隔的数字
      }
      printf("\n");
    }
    return 0;
}


主要修改包括:
1. 内部循环条件判断改为j < n - i - 1 ,修复了循环条件错误的问题;
2. 输出每个数字后加上空格,方便区分每个排序后的数字。

Mike_python小 发表于 2023-11-18 14:58:52

你的代码中有一些小错误,我已经帮你修改了一下,可以试着运行一下看看:


#include <stdio.h>

int main() {
    int n, i, j, temp;
    int a;
    int sum;
    while (scanf("%d", &n) != EOF && n != 0) {
      for (i = 0; i < n; i++) {
            scanf("%d", &a);
      }
      for (i = 0; i < n; i++) {
            int num = 0;
            int k = a;
            while (k != 0) {
                int j = k % 10;
                k = k / 10;
                num += j;
            }
            sum = num;
      }
      for (i = 0; i < n - 1; i++) {
            for (j = 0; j < n - i - 1; j++) {
                if (sum > sum) {
                  temp = a;
                  a = a;
                  a = temp;
                  temp = sum;
                  sum = sum;
                  sum = temp;
                }
            }
      }
      for (i = 0; i < n; i++) {
            printf("%d ", a);
      }
      printf("\n");
    }
    return 0;
}


现在代码已经修改过了,应该可以按要求输出结果了。
页: [1]
查看完整版本: 还是没有输出