用C语言实现介于两个数字中间的数之和

如题,例如求6和2所有数字的和即3+4+5,求9与2所有数字的和,即3+4+5+6+7+8。

算法思路:两个数的差值再-1即为中间数字的个数,如9-2-1=6、6-2-1=3。由数学思路可得,数轴两端的数之和,等于正数第二个数与倒数第二个数之和(类似于高斯计算1+2+...+100)。故中间数的个数为偶数时候,该偶数除以2即为有几对两端数字之和(例如 9与2之间有6个数即有3对9+2相加,即和为(6/2)*(9+2))。若个数为奇数,则该奇数-1就变成偶数对数,再加上0.5*两端之和(例如6和2之间有3个数,和为(3-1)/2*(6+2)+0.5*(6+2))。

代码如下:

int main()
{
    int a, b, flag,count,temp,sum;
    do
    {
        flag = 0;
        printf("please enter two different numbers:\n");
        scanf("%d %d",&a,&b);
        if (a==b)
        {
            flag = 1;
            printf("error!!please enter two different numbers!\n");
        }
        else
        {
            if (a > b)
            {
                temp = a; a = b; b = temp;//保证b变量用于存较大的值
            }
            count = b - a-1;//介于两个数中间的数字的个数
            if (count % 2)
            {
                sum = ((count / 2) * (b + a)) + (0.5*(b + a));
            }
            else
            {
                sum = count / 2 * (b + a);
            }

        }
    } while (flag==1);//输入错误时,flag置1,重新输入
    printf("the sum between the two numbers is:%d\n",sum);
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值