(一)

(一)

《经典c程序100例》那个稿子是自家在百度文库中看出的,看到这一个文章心境拾贰分震撼,很多谢原创者的伟大贡献!太伟大了!!感觉里面的小例子拿来用于练习很可以活跃算法思维。 

那是本身个人对那几个难题了解,大概有个别零乱,仅供参考。


1.

(1)标题 求圆面积和周长  输入圆的半径,统计圆的周长和面积。
(2)流程图
澳门金沙国际 1
(3)测试数据及运转结果
澳门金沙国际 2
澳门金沙国际 3
(4)实验分析

   问题1:输出的时候只有数字没有求的变量
   原因:在输出的时候双引号后面要写+变量

1.

(1)标题 求圆面积和周长 输入圆的半径,统计圆的周长和面积。
(2)流程图
澳门金沙国际 4
(3)测试数据及运维结果
澳门金沙国际 5
澳门金沙国际 6
(4)实验分析

   问题1:输出的时候只有数字没有求的变量
   原因:在输出的时候双引号后面要写+变量

正文紧即使用C++完成《经典c程序100例》

题目:

2.

(1)标题输入三个4位年份,判断其是不是是闰年。闰年的识别条件是该年年份能被4整除但不可以被100整除、或许能被400整除。
(2)流程图
澳门金沙国际 7
(3)测试数据及运维结果
澳门金沙国际 8
澳门金沙国际 9
(4)实验分析

             问题1:有个别特殊的年份在输出程序的时候错误
              原因:把三个条件分开来写导致错乱

2.

(1)题目输入贰个几人年份,判断其是还是不是是闰年。闰年的辨识条件是该年年份能被4整除但不可以被100整除、或然能被400整除。
(2)流程图
澳门金沙国际 10
(3)测试数据及运转结果
澳门金沙国际 11
澳门金沙国际 12
(4)实验分析

             问题1:有个别特殊的年份在输出程序的时候错误
              原因:把三个条件分开来写导致错乱

以下顺序已经在VC++
6.0中调剂。

       编写程序,提醒用户输入年份和代表该年第①天是星期几的数字,然后在决定台上突显该年的日历表。

控制台突显结果如下:(小编用_代表空格)

澳门金沙国际 13

图1:以2018年为例

3.

(1)标题 修改第贰题,输出1978年距今全体的闰年
(2)流程图
澳门金沙国际 14
(3)测试数据及运维结果
澳门金沙国际 15
(4)实验分析

             问题1:输出结果没有出现哪一年是闰年
             原因:在输出的时候双引号后面没有+年份

3.

(1)标题 修改第壹题,输出1976年距今全数的闰年
(2)流程图
澳门金沙国际 16
(3)测试数据及运行结果
澳门金沙国际 17
(4)实验分析

             问题1:输出结果没有出现哪一年是闰年
             原因:在输出的时候双引号后面没有+年份

 

第3,说一下自家觉着在做那道题从前要求想到的多少个大旨:

1,首先,要一口咬定输入的年度是常年如故闰年,判断闰年的尺度是能被4整除且无法被100整除,或能
被400整除

【澳门金沙国际】未完待续,JAVA展现日历。  那里,笔者写了贰个单独的函数用来表示

澳门金沙国际 18

图2:判断是不是为闰年

2,第②,判断完平年照旧闰年从此,还索要汲取每月的运气,要求专注,7月的造化和常年闰年有关系

 
那里本人利用的是switch语句,也足以采纳循环等得到天数,十月的天命调用了前头判断是或不是为闰年的方法

澳门金沙国际 19

图3:判断各个月的命局

3,最终,在领略种种月的天数后,要求领悟这些月的首后天从星期几方始,那时就须要拿到每一个月开头的星期数:(上个月的天数%7+上个月率后天的星期数)%7

 
那里首先个月的星期数是由用户手动输入获取的,所以,第二个月的星期数,就是她本身,第①个月的星期数是前边二个月,相当于率先个月的星期数,用递归调用比较便于

