【问题标题】:sorting odd number in a new array, output problem在新数组中排序奇数,输出问题
【发布时间】:2022-01-05 20:47:28
【问题描述】:

将用户输入的数组 (arr) 中的奇数存储在新数组 (arr1) 中,然后打印。 先运行并查看输出

#include <stdio.h>
int main()
{
    int i;
    int arr1[100];
    int arr[5] = {2, 3, 8, 9, 11};
    for (i = 0; i <= 5; i++)
    {
        for (int x = 1; x < 12; x++)
        {
            if (x == arr[i])
            {
                arr1[i] = arr[i];
            }
            x += 1;
        }
    }
    for (i = 0; i < 5; i++)
    {
        printf("%d\n", arr1[i]);
    }

    return 0;
}

【问题讨论】:

  • 欢迎来到 Stack Overflow。 “先运行并查看输出”。这不是它在这里的工作方式。您有责任清楚地解释具体错误或不正确行为并提出具体问题。请收下tour 并阅读How to Ask
  • for (i = 0; i &lt;= 5; i++) 差一个。
  • @Rudra Patole 提供的代码没有意义。
  • 建议大家自己学习做基本的调试。在调试器中运行您的程序和/或添加调试打印语句以跟踪程序执行。例如,每次点击arr1[i] = arr[i]; 行时检查iarr[i] 的值,看看它是否是您需要的值。 How to debug small programs.
  • 您将x 增加了两次,写for (int x = 1; x &lt; 12; x += 2) 会更惯用,但使用if(arr[i] % 2) 更容易测试奇数。但是,复制是有缺陷的,因为您正在跳过 arr1[] 的元素(它们仍未初始化)。 arr1[] 需要另一个索引变量。

标签: arrays c loops for-loop


【解决方案1】:

您可以使用模运算符 % 检查它是否可被 2 整除。如果它不能被 2 整除,则应该得到1。 这应该有效:

#include <stdio.h>
int main()
{
    int i;
    int arr1[100];
    int arr[5] = {2, 3, 8, 9, 11};
    int j=0;
    for (int i=0; i < 5; i++) {
        if (arr[i]%2 == 1) { //is odd
            arr1[j++] = arr[i];
        }

    }
    
    return 0;
}

【讨论】:

    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多