此程序可以在-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;
}
运行结果