yueyufeng 发表于 2023-11-19 10:21:43

不对

isdkz 发表于 2023-11-19 10:21:53

问题出在未初始化数组a,导致输出不正确。在C语言中,未初始化的数组元素的值是未定义的,因此需要初始化数组a。以下是修改后的代码:

#include <stdio.h>
int main()
{
    int n, i, count = 0, j;
    int a = {0}; // 初始化数组a为0
    scanf("%d", &n);
    int k = n;
    while (n != 0)
    {
      n = n / 10;
      count++;
    }
    n = k;
    for (i = count - 1; i >= 0; i--)
    {
      j = n % 10;
      a[ i] = j;
      n = n / 10;
    }
    printf("%d\n", count);
    for (i = 0; i < count; i++)
    {
      printf("%d ", a[ i]);
    }
    printf("\n");
    for (i = count - 1; i >= 0; i--)
    {
      printf("%d ", a[ i]);
    }
    printf("\n");
    return 0;
}


这样就可以正确输出输入正整数的位数、每一位数字以及按逆序输出各位数字了。

Mike_python小 发表于 2023-11-19 10:22:24


#include <stdio.h>

int main() {
    int n, i, count = 0, j;
    int a;
    scanf("%d", &n);
    int k = n;
    while (n != 0) {
      n = n / 10;
      count++;
    }
    n = k;
    for (i = count - 1; i >= 0; i--) {
      j = n % 10;
      a = j;
      n = n / 10;
    }
    printf("%d\n", count);
    for (i = 0; i < count; i++) {
      printf("%d ", a);
    }
    printf("\n");
    for (i = count - 1; i >= 0; i--) {
      printf("%d ", a);
    }
    printf("\n");
    return 0;
}
页: [1]
查看完整版本: 不对