澳门金沙国际 20

图4:获取各种月第3天是星期几

4.

(1)标题修改第③题,输入年份和月份,判断该月有个别许天。
(2)流程图
澳门金沙国际 21
(3)测试数据及运转结果
澳门金沙国际 22
澳门金沙国际 23
澳门金沙国际 24
(4)实验分析

             问题1:不明白2月跟其他月怎么分开?
             原因:忘记了选择框图

4.

(1)标题修改第叁题,输入年份和月份,判断该月有多少天。
(2)流程图
澳门金沙国际 25
(3)测试数据及运维结果
澳门金沙国际 26
澳门金沙国际 27
澳门金沙国际 28
(4)实验分析

             问题1:不明白2月跟其他月怎么分开?
             原因:忘记了选择框图

【程序1】标题:由① 、② 、三 、六个数字,能整合多少个互不一致且无重复数字的叁个人数?都以有点?

当自己写到那里的时候,作者还没考虑7天换行的标题,就只是看能仍旧不能够在不利的职位输出每种月的一号,于是从头写main函数

那边,kl为自家的类名,(注:类名首字母要大写,不要像笔者同样小写),_代表空格

澳门金沙国际 29

图5:main函数内部贯彻

5.

(1)标题程序随机发生三个100以内的平头,用户输入猜的数字,只可以猜一回,判断是不是猜对了,
即便猜错了,则印证猜大了照旧猜小了。
(2)流程图
澳门金沙国际 30
(3)测试数据及运维结果
澳门金沙国际 31
澳门金沙国际 32
(4)实验分析

             问题1:本道题没有问题
              原因:

5.

(1)题目程序随机暴发一个100以内的平头,用户输入猜的数字,只可以猜一遍,判断是或不是猜对了,
假若猜错了,则表达猜大了大概猜小了。
(2)流程图
澳门金沙国际 33
(3)测试数据及运转结果
澳门金沙国际 34
澳门金沙国际 35
(4)实验分析

             问题1:本道题没有问题
              原因:

1.    
程序主体效用分析:先完毕填在百位、十人、个位的数字都以一 、二 、③ 、4,组成全部的排列后再排除去掉不满足条件的排列。

因此运营后,得出下图所示的结果:

澳门金沙国际 36

图6:没写换行的运作结果

说实话,看到那些结果,着实吓了一跳,随即,我就意识,小编没写换行,不过每一种月的率后天所在星期数是天经地义的,依然窃喜了一小下

6.

(1)标题修改第⑤题,用户最多能够猜十四次,固然猜对了,输出猜对的次数,假使10遍都没猜对,输出正确答案。
(2)流程图
澳门金沙国际 37
(3)测试数据及运维结果
澳门金沙国际 38
澳门金沙国际 39

(4)实验分析

             问题1:不能循环输入n
              原因:输入n框放在了循环框图的上面导致如此

(二)

 我的结对编程同学是范凯华同学,他的博客地址链接为http://www.cnblogs.com/fkh1/


 我觉得C语言这门学科只要你认真思考,认真学习,钻研就可以学好,然后跟同学一起思考问题,一起解决问题,也是一种乐趣。编程原来感觉很困难,不能接受,但经过了这次作业之后感觉心里没有那么大的难受了,可以接受了,经过这次作业之后我收获了要努力钻研的态度,不能放弃的心 ,相信了只要你想就肯定可以做出来的意识。

6.

(1)标题修改第伍题,用户最多可以猜拾回,借使猜对了,输出猜对的次数,如若十四回都没猜对,输出正确答案。
(2)流程图
澳门金沙国际 40
(3)测试数据及运转结果
澳门金沙国际 41
澳门金沙国际 42

(4)实验分析

             问题1:不能循环输入n
              原因:输入n框放在了循环框图的上面导致如此

