0

我是 C 编程的新手,我遇到了一个简单的问题。这是以下代码...

#include <stdio.h>

/* Write a C Program that accepts two integers from the 
    user and calculate the sum of the two intergers. Go to the editor!
*/

int main() 
{
    
    int firstInteger, secondInteger;
    int sum;
    
    printf("Input two Integers: \n");
    scanf("%d%d", &firstInteger, &secondInteger);
    
    sum = firstInteger + secondInteger;
     printf("%d", sum);

    return 0;
}

在 GCC 编译器上运行我的代码后,我没有得到我期望的结果!

C:\XXXX\XXXX\XXXX\XXXX\XXXX>gcc 2sumOfTwoIntegers.c

C:\XXXX\XXXX\XXXX\XXXX\XXXX>a
Input two Integers:
25, 38
25

为什么我没有得到我输入的整数的总和?

4

4 回答 4

1

您期望用户在两个整数之间使用逗号输入两个整数。用户可以输入两个整数,例如

25,38

或者

25, 38

或者

25 , 38

或者

25 ,38

所有这些输入都是有效的。您需要正确处理输入。

您需要的是跳过两个数字之间的逗号。

还要考虑到两个整数之和可能太大而无法存储在 int 类型的对象中。

这是一个执行该任务的演示程序。

#include <stdio.h>

int main(void) 
{
    int firstInteger, secondInteger;

    printf( "Input two Integers (first , second): " );
    
    if ( scanf( "%d %*c %d", &firstInteger, &secondInteger ) == 2 )
    {
        long long int sum = ( long long int )firstInteger + secondInteger;
        
        printf( "The sum of the integers is %lld\n", sum );
    }
    else
    {
        puts( "Incorect input." );
    }
    
    return 0;
}

它的输出可能看起来像

Input two Integers (first , second): 25 , 38
The sum of the integers is 63

另一种方法是读取变量中的逗号并检查用户是否确实键入了逗号。在这种情况下,程序可能看起来像

#include <stdio.h>

int main(void) 
{
    int firstInteger, secondInteger;
    char c;
    
    printf( "Input two Integers (first , second): " );
    
    if ( scanf( "%d %c %d", &firstInteger, &c, &secondInteger ) == 3 && c == ',' )
    {
        long long int sum = ( long long int )firstInteger + secondInteger;
        
        printf( "The sum of the integers is %lld\n", sum );
    }
    else
    {
        puts( "Incorect input." );
    }
    
    return 0;
}
于 2020-11-06T16:06:47.373 回答
1

你有两种方法可以解决这个问题 -

  1. 删除输入两个整数之间的“,”。只需输入这样的输入:25 38。
  2. 如果您想在输入整数之间给出一个“,”,那么您需要在代码中进行更改。在 scanf 行你应该写:
scanf("%d,%d", &firstInteger, &secondInteger);

[注意:您在 %d 中提供的内容将在输入部分跳过。就像你想在两个变量中取两个整数小时和分钟一样。然后你可以写:

scanf("%d:%d", &hour, &minute);

因此,如果您在输入部分写入 - 10:30,则小时变量取 10,分钟变量取 30。]

于 2020-11-06T16:02:46.953 回答
1

您正在输入逗号。放一个空格就好了 25 38

于 2020-11-06T15:59:35.003 回答
0

scanf()默认情况下不要跳过,输入并停在那里,因为它不能被解释为整数。

添加,到这样的格式有scanf()read 和 drop ,

    scanf("%d,%d", &firstInteger, &secondInteger);
于 2020-11-06T15:46:21.050 回答