C 如何在没有数组的情况下一直比较整数对,直到用户输入0为止?

C 如何在没有数组的情况下一直比较整数对,直到用户输入0为止?,c,input,multiple-conditions,C,Input,Multiple Conditions,这是一个检查共素数对的程序 我试图编写一个程序来接收整数的输入,直到用户输入0为止,这在数组的帮助下很容易解决。我已经用数组完成了,因为一次只有一个值需要读取和检查。 对于阵列,它只是: fori=0;i

这是一个检查共素数对的程序

我试图编写一个程序来接收整数的输入,直到用户输入0为止,这在数组的帮助下很容易解决。我已经用数组完成了,因为一次只有一个值需要读取和检查。 对于阵列,它只是:

fori=0;i 然后比较v[i]和v[i+1]

我尝试在没有数组的情况下应用这个精确的检查算法, 读取两个值并进行比较,不知何故,循环只在我多次输入0时结束,有时两次,有时三次

#include <stdio.h>


int gcd1(int a, int b) //function containing Euclid's algorithm 
{
    while (b != 0)
    {
        int temp = a%b;

        a = b;
        b = temp;
    }


    return a;   
}


int main(int argc, char * argv[])
{

    int num1, num2; /* both of these vars would otherwise have a non-zero 
    value if I was using Try Nr.1 written in bold below was applied */

    int cate = 0, flag = 1;
    while(1)
    {
        scanf("%d %d", &num1, &num2);

        if(num1 == 0 && num2 == 0)
        {
        break;
        }

        if(gcd1(num1, num2) == 1) //check if pair is co-prime 
        {
            cate++;
        }

    }
        printf("%d\n", cate);


    return 0;
}
二,-

试了一会儿0更改ifnum1==0 | | num2==0,将运算符更改为&&但它仍然是相同的,或者对我来说没有意义

我需要程序在任何输入0处停止,例如:

25 27 12 24 11 13 0 
程序应该停在那里,告诉我有多少对是同素数,但它只在我再输入两次0时停止

我需要从程序中得到的是在任何输入0处停止

scanf%d%d、&num1、&num2;正在阻止,直到输入2个数字

如果要在第一个数字为0时停止,而不必读取第二个数字,则必须进行2次扫描


问题是,在你测试了15对63之后,你把它们都扔掉了,所以63对43没有机会被测试。与其总是读两个数字,不如只读一个,然后也只扔掉一个,按照

    read a
    while ()
        read b
        gcd(a, b), etc
        a = b

从检查什么开始。如果num1==0 | | num2==0,则中断;在数组的帮助下很容易解决这个问题数组在哪里?你的意思是说不需要阵列的帮助就可以轻松解决这个问题吗?如果是这样的话,这是绝对正确的。因为你描述了一个I/O问题,使用一个数组和两个独立的标量变量作为I/O目标与此无关。我的意思是我解决了同样的问题,但使用了一个数组,这几乎没有这么难。这在某种程度上起到了作用,但是显然是不可靠的,因为它不能与问题提供的测试输入一起工作。@RamiRaghfan 15 63不是共同引物,也不是43和129,也不是55和15,为什么期望3?因为gcd15,63=1,gcd129,55=1,和gcd15,4=1。这个算法应该将每个数字与其旁边的数字进行比较。@RamiRaghfan gcd15,63是3!抱歉,我的意思是gcd63,43等于1,而不是在我上面的评论中写gcd15,63。但是这样,如果我使用数组,它将根据所有其他输入而不是arr[i],arr[i+1]测试第一个输入。这就是我想要的。每个数字都有它的邻居。@RamiRaghfan No。注意a=b赋值。现在第二个输入扮演第一个输入的角色,等等。
scanf("%d", &num1);

if(num1 == 0)
  break;

scanf("%d", &num2);

if(num2 == 0)
  break;
    read a
    while ()
        read b
        gcd(a, b), etc
        a = b