【问题标题】:Why am I getting memory location values after printing prime numbers of a particular range?为什么在打印特定范围的素数后得到内存位置值?
【发布时间】:2017-08-20 14:55:40
【问题描述】:

我正在解决this问题:

Peter 想为他的密码系统生成一些素数。帮助 他!你的任务是生成两个给定的所有素数 数字!

输入

输入以单行中的测试用例数量 t 开头 (t

输出

对于每个测试用例,打印所有质数 p,使得 m

示例

Input:
2
1 10
3 5

Output:
2
3
5
7

3
5

在输出中获得素数后,我正在获得内存位置值。 你能解释一下我如何在得到最终输出后终止。

这是我的代码:

#include <stdio.h>
int main()
{
int t, i, m[10], n[10], j, k, l, isPrime;
// t is test case, m[] and n[] are the lower and upper value of the range of prime numbers
// isPrime is to check the condition True or False.
j = 0;
scanf(" %d \n", &t);

for(i=0; i<t; i++)
{
  scanf("%d%d",&m[i],&n[i]);
}

while(j<=i)
{
  for(k = m[j]; k<= n[j]; k++)
  { isPrime = 0;
    for(l = 2; l<= (k/2); l++){
        if(k%l == 0)
        {
            isPrime = 1;
            break;
        }
    }
    if(isPrime==0 && n[j]!= 1)
        printf(" %d \n", k);
  }
  j++;
}
getch();
return 0;
}

【问题讨论】:

  • 您可以通过从main 返回来终止。什么是“内存位置值”?
  • 我得到随机的 7 位数值,比如 2687615,这样下去。我猜这些值是地址值。
  • 别猜了,这只会让事情变得混乱。显示输入和输出的示例。
  • 当我输入 - 2 (new line)3 7 (new line)4 9 时,我的输出类似于 3 (new line) 5 (new line) 7 (new line) 5 (new line ) 7 (新行) 2686751 (新行) 2686759 (新行) 2686777 , 继续不停。
  • 提示:这些是素数。我假设您之前评论中的 2687615 是刚刚编造的?

标签: c


【解决方案1】:

您正在使用 getch() 它将停止程序,直到您在执行所有程序后立即按下任意键。移除getch(),在关闭IDE后从源文件夹文件中编译并运行.exe。

【讨论】:

  • 我在关闭IDE后删除了getch()并再次编译,但问题仍然存在。
  • 当你打开 .exe 文件时它不能给出输出(如果你正在消除 getch() )
  • 我知道问题出在 for 循环上
  • 当您输入字符 a-zA-Z 时会产生问题。不要放那些。仅输入 0-9 数字您的程序是正确的。如果我们提供正确的输入,它就会终止。
  • 我会牢记这一点,不要使用单个字符作为变量。我尝试再次执行位于我的 workspace/bin/Debug 目录中的 .exe 应用程序,但如果我使用超过 2 个测试用例,则存在问题。我使用 Code::Blocks 作为我的 IDE。
【解决方案2】:

好吧,我执行了代码,没有使用 getch() 并且运行良好!

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 2014-01-20
    • 2019-05-20
    相关资源
    最近更新 更多