(二)

 我的结对编程同学是范凯华同学,他的博客地址链接为http://www.cnblogs.com/fkh1/


 我觉得C语言这门学科只要你认真思考,认真学习,钻研就可以学好,然后跟同学一起思考问题,一起解决问题,也是一种乐趣。编程原来感觉很困难,不能接受,但经过了这次作业之后感觉心里没有那么大的难受了,可以接受了,经过这次作业之后我收获了要努力钻研的态度,不能放弃的心 ,相信了只要你想就肯定可以做出来的意识。

程序代码:

接下去就从头换行的操作

换行的话,就是每到周天就换行,Sun对应的值是0,Sat对应的是6,也等于说,要看清当days为6时换行,就是判断days为星期几,作者的思路是,当天的日期加上这些月初叶的星期数余7就是现阶段日期的星期数,可是要留意,那几个月先河的星期数是从0初始的,所以,总的来说:

#include <iostream>
using namespace std;
int main()
{
    /*以下为三重循环*/
    for (int i=1;i<5;i++) 
    {
        for(int j=1;j<5;j++)
        {
            for(int k=1;k<5;k++)
            {
                if((i!=k)&&(i!=j)&&(j!=k))
               /*确保i、j、k三位互不相同
                     加上括号可以增加程序的可读性 */
                cout<<i<<j<<k<<endl;
            }
        }
    }
    return 0;
}

当下日期的星期数= (当前几日子+那几个月底始的星期数-1)%7

澳门金沙国际 43

图7:判断当前几日数是星期几

判定完当前命局之后,就要在main函数里接纳了,使用要

2.     添加统计个数的效率:

看清当前些天数是不是为周6,举行换行:

将以下语句放在图5的红线出即可,在if条件里调用dWeak函数

澳门金沙国际 44

图8:判断是不是为周一

#include <iostream>
using namespace std;
int main()
{
    int n=0;
    /*以下为三重循环*/
    for (int i=1;i<5;i++)
    {
        for(int j=1;j<5;j++)
        {
            for(int k=1;k<5;k++)
            {
                if((i!=k)&&(i!=j)&&(j!=k))
                    /*确保i、j、k三位互不相同*/
                {
                    cout<<i<<j<<k<<endl;
                    n++;
                }
            }
        }
    }
    cout<<"由1、2、3、4个数字,能组成"<<n<<"个互不相同且无重复数字的三位数!"<<endl;
    return 0;
}

诸如此类就能够了,运转结果后,就会师世图1的体裁


上述,是自己在写完以往的一些清楚,倘使有更好的艺术迎接告知(^w^)

末段,用一张图纸甘休吧

澳门金沙国际 45

运维结果跟数学运算的逻辑推演结果一致,4*3*2=24种(以百位伊始推理,百位有4种选拔,百位的数字分明后选用后九位有3种趋势采取,而当百位和十二个人的数字都规定后则个位有2种趋势选用)。 

==============================================================

【程序2】

标题:集团发放的奖金依照利润提成。利润(I)低于或等于10万元时,奖金可提一成;利润大于10万元,低于20万元时,低于10万元的一部分按1/10提成,高于10万元的一部分,可可提成7.5%;20万到40万以内时,高于20万元的一些,可提成5%;40万到60万时期时当先40万元的某些,可提成3%;60万到100万里边时,高于60万元的片段,可提成1.5%,高于100万元时,超越100万元的一对按1%提成,从键盘输入当月利润I,求应发放奖金总额?

1.顺序分析:请利用划分金额作为分界,分级别总结。程序中,把奖金和利润定义为长整型,如若急需小数点可依照实际要求定义为实型等其余数据类型。

2.程序源代码:

