【发布时间】:2017-02-19 10:57:51
【问题描述】:
大家好,我在各种情况下都难以运行某些代码。我有代码可以找到数组中所有数字中有多少个素数,乘以它需要多长时间,并打印出有多少个素数。这一切都很好,但是我需要运行相同的代码,但使用 char 数组。这就是问题所在。这是代码,带有一个整数数组:
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <stdio.h>
using namespace std;
static const int N = 1000;
int main()
{
int i, a[N];
clock_t start = clock();
for (i = 2; i < N; i++) a[i] = i;
for (i = 2; i < N; i++)
if (a[i])
for (int j = i; j*i < N; j++) a[i*j] = 0;
start = clock() - start;
int primes = 0;
for (i = 2; i < N; i++) {
if (a[i]) {
primes++;
cout << " " << i;
if (primes % 10 == 0)
cout << "\n";
}
}
printf("\nIt took %d clicks (%f seconds) to find all prime numbers.\n", start, ((float)start) / CLOCKS_PER_SEC);
cout << "The number of primes out of " << N << " integers is " << primes << endl;
return 0;
}
当我简单地将数组的“int”替换为“char”,并将“N”设置为 10 或 100 之类的值时,它工作得很好,除了素数的外观。任何更高的东西都没有打印出来。我知道这并不像将“int”更改为“char”那么简单,但我对这个问题感到绝望。没有帮助我需要再次执行此操作,但将数组更改为 bool 类型(这对我来说也没有多大意义。)
任何类型的洞察力或简单的解决方案都会很棒。在此期间,我会继续寻找一些东西。谢谢!
【问题讨论】:
-
无法复制。与 char 数组一起工作正常(尽管有一个明显但无害的错误)。
-
请问您试用时做了什么?您只是将 'int i, a[N]' 替换为 'char i, a[N]' 还是还有更多内容?我很迷茫。
-
a[i]的最大值是 127 还是 255,这取决于char是带符号的还是无符号的。因此,如果您将N设置得高于此值,您将为超过该限制的所有元素分配无效值。 -
不,因为唯一需要改变的是数组的类型,我为什么要把
i变成char?这毫无意义,无论如何。int i; char a[N];。就是这样。 -
好的,感谢所有帮助人员,是的@Sam Varshavchik,这没有任何意义,不知道我为什么要在那棵树上吠叫。现在一切正常。
标签: c++ arrays char int type-conversion