Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在运行某些计算时写入txt文件_C_Windows_Loops_Collatz - Fatal编程技术网

C 在运行某些计算时写入txt文件

C 在运行某些计算时写入txt文件,c,windows,loops,collatz,C,Windows,Loops,Collatz,我试图创建一个程序,在一个txt文件输出的结果。然而,当我尝试使用大数字(如1000000)时,它不能正常工作,并且总是在113383处停止 代码如下: int n, count, number, mayor, masvueltas, top; char c = '@'; freopen("output MILLION.txt", "w", stdout); count = 0; number = 1; mayor = 0; masvueltas = 0; while(number != 100

我试图创建一个程序,在一个txt文件输出的结果。然而,当我尝试使用大数字(如1000000)时,它不能正常工作,并且总是在113383处停止

代码如下:

int n, count, number, mayor, masvueltas, top;
char c = '@';
freopen("output MILLION.txt", "w", stdout);
count = 0;
number = 1;
mayor = 0;
masvueltas = 0;
while(number != 1000000) {
    printf("\n%d did ", number);//this will say that number did COUNT loops
    n = number;
    while (n != 1) {
        if (n % 2 == 0) {
            n = n / 2;
            count++;
        }
        else {
            n = 3 * n + 1;
            count++;
        }
    }
    printf(" %d saltos.\n", count);//Here continoues the sentence
    char graf[count];//creates an array to print the @ character COUNT times
    for (int i = 0; i < count; i++) {
        graf[i] = c;
        printf("%c", graf[i]);
    }
    if(masvueltas < count) {
        masvueltas = count;
        mayor = number;
    }
    number++;
    count = 0;
}
int n,count,number,mayor,masvueltas,top;
字符c='@';
freopen(“output MILLION.txt”,“w”,stdout);
计数=0;
数字=1;
市长=0;
masvueltas=0;
而(数量!=1000000){
printf(“\n%d,did”,number);//这将说明number没有对循环计数
n=数量;
而(n!=1){
如果(n%2==0){
n=n/2;
计数++;
}
否则{
n=3*n+1;
计数++;
}
}
printf(“%d saltos.\n”,count);//这里继续这个句子
char-graf[count];//创建一个数组来打印@character count次
for(int i=0;i

另外,如果您知道如何在txt文件中打印ASCII字符219,block,那就太好了。这并不重要,因为我有一个更干净的txt文件。

这是因为对于
number
=113383,在119次计数后,计算值达到827370449,下一次计数的最大值为2482111348,大于,这使得
n
的值变为负值,-1812855948,循环没有达到1。您应该使用
long n
来获得所需的结果。我还建议您使用
for
循环,而不是
while
循环。

graf
的目的是什么?在符号处打印
count
不需要数组,只需
putchar('@')
printf(“@”)
循环即可。您是否尝试过为候选者使用更大的数据类型,例如
long-long-int
?从大约1000000开始,它不必走路径
n=(3*n)+1连续多次打破存储范围。哦,是的。你说得对,风向标。与长整型工程。有没有一种方法可以修改它的大小,或者默认情况下它是有限的?。。。事实上,
1001063
确实在149次迭代后打破了
int
限制。您可以通过与安全的最大值进行比较来测试它是否会在执行
n*3+1
之前打破数据类型。例如,使用
int
时,最大安全值为
(int\u MAX-1)/3