使用 C,得到所有其他数字的总和根本不起作用
Using C, get sum of every other digit not working at all
我正在尝试做一个简单的程序,如果我输入 - 为了简单起见 -
进入
5235
在屏幕上打印出来
length is 4
sum is 8
进入
54468
打印
length is 5
sum is 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);
}
您需要将sum
和length
初始化为0
。否则,它们会保留垃圾值
你接受输入的循环不正确。你需要
do {
...} while (x <= 0);
否则你会无限循环。
您需要交换这两行,以便它们成为:
int digit = (int) (x % 10);
x = x/10;
否则,在第ith次迭代中,digit会得到第i+1th位,而不是第ith位.
else (...)
是无效语法。你需要 else if (...)
.
完整列表:
#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
(我稍微修改了打印语句。)
我正在尝试做一个简单的程序,如果我输入 - 为了简单起见 -
进入
5235
在屏幕上打印出来
length is 4
sum is 8
进入
54468
打印
length is 5
sum is 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);
}
您需要将
sum
和length
初始化为0
。否则,它们会保留垃圾值你接受输入的循环不正确。你需要
do { ...} while (x <= 0);
否则你会无限循环。
您需要交换这两行,以便它们成为:
int digit = (int) (x % 10); x = x/10;
否则,在第ith次迭代中,digit会得到第i+1th位,而不是第ith位.
else (...)
是无效语法。你需要else if (...)
.
完整列表:
#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
(我稍微修改了打印语句。)