首页 > 解决方案 > 为什么在这种情况下两个整数的总和不起作用?

问题描述

我是 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

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

标签: cscanfconversion-specifier

解决方案


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

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;
}

推荐阅读