#include <iostream>
using namespace std;
int main()
{
    long int i;
    int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
    cout<<"请输入利润(I),要求必须是数字:";  
    //测试的时候如果输入的是小数,编译器会自动隐式转换为整型

    cin>>i;
    bonus1=100000*0.1;
    bonus2=bonus1+100000*0.075;
    bonus4=bonus2+200000*0.05;
    bonus6=bonus4+200000*0.03;
    bonus10=bonus6+400000*0.015;   

    if(i<=100000)
    {
        bonus=i*0.1;
    }
        else if(i<=200000)
        {
            bonus=bonus1+(i-100000)*0.075;
        }
            else if(i<=400000)
            {
                bonus=bonus2+(i-200000)*0.05;
            }
                else if(i<=600000)
                {
                    bonus=bonus4+(i-400000)*0.03;
                }
                    else if(i<=1000000)
                    {
                        bonus=bonus6+(i-600000)*0.015;
                    }
                        else 
                            bonus=bonus10+(i-1000000)*0.01;
    cout<<bonus<<endl;
    if(bonus<=0) cout<<"奖金小于等于0,不用发奖金"<<endl;
/* 
如果企业实际执行,利润亏损需要罚钱,可以删除"if(bonus<=0) cout<<"奖金小于等于0,不用发奖金"<<endl;"该句提示语。
*/
    return 0;
}

假定输入的是负数,即利润为负数,业绩亏损,系统也是会依据低于或等于10万元时的奖金依照百分之十算,算出来的结果是负数,即要求对其开展扣钱处罚。若是商户实际施行,只发奖金不扣钱,可以通过”if(bonus<=0)
cout<<“奖金小于等于0,不用发奖金”<<endl;”该句给用户提醒!

  ==============================================================

【程序3】

题材:二个平头,它丰裕100后是3个一心平方数,再添加168又是壹个完全平方数,请问该数是稍微?

  1. 先后分析:

统统平方即用贰个整数乘以自个儿例如1*1,2*2,3*3之类,依此类推。若一个数能表示成有个别自然数的平方的款型,则称那么些数为完全平方数。

紧邻的五个精光平方数的差=n*n-(n-1)*(n-1)=2n-1。

 假诺标题中的整数加它丰裕100后,再拉长168的通通平方数开平方后的值为n。

则其附近的多个精光平方数的差=2n-1<=168;

n<=84.5;

而n必须是整数,则n<=84,n*n<=84*84,则(a+268)小于7056,该是小于1万的。

小编们参考《经典c程序100例》该小说,设置程序扩张到在10万以内判断,可以证实大家原先的推理。

将难点中的该整数设为a,该数a加上100后是3个通通平方数(设该完全平方数开方后格外整数x),再添加168又是贰个完全平方数(设该完全平方数开方后约等于整数y),若是开方后的结果满足该规范,即是结果。

x*x=a+100;

y*y=a+268; 

2.程序源代码:

#include <iostream>
#include "math.h" 
using namespace std;
int main()
{
    long int a,x,y;
    for(a=1;a<100000;a++)
    {
        x=sqrt(a+100); //x为(a+100)后开平方的结果
        y=sqrt(a+268);//y为(a+268)后开平方的结果
        if((x*x==(a+100))&&(y*y==(a+268)))
        {
            cout<<a<<endl;
        }
        //如果一个数的平方根的平方等于该数,这说明此数是完全平方数
    }

    return 0;
}

运行结果:

21

261

1581

 

说明:

壹 、math.h是与数学运算相关的头文件,很常用。

好像的还有stdio.h也是与规范输入输出相关的头文件,也很常用。

借使电脑安装了VC++,可以搜索一下总计机,后缀名为.h的公文就驾驭有啥样标准头文件了。

常用的头文件越来越多,就算日常用的时候不完全清楚或然不大通晓的时候,当您用到哪个函数,去msdn辅助文件里搜一下,就了然该包涵哪些头文件了,简单又连忙

若果还是不打听,可以百度
谷歌,只怕找朋友咨询。 

② 、sqrt函数是用来平方根总结的函数

功 能: 总计3个非负实数的平方根

