#include "stdafx.h" #include <stdio.h> int get_int(); bool bad_limits(int begin,int end,int low,int high); double sum_squares(int a,int b); int main(int argc, char* argv[]) { const int MIN = -1000; const int MAX = +1000; int start; int stop; double result; printf("该程序是计算整数的平方和,开始值不能小于-1000,结束值不能大于1000。/n"); printf("如果开始值和结束值都等于0,则退出本程序!/n"); printf("请输入开始值:"); start = get_int(); printf("请输入结束值:"); stop=get_int(); while(start!=0 || stop!=0) { if(bad_limits(start,stop,MIN,MAX)) printf("请重新试一次!/n"); else { result = sum_squares(start,stop); printf("从%d到%d的平方和是%lf!/n",start,stop,result); } printf("开始新一轮的计算!/n"); printf("请重新输入开始值:"); start = get_int(); printf("请重新输入结束值:"); stop = get_int(); } printf("结束!/n"); return 0; } int get_int() { int input; char ch; while(scanf("%d",&input)!=1) { while((ch=getchar())!='/n') putchar(ch); printf("不是一个整数,"); printf("您应该输入像25,-3,69等这样的整数。/n"); printf("请重新输入:"); } return input; } bool bad_limits(int begin,int end,int low,int high) { bool not_good = false; if(begin>end) { printf("开始值%d不应该大于结束值%d!/n",begin,end); not_good = true; } if(begin<low || end<low) { printf("%d和%d不在区间[%d,%d]!/n",begin,end,low,high); not_good = true; } if(begin>high || end>high) { printf("%d和%d不在区间[%d,%d]!/n",begin,end,low,high); not_good = true; } return not_good; } double sum_squares(int a,int b) { double total = 0; int i; for(i=a;i<=b;i++) { total += i*i; } return total; }