【问题标题】:Not Able To Add To Array In "C"无法在“C”中添加到数组
【发布时间】:2021-11-29 21:06:18
【问题描述】:

我有一个程序旨在计算特定数字的素数,然后我必须将它放入一个数组中以便对这些数字进行一些数学运算;但是,我遇到了一个问题,我无法将收集到的素数放入数组中。

当前代码

#include <stdio.h>
#include "pairs.h"
#define SIZE 1000

int main(){
    int n, m, count, i=0, res = 0;
    char prime[SIZE];

    scanf("%d %d", &n, &m);


    // while(count >= 1){
    //     // count = getchar();
    //     // prime[i++] = count;
    for(count = n; count >= 2; count--){
        if(primed(count) == 0){
            prime[i++] = count;
        }

    }
    printf("%s",prime);
    return 0;

}

int primed(int num){
    int primes;
    for(primes = 2; primes<=num/2; primes++){
        if (num % primes != 0){
            continue;
        }
        else{
            return 1;
        }
    }
    return 0;
}

我希望将 for 循环中收集的数字添加到数组中

【问题讨论】:

  • 无法将收集到的素数放入数组中”。这到底是什么意思? primed 是什么,因为代码中没有显示。但对于初学者来说,这是不正确的:printf("%s",prime);prime 不是字符串,不能用%s 打印。
  • count = getchar(); 你为什么打电话给getchar?你知道那是做什么的吗?与putchar 相同。
  • 那么%s 怎么样?这显然是错误的。您不应该对字符串甚至字符进行操作。将数组保留为int 元素,并编写一个函数循环遍历数组,分别打印每个 int 值。
  • 如果它显得不礼貌,我深表歉意。但是 cmets 的空间有限。我并没有试图粗鲁,而是直截了当地强调剩余的错误和要修复的事情。我的观点是 %s 是一个 ascii 字符串。但是您的数组不是字符串。所以如果你用它来检查你的结果,它可能不会正确。所以你需要先解决这个问题。
  • 但是您是否将%s 更改为%d?如果我做出改变,它对我有用。见HERE

标签: arrays c for-loop printf scanf


【解决方案1】:

好吧,你的代码有效,问题是你没有很好地打印数组,试试这个代码来打印你想要放入的元素类型相同的数组,所以int prime[SIZE]

int j;
for(j = 0; j < i; j++)
    printf("%d ", prime[j]);
printf("\n");

请注意,当您从最后一个元素开始计算时,数字将按相反的顺序排列,因此如果您输入 10,您将得到:

7 5 3 2 

您用于打印数组的 %s 用于打印字符串(以字符 '\0' 结尾的字符数组)。如果要打印所有其他类型的数组,则必须使用循环并打印每个元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2013-05-03
    • 2020-03-17
    • 1970-01-01
    相关资源
    最近更新 更多