当前位置: 首页 > 知识库问答 >
问题:

如何计算整数数组元素,比如C中基于字符的strlen()?

阎弘雅
2023-03-14

我想在输入后计算整数数组(大小,如:数组[1000])中的元素数量,而无需在输入时手动计数(使用scanf(),即=传递给scanf的参数数)。虽然int数组没有以空结尾,并且scanf()不能像getchar()get()那样使用,并且没有像strlen()这样的用于int数组的可用函数,是否可以编写一个C程序来提示用户输入任意数量的数字,并且程序将计算它们(传递给scanf()的总参数)并使用数组或指针打印最大值?

共有3个答案

爱海
2023-03-14

智能版本:

#include <stdio.h>
int main()

{

    double a[100000],mx=0;

    int i,j,c=0;

    printf("Enter as many numbers as you wish . Press Ctrl+D or any character to stop inputting :\n");
    /*for(i=0;i<100000;i++)
        a[i]=0;*/
    for(i=0;i<100000;i++)
    {
        if((scanf("%lf",&a[i]))==1)
            c++;
        //else break;
    }
    for(j=0;j<c;j++)
    {
        if(a[j]>mx) mx=a[j];
    }
    printf("You have inserted %d values and the maximum is:%g",c,mx);

    return 0;
}
司承业
2023-03-14

strlen()迭代字符数组,直到遇到C字符串终止字符(ASCII\0)。所以它是计数元素。如果您想为int数组这样做,我想您也可以为数组保留一个“终止符”值,为它腾出空间(在数组中为终止符再分配一个int)并实现您自己的int_array_len()类似于strlen。然而,在您的情况下,在输入元素时计算元素似乎是一种更好的方法。

景鸿晖
2023-03-14

如果没有终止值,则必须在输入时对其进行计数。可以通过定义一个struct来保存数组。程序不知道要输入多少个整数,当数组已满时,这段代码会分配更多内存,跟踪数组大小和使用的元素。

#include <stdio.h>
#include <stdlib.h>

#define ARRAY_STEP 10       // increment in array size

typedef struct {
    int maxlen;             // capacity of array
    int length;             // elements used
    int *array;             // the array pointer
} istruct;

int main(void) {
    istruct intarr = {0};   // empty array
    int i;
    printf ("Enter some integers:\n");
    while (scanf("%d", &i) == 1) {
        if (intarr.length >= intarr.maxlen) {
            intarr.maxlen += ARRAY_STEP;        // increase array size
            intarr.array = realloc(intarr.array, intarr.maxlen * sizeof(int));
            if (intarr.array == NULL) {
                printf("Memory allocation error\n");
                exit (1);
            }
        }
        intarr.array[intarr.length++] = i;
    }

    printf ("You entered:\n");
    for (i=0; i<intarr.length; i++)
        printf ("%-10d", intarr.array[i]);
    printf ("\n");
    if (intarr.array)
        free(intarr.array);
    return 0;
}
 类似资料:
  • 问题内容: 我有一个整数数组,我想计算重复出现的元素。首先,我读取数组的大小,并使用从控制台读取的数字对其进行初始化。在数组中,我存储了重复的元素。该数组存储元素连续出现的次数。然后,我尝试搜索重复序列并以特定格式打印它们。但是,它不起作用。 我希望输出看起来像这样: 例如: 如何找到重复的元素及其计数?如何如上所示打印它们? 问题答案: 字典(Java中的HashMap)可以轻松解决此类问题。

  • 问题内容: 说我有阵列 数组的长度为20,但计数为0。如何获取计数? 问题答案: “计数”是什么意思?具有非零值的元素数量?您只需要数一下。 有 没有区别 数组和一个已之间 明确地 设置与零个值。例如,这些数组是无法区分的: Java中的数组始终具有固定大小-可通过字段访问。没有“当前使用的阵列数量”的概念。

  • 问题内容: 如果我有一个数组,我想检查数组中有多少个。在JavaScript中不使用循环循环的最优雅的方法是什么? 问题答案: 很简单:

  • 本文向大家介绍计算C ++中数组中的素数,包括了计算C ++中数组中的素数的使用技巧和注意事项,需要的朋友参考一下 给我们一个数字数组。目的是找到该数组中素数的计数。 质数是可以被1和数字本身整除的数。它只有两个因素。我们将检查从第一个元素到最后一个元素是否为质数,并增加迄今发现的质数。 要检查数字N是否为质数,请检查[2到N / 2]范围之间的数字是否将N整除。如果是,则它不是质数。否则,它是首

  • 问题内容: 我已经看到了一些这样的示例,但是所有这些似乎都依赖于知道要计算发生次数的元素。我的数组是动态生成的,所以我无法知道要计算哪个元素的出现(我想计算所有元素的出现)。有人可以建议吗? 提前致谢 编辑: 也许我应该更清楚一点,数组将包含多个不同的字符串(例如 在不知道它们是什么的情况下,如何计算foo,bar和foobar的出现? 问题答案: Swift 3和Swift 2: 您可以使用类型

  • 我有一个Java作业,我需要读入一个字符,然后计算该字符在数组中出现的次数。这是我目前所掌握的。