C语言练习题 在一定范围内计算平方和

此程序可以在-10000000到10000000之内计算任意范围的平方和

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

//验证输入是否是一个整数
long get_long(void){
    long input;
    char ch;
    while(scanf("%ld",&input) !=1){//判断是否是整数
        while((ch=getchar()!='\n')){//如果不是就进入循环
            putchar(ch);//将输入的错误信息显示出来
        }
        printf("不是整数\n");
        printf("请输入新的下限");
    }
    return input;
}

//验证数值范围
bool bad_limits(long begin,long end,long low,long high){
    bool noot_good=false;
    if(begin>end){//如果用户输入的最小值大于用户输入的最大值就进入判断
        printf("%d不能小于%d",begin,end);
        noot_good=true;
    }
    if(begin<low||end<low){//如果用户输入的值有一个小于规定的最小值
        printf("值必须大于等于%d",low);
        noot_good=true;
    }
    if(begin>high||end>high){//如果用户输入的值有一个大于规定的最大值
        printf("值必须小于等于%d",high);
        noot_good=true;
    }
    return noot_good;
}

//计算整数平方和
double sum_aquares(long a,long b){
    double total=0;
    long i;
    for(i=a;i<=b;i++){//从用户输入的最小值循环到用户输入的最大值
        total+=(double)i*(double)i;//平方相加,(double)作用是强制转换数据类型
    }
    return total;
}
int main(void) {
    const long MIN= -10000000L;
    const long MAX= +10000000L;
    long start;
    long stop;
    double answer;

    printf("该程序计算%ld到%ld内的整数(输入两个零表示退出)\n",MIN,MAX);
    printf("下限:");
    start=get_long();//用自定义函数判断数据是否符合规则
    printf("上限:");
    stop=get_long();//用自定义函数判断数据是否符合规则
    while (start!=0||stop!=0){
        if(bad_limits(start,stop,MIN,MAX)){//用自定义函数判断数据是否符合规则
            printf("请重新输入。\n");
        } else{
            answer= sum_aquares(start,stop);//用自定义函数计算
            printf("%ld到%ld的整数平方和为:%g\n",start,stop,answer);
        }
        printf("输入限制(输入0表示退出):");
        printf("下限:");
        start=get_long();
        printf("上限:");
        stop=get_long();
    }
    printf("结束。");


    return 0;
}

运行结果

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值