我正在尝试做一个简单的程序,如果我输入 - 保持简单 -
输入
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);
}
答案 0 :(得分:0)
您需要将sum
和length
初始化为0
。否则,他们会保留垃圾值
您接受输入的循环不正确。你需要
do {
...} while (x <= 0);
否则你无限循环。
您需要将这两行交换成:
int digit = (int) (x % 10);
x = x/10;
否则,在i th 迭代中,digit将获得i + 1 th 数字,而不是i th 数字。
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
(我稍微修改了一下打印语句。)