使用C,得到所有不工作的其他数字的总和

使用C,得到所有不工作的其他数字的总和,c,cs50,C,Cs50,我正在尝试做一个简单的程序,如果我输入-保持简单- 进入 5235 在屏幕上打印 长度为4 总数是8 进入 54468 印刷品 长度为5 总数是10 然而,只有长度似乎是有效的,我不知道为什么 我得到了用户输入的数字的总长度,并指定了数字是否为奇数,然后添加偶数,反之亦然,但它似乎不起作用 #include <stdio.h> #include <cs50.h> int main(void) { long long cc_number; long long x;

我正在尝试做一个简单的程序,如果我输入-保持简单-

进入

5235

在屏幕上打印

长度为4
总数是8

进入

54468

印刷品

长度为5
总数是10

然而,只有长度似乎是有效的,我不知道为什么

我得到了用户输入的数字的总长度,并指定了数字是否为奇数,然后添加偶数,反之亦然,但它似乎不起作用

#include <stdio.h>
#include <cs50.h>
int main(void)
{
  long long cc_number;
  long long x;
  long long length;
  int sum, count = 0;

  do
  {
    printf("Please Enter Credit Card Number ");
    cc_number= get_long_long();
    x= cc_number;
  }
  while (x>0);

  while (x != 0)
  {
    x= x/10;
    length++;
  }

  x= cc_number;

  while (x != 0)
  {
    x= x/10;
    int digit= (int) (x % 10);
    count++;
    if ((count % 2 == 0) && (length %2 ==1))
    {
      sum=sum+digit;
    }
    else ((count % 2 == 1) && (length %2 ==0))
    {
      sum=sum+digit;
    }
  }

  printf("the sum is %i", sum);
  printf("the length of the digits is %lli", length);
}
#包括
#包括
内部主(空)
{
长cc_编号;
长x;
长长的;
整数和,计数=0;
做
{
printf(“请输入信用卡号”);
cc_number=get_long_long();
x=cc_编号;
}
而(x>0);
而(x!=0)
{
x=x/10;
长度++;
}
x=cc_编号;
而(x!=0)
{
x=x/10;
整数位数=(整数)(x%10);
计数++;
如果((计数%2==0)和(&(长度%2==1))
{
总和=总和+位数;
}
else((计数%2==1)和&(长度%2==0))
{
总和=总和+位数;
}
}
printf(“总和为%i”,总和);
printf(“数字的长度为%lli”,长度);
}
  • 您需要将
    sum
    length
    初始化为
    0
    。否则,它们将保留垃圾值

  • 接受输入的循环不正确。你需要

    do {
    
    ...} while (x <= 0);
    
    否则,在第i次迭代中,digit将获得i+1位,而不是第i位

  • else(…)
    是无效语法。如果(…),则需要


  • 完整列表:

    #include <stdio.h>
    int main(void)
    {
      long long cc_number;
      long long x;
      long long length = 0;
      int sum = 0, count = 0;
    
      cc_number = (x = 54560);
    
    
      while (x != 0)
      {
        x= x/10;
        length++;
      }
    
      x= cc_number;
    
      while (x != 0)
      {
        x= x/10;
        int digit= (int) (x % 10);
        count++;
        if ((count % 2 == 0) && (length %2 ==1))
        {
          sum=sum+digit;
        }
        else if((count % 2 == 1) && (length %2 ==0))
        {
          sum=sum+digit;
        }
      }
    
      printf("The sum is %i\n", sum);
      printf("The length of the digits is %lli\n", length);
    }
    

    (我对print语句做了一些修改。)

    它到底是如何工作的?1)
    sum
    未初始化。2)
    x=x/10;整数位数=(整数)(x%10)-->可能
    整数位数=x%10;x=x/103)
    其他((计数%2==1)和(长度%2==0))
    -->
    其他如果((计数%2==1)和(长度%2==0))
    4)
    而(x>0)-->
    while(x@Sundaze123添加了稍微修改过的代码版本。请复制并检查。
    
    #include <stdio.h>
    int main(void)
    {
      long long cc_number;
      long long x;
      long long length = 0;
      int sum = 0, count = 0;
    
      cc_number = (x = 54560);
    
    
      while (x != 0)
      {
        x= x/10;
        length++;
      }
    
      x= cc_number;
    
      while (x != 0)
      {
        x= x/10;
        int digit= (int) (x % 10);
        count++;
        if ((count % 2 == 0) && (length %2 ==1))
        {
          sum=sum+digit;
        }
        else if((count % 2 == 1) && (length %2 ==0))
        {
          sum=sum+digit;
        }
      }
    
      printf("The sum is %i\n", sum);
      printf("The length of the digits is %lli\n", length);
    }
    
    $ ./a.out   
    The sum is 10
    The length of the digits is 5