函数原型:
在VC6.0中的math.h头文件的函数原型为double sqrt(double);

VC 二零零六后为重载函数,原型为 float sqrt
(float),double sqrt (double),double long sqrt(double long)

在意没有int sqrt (int) 

3、原文《经典c程序100例》中用printf(“%ld\n”,i)输出。

%ld 是 printf
函数和其余类似函数中的输出格式控制符, 意思是出口长整型。 

C语言中%d和%ld之间的区分:

%d是按整型输出,在C语言中是拾几个人的二进制数范围-32768——32767

%ld是按长整型输出,长度是整型的2倍三拾6位,范围-2147483648—2147483647

 

 

==============================================================

【程序4】

标题:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以二月二十五日为例,应该先把前四个月的加起来,然后再添加5天即今年的第几天,特殊意况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码: 

#include <iostream>
#include "math.h" 
using namespace std;
int main()
{
    int day,month,year,sum,leap;

    cout<<"请输入年份:";
    cin>>year;
    cout<<"\n请输入月份:";
    cin>>month;
    cout<<"\n请输入日期:";
    cin>>day;


    switch(month)
    {
        case 1:sum=0;
            break;
        case 2:sum=31;
            break;
        case 3:sum=59;
            break;
        case 4:sum=90;
            break;
        case 5:sum=120;
            break;
        case 6:sum=151;
            break;
        case 7:sum=181;
            break;
        case 8:sum=212;
            break;
        case 9:sum=243;
            break;
        case 10:sum=273;
            break;
        case 11:sum=304;
            break;
        case 12:sum=334;
            break;
        default:cout<<"输入的月份错误!";
            break;
    }

    sum=sum+day;//再加上某天的天数
    if(year%400==0||(year%4==0&&year%100!=0))  //判断是不是闰年。
        //此外,上行也可以写为if((year%400==0)||((year%4==0)&&(year%100!=0)))
        leap=1;
        else 
            leap=0;
    if(leap==1&&month>2)  //如果是闰年并且月份大于2,总天数应该加1天
    {
        sum++;
    }
    cout<<"It is the "<<sum<<"th day of "<<year<<"!"<<endl;
    return 0;
}

运作结果1:

请输入年份:2003(若是用户输入二零零二)

请输入月份:3 (假诺用户输入3)

请输入日期:7 (如果用户输入日期7)

It is the 66th day of 2001!

 

运转结果2:

请输入年份:三千(假使用户输入两千)

请输入月份:4 (如果用户输入4)

请输入日期:5 (假使用户输入日期5)

It is the 96th day of 2000!

 

运作结果3:

请输入年份:3000(假如用户输入两千)

请输入月份:13
(假若用户输入13,测试输入错误月份指示语)

请输入日期:9 (即使用户输入日期9)

输入的月度错误!It is the -858993450th day
of 三千!

 

从调试结果3来看假如输入的月份错误会有提醒,可是如若输入的日子错误,没有提示。该程序有待立异。

因为关乎到每一个月份的命局差距。

个中1-五月独家为31天,28天(闰年为29天),31天,30天,31天,30天,31天,31天,30天,31天,30天,31天。该程序关于日期输入错误的唤起功能模块,因为篇幅有限就不再赘述,开头构思可以依照28,29,30,31四类天数用switch语句完结。

 

以下是摘录自百度百科中有关“闰年”的介绍:

闰年(Leap
Year)是为着弥补因人工历法规定造成的年度天数与地球实际公转周期的大运差而举行的。补上时间差的年度为闰年。

澳门金沙国际 ,规范总结方法

