• Road to Coder _练习


    周次

    学习时间

    新编写代码行数

    博客量(篇)

    学到知识点

             

    第15周

    0.5h

     85

    1

    函数'及算法加深

    #include"stdio.h"
    #include"string.h"
    
    main()
    {
    char string[20];
    char c;
    int word=0,num=0,i;
    
    printf("请输入一个句子:");
    gets(string);
    
    for(i=0;(c=string[i])!='';i++)//结束条件:字符串结束符
    {
    if(c==' ')word=0;//判断字符前是否是空,如果不是,则单词计数+1
    else if(word==0)
    {
    word=1;//标志置1;代表这个字符前面是个连接的符
    num++;    
    }    
    }    
    printf("这句子里有%d个单词。",num);

      

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    汉诺塔是根据一个传说形成的一个问题:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。问:如何移?最少要移动多少次?

     1 #include<stdio.h>
     2 
     3 
     4 main() 
     5 {
     6 int n;
     7 printf("Please input tier of the hanoi:");
     8 scanf_s("%d",&n);
     9 hanoi(n,'A','B','C');
    10 getch();
    11 }
    12 
    13  
    14 
    15 hanoi(int n, char a, char b, char c)
    16 {
    17 if (n == 1) printf("	%c --> %c
    ",a,c);//如只有一层,直接A-》C;
    18 else
    19 {
    20 hanoi(n - 1, a, c, b);//(1)     把n-1个盘子由A 移到 B;             
    21 
    22 printf("	%c --> %c
    ",a,c);//(2)     把第n个盘子由 A移到 C;
    23 hanoi(n - 1, b, a, c);//(3)     把n-1个盘子由B 移到 C;
    24 }
    25 }
    26 
    27 运行结果:
    28 
    29 Please input tier of the hanoi:3
    30 A --> C
    31 A --> B
    32 C --> B
    33 A --> C
    34 B --> A
    35 B --> C
    36 A --> C

    /////////////////////////////////////////////////////////////////////////////////////////////////////////

    //舍罕王失算(麦子)

    故事: 
    相传现在流行的国际象棋是古印度舍罕王(Shirham)的宰相达依尔(Dahir) 发明的。舍罕王十分喜爱国际象棋,决定让达依尔自己要求得到什么赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:”陛下,请你赏给我一些麦子吧,就在棋盘的第1格中放1粒,第2格中放2粒,第3格中放4粒,以后每一格都比前一格增加一倍,一次放完棋盘上的64格,我就感恩不尽了。“ 
    舍罕王让人扛来了一袋麦子,他要兑现达依尔的许偌。。。请问,舍罕王能兑现他的许偌吗?

    摆放完棋盘上的64格共需多少麦子?这些小麦合多少吨(1吨小麦约2.4e7粒)?这些小麦相当于世界粮食年总产量(以2014年度数据2.48e9吨计算)的多少倍?

    main()
    {
    double t, v, p, s;
    int i, n;
    
    printf("请输入格数n:");
    scanf_s("%d",&n);
    
    t = 1; s = 1;
    for (i = 2; i <= n; i++)
    {
    t = t*2;//进行计算
    s = s + t;
    }
    v = s / 2.4e7;//求吨数
    p = v / 2.48e9;//世界粮食产量的倍数
    if (n <= 40)printf("总麦子数量为:%。0f
    ", s);
    else 
    printf("格数n为%d的麦子数量为%.3e
    ",n,s);//就是计算量有点大,输出的时候需要仔细确认,我是错了好久才调好的;
    printf("这些粮食重量为:%.0f吨。
    ",v);
    printf("约等于世界粮食产量的%.0f倍",p);
    getch();
    }

    运行结果:

    请输入格数n:64
    格数n为64的麦子数量为1.845e+19
    这些粮食重量为:768614336405吨。
    约等于世界粮食产量的310倍

    ////////////////////////////////////////////////////////////////////////////////////////////

    最近考试什么的没能自觉的敲代码,导致这星期除了上课没什么敲,上面都是之前敲的就拿出来顶一下。

                                                                                                    By Genmer-Visual Stduio 2017 Programming 

  • 相关阅读:
    jQuery选择器大全
    MVC自定义数据验证(两个时间的比较)
    SQLServer开发总结
    疯狂的订餐系统软件需求分析挑战之旅1
    疯狂的订餐系统软件需求分析挑战之旅2
    net中C#自动化调用Word的实例总结
    软件开发中代码自动化的一点浅见
    代码自动化(1)开篇
    代码自动化(2)程序设计
    Excel 手机号码、身份证 等信息 导入到SQL2005 中,转换成字符是自动变成 科学计数法 的解决方法
  • 原文地址:https://www.cnblogs.com/520-42/p/8095641.html
Copyright © 2020-2023  润新知