第十一周项目2-2-年龄几何?

来源:互联网 发布:北京 软件 培训 编辑:程序博客网 时间:2024/06/04 23:48
/*                    *程序的版权和版本声明部分:                    *Copyright(c)2013,烟台大学计算机学院学生                    *All rights reserved.                    *文件名称:                    *作者:田成琳                    *完成日期:2013年 10月25 日                    *版本号:v1.0                    *对任务及求解方法的描述部分:                    *输入描述: 张三,李四,王五,刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们年龄为前4项的等差数列的前20项 *问题描述:穷举法  *程序输出:他们年龄为前4项的等差数列的前20项 *问题分析:                    *算法设计:                    */   我的程序:  #include<iostream>using namespace std;int main(){int a,b,c,d,n,sum=0;cout<<"以他们的年龄为前4项的等差数列前20项为:"<<endl;for(a=1;a<=26;a++)for(b=1;b<=26;b++)for(c=1;c<=26;c++)for(d=1;d<=26;d++)if(a+b+c+d==26&&a*b*c*d==880)                        //一个大if先判断条件是否符合{if(a<=b&&b<=c&&c<=d)                             //考虑到等差只有两种情况,所以先if一下{        cout<<a<<" "<<b<<" "<<c<<" "<<d<<" ";       //先把他们年龄输出,再考虑后面for(n=1;n<=16;n++)                           //题目要求输出前20项,故n<=16{  sum=d+((d-c)*n);                         //这个循环体这一部分想了好久,终于成功cout<<sum<<" ";}cout<<endl;}else if(d<=c&&c<=b&&b<=a)                        {cout<<a<<" "<<b<<" "<<c<<" "<<d<<" ";          //这一块没技术含量,和上面一样for(n=1;n<=16;n++){sum=d+((d-c)*n);cout<<sum<<" ";}cout<<endl;}}return 0;}


运行结果:

心得体会:开始时脑子有大体思路,落实起来时循环体那部分脑子混乱了,不过这还难不倒我,仔细研究就出来了。