(按五回归年365天5小时肆拾7分45.5秒)
  一 、普通年能被4整除且不可以被100整除的为闰年。(如二零零四年就是闰年,1902年不是闰年)
  贰 、世纪年能被400整除的是闰年。(如两千年是闰年,一九零四年不是闰年)
  ③ 、对于数值很大的年份,那年只要能整除3200,并且能整除172800则是闰年。如172800年是闰年,86400年不是闰年(因为即便能整除3200,但无法整除172800)(此按三回归年365天5h48’45.5”计算)。
  其余,如根据现有太阳年的尺寸与上述闰年规则,每7000年又约差1二二十一日,由此John·赫歇尔提议每逢伍仟的倍数不闰,如西元四千年。但距此一年份来临尚有约二千年之遥,因而还未曾真正纳入规则或实施过。又由于地球公转速率的不安宁与许多影响因素,届时是不是须求纳入此规则仍有问号。

 

 

==============================================================

【程序5】

标题:输入多少个整数x,y,z,请把那两个数由小到大出口。

1.程序分析:首先,我们将x与y举行相比,如若x>y则将x与y的值进行置换(若是小编x<=y则不交流保持原状),从而完结了x和y的值依照从小到大排序。然后再用x与z举办相比较,倘使x>z则将x与z的值举办置换,那样能使x最小。

   
最后再将y和z的值举行相比,要是y>z则将y和z的值举办交流。再将x,y,z输出。

2.程序源代码:

#include <iostream>
using namespace std;
int main(void)
{
    int x,y,z,t;
    cout<<"请输入3个整数\n";
    cout<<"第一个整数:";
    cin>>x;
    cout<<"第二个整数:";
    cin>>y;
    cout<<"第三个整数:";
    cin>>z;
    if (x>y)
    {
        t=x;
        x=y;
        y=t;
    } /*交换x,y的值*/
    if(x>z)
    {
        t=z;
        z=x;
        x=t;
    }/*交换x,z的值*/
    if(y>z)
    {
        t=y;
        y=z;
        z=t;
    }/*交换z,y的值*/
    cout<<"三个数从小到大,分别为:\n"<<x<<endl;
    cout<<y<<endl;
    cout<<z<<endl;
return 0;
}

 

==============================================================

【程序6】

题目:用*号出口字母C的绘画。

1.顺序分析:可先用’*’号在纸上写出字母C,再分行输出。

2.程序源代码:

落到实处格局一:

#include <iostream>
using namespace std;
int main()
{
    cout<<"Hello C-world!\n";
    cout<<" ****\n";
    cout<<" *\n";
    cout<<" * \n";
    cout<<" ****\n";

    return 0;
}

达成格局二:

#include <cstdio> //定义输入/输出函数
int main()
{
    printf("Hello C-world!\n");
    printf(" ****\n");
    printf(" *\n");
    printf(" * \n");
    printf(" ****\n");

    return 0;
}

 

==============================================================

【程序7】

难点:输出特殊图案,请在C++环境中运维,看一看,Very
Beautiful!

1.主次分析:指示输出的是增加ASCII码      

2.程序源代码:

#include <cstdio> //定义输入/输出函数
int main()
{
    char a=176,b=219;
    printf("%c%c%c%c%c\n",b,a,a,a,b);//%c是换成ASCII码输出
    printf("%c%c%c%c%c\n",a,b,a,b,a);
    printf("%c%c%c%c%c\n",a,a,b,a,a);
    printf("%c%c%c%c%c\n",a,b,a,b,a);
    printf("%c%c%c%c%c\n",b,a,a,a,b);
}

一直复制程序到VC 6.0中来看的结果如下,居然是乱码!!

澳门金沙国际 46

衷心的认为不杰出!感觉被难点骗了!

后来转念一想,大概是何地设置不对。

百度了一晃,找到了原委:编号在128~255的是扩充的编码,原本不是用作彰显用的,而且我们的主宰台暗中同意代码页是“936 (ANSI/OEM -简体中文GBK)”。假如要显示伸张ASCII码,则将实施那个程序的控制台的的代码页改为 437
(OEM-美利坚合众国) 即可!
在刚刚乱码的支配台窗口题目栏上 右键–》暗中认同值–》暗许代码页
 修改为437,再度运维程序就看看了。

