我想在输入后计算整数数组(大小,如:数组[1000])中的元素数量,而无需在输入时手动计数(使用scanf()
,即=传递给scanf的参数数)。虽然int数组没有以空结尾,并且scanf()
不能像getchar()
或get()
那样使用,并且没有像strlen()
这样的用于int数组的可用函数,是否可以编写一个C程序来提示用户输入任意数量的数字,并且程序将计算它们(传递给scanf()的总参数)并使用数组或指针打印最大值?
智能版本:
#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;
}
strlen()
迭代字符数组,直到遇到C字符串终止字符(ASCII\0
)。所以它是计数
元素。如果您想为int
数组这样做,我想您也可以为数组保留一个“终止符”值,为它腾出空间(在数组中为终止符再分配一个int)并实现您自己的int_array_len()
类似于strlen
。然而,在您的情况下,在输入元素时计算元素似乎是一种更好的方法。
如果没有终止值,则必须在输入时对其进行计数。可以通过定义一个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作业,我需要读入一个字符,然后计算该字符在数组中出现的次数。这是我目前所掌握的。