澳门金沙国际 47

 

 

==============================================================

【程序8】

题目:输出9*9口诀。

1.顺序分析:分行与列考虑,共9行9列,i控制行,j控制列。

2.程序源代码:

#include <cstdio>
int main()
{
    int i,j,result;
    printf("\n");
    for (i=1;i<10;i++)
    {
        for(j=1;j<10;j++)
        {
            result=i*j;
            printf("%d*%d=%-3d",i,j,result);//%-3d表示输出左对齐,占3位
        }
        printf("\n");//每一行后换行
    }
    return 0;
}

运转结果如下图 可以看来等号后边3个人是左对齐的,从而形成了整齐的排列:

澳门金沙国际 48

%3d--可以指定宽度,不足的左边补空格
%-3d--左对齐 表示输出的内容左对齐,输出结果共有3位,不足的话,在结果最后用空格补足占3位
%03d---一种左边补0 的等宽格式,比如数字12,%03d出来就是: 012

 

==============================================================

【程序9】

题材:要求输出国际象棋棋盘。

1.主次分析:用i控制行,j来控制列,依照i+j的和的生成来控制输出黑方格,照旧白方格。

2.程序源代码:

#include <cstdio>
int main()
{
    int i,j;
    for(i=0;i<8;i++)
    {
        for(j=0;j<8;j++)
        {
            if((i+j)%2==0)
            {
                printf("%c%c",219,219);
            }
            else
                printf("  ");//注意双引号里面是两个空格

        }
        printf("\n");
    }
    return 0;
}

%c是换来ASCII码输出,跟上面的【程序7】一样要求设置控制台默许代码页为437
(OEM-米国)后再运维程序。
运营结果:

澳门金沙国际 49

 

【程序10】

难点:打印楼梯,同时在楼梯上方打印五个笑脸。

1.顺序分析:用i控制行,j来控制列,j依照i的变动来控制输出黑方格的个数。

2.程序源代码:

#include <cstdio>
int main()
{
    int i,j;
    printf("\1\1\n");//输出两个笑脸
    for(i=1;i<11;i++)
    {
        for(j=1;j<=i;j++)
        {
            printf("%c%c",219,219);
        }
        printf("\n");
    }
    return 0;
}

运行结果能够观察如下:

 

澳门金沙国际 50

 

 

经典c程序100例==11–20

 

【程序11】

题材:古典难题:有一对兔子,从出生后第10个月起各样月都生一对兔子,小兔子长到第⑩个月

   后各个月又生一对兔子,假诺兔子都不死,问各个月的兔子总数为多少?

1.顺序分析: 兔子对数的规律为数列1,1,2,3,5,8,13,21….

2.程序源代码:

#include <iostream>
using namespace std;
int main()
{
    long f1,f2;
    int i;
    f1=f2=1;
    cout<<"每个月兔子的总对数,分别为:\n";
    for(i=1;i<=20;i++)
    {
    printf("%12ld %12ld",f1,f2);
    if(i%2==0)
    {
    printf("\n");//控制输出,每行4个

    }
    f1=f1+f2;/*前两个月加起来赋值给第三个月*/
    f2=f1+f2;/*前两个月加起来赋值给第三个月*/
    }
    return 0;
}

出口结果:

澳门金沙国际 51

 

==============================================================

【程序12】

难点:判断101-200之内有多少个素数,并出口全部素数。

1.主次分析:

判定素数的艺术:用一个数分别去除2到sqrt(这一个数),倘若能被整除,则声明此数不是素数,反之是素数。

因为偶数永远不可以为素数,所以从101起来,每便增添2,也等于只考虑奇数。
对于每二个奇数k,从2到k-1,如果在2到k-1之间找到能被k整除的数字,也等于约数,自然不是素数了。
       

2.程序源代码:

#include <iostream>
#include <cmath> 
using namespace std;
int main()
{
  int m,i,k,h=0,leap=1;
  cout<<"\n";//C++中尽量不要少用printf函数,printf("\n");
  for(m=101;m<=200;m++)
  {
    k=sqrt(m+1);//sqrt()函数,计算平方根
    for(i=2;i<=k;i++)
    {
        if(m%i==0)
        {
            leap=0; 
            break;//这里break;是跳出for循环
        }
        //其他的情况下,leap值没有被修改依旧为1。
   }//如果leap=1的,则为素数,下面实现输出。
    if(leap)//if(leap)这里也可以写成 if(leap==1)
    {
        printf("%-4d",m);//%-4d控制输出左对齐并占4位。
        h++;
        if(h%10==0)//控制每行输出10个数字
        printf("\n");   
    }
    leap=1;
  }
  printf("\nThe total is %d\n",h);

    return 0;
}

先后表达:

1、关于if(leap):

if(leap)
那样判断会被自动转化成三个Boolean量来开展流程的主宰,会转化成 true and
false 七个量而你说的leap == 1 则只是一味的恒值的比较。

粗略的来说,假若leap = 5,在if(leap){}
这一个姿势中是赤手空拳的,为true而在if( leap == 1){} 则是为假的。

写程序思维需求比较审慎。

2、%-4d的作用:
来得位宽为4的整数(就是数字个数为4,不够4的会空出来凑5个,多了就不管了,照原数据出口)而“-”使得数据从左边被输出(左对齐)。
例如:
  int x=12234;
 printf(“%-4d”,x);
输出结果是12234.

三 、关于为何是从2到sqrt:

因为,假使a是合数,则a必有一个因数不当先根号a。

以下是说明:

设a为合数,则a=pq,不妨设 2 <= p <=
q。

则 a = pq >= p² 即 p<=
根号a。

表达完结!

理所当然如果你一代不曾想到是从2算到sqrt,也能够从2算到a(只是电脑多算一些时刻)。

4、关于break

break只可以用来循环和switch里,它的功效是跳出一层循环或许三个分层switch。是指向近期的百般。

if语句是选择分支语句不是循环。for,while,do while是循环

if语句是顺序执行的,执行完了就结束了。

题外话,continue只是对于循环有效,对于if等其他不是循环的都无效。

 

==============================================================

【程序13】

题材:打印出装有的“水仙花数”,所谓“水仙花数”是指二个多少人数,其各位数字立方和很是该数

   自己。例如:153是2个“水仙花数”,因为153=1的五次方+5的一遍方+3的三遍方。

1.程序分析:利用for循环控制100-9玖拾柒个数,每一种数分解出个位,十二人,百位。

2.程序源代码:

#include <iostream>
int main()
{
    int i,j,k,n;
    std::cout<<"'water flower' number is:";
    for(n=100;n<1000;n++)
    {
        i=n/100;//分解出百位
        j=n/10%10;//分解出十位
        k=n%10;//通过求余取出个位
        if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
        {
            std::cout<<n<<"\t";
        }
    }
    std::cout<<"\n";
    return 0;
}

程序输出结果为:

水仙花数是:153  370  371  407

澳门金沙国际 52

 

 其中我们大概会对:

i=n/100;//分解出百位

j=n/十分一10;//分解出十二个人

k=n%10;//通过求余取出个位

是否真正无误地取出了具有疑虑。

输入以下,测试申明是不是汇合世系统活动小数点后逢五进一的题材。

#include <iostream>
int main()
{
    int i;
    i=679;
    std::cout<<i/100<<std::endl;//分解出百位检查
    std::cout<<i/10%10<<std::endl;//分解出十位检查
    std::cout<<i%10<<std::endl;//个位检查
    return 0;
}

测试结果输出了:

6

7

9

 

 

ASCII码字符共有2伍二十四个。不一致字符,图形不相同。

相关文章