zoukankan      html  css  js  c++  java
  • C语言II博客作业01

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-2
    这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-2/homework/11769
    这个作业的目标 <复习、巩固上一期所学过的内容,并在本周自行探索使用C语言计算代码运行时间的方法>
    学号 <20209150>

    一、本周教学内容&目标

    第6章 回顾数据类型和表达式,第12章 文件


    二、本周作业(总分:50分)

    2.1 题目:给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。

    要求一、贴出代码图片,写出解题思路,列出测试数据(5分)

    2.1.1贴出代码图片(问题一答案)和计算运行时间的代码;


    问题二答

    F(N)= N最大的数为1111111110

    2.1.2写出解题思路:

    ①题目的解题思路:
    因为要计算“从1开始,到一个十进制正整数N中的所有整数,其中出现的所有“1”的个数”。可以分三步解决。
    第一步、把“从1开始,到一个十进制正整数N中的所有整数”一个个提取出来,这一步可以先使用scanf输入此N,再使用for循环语句“for(i=1;i<=N;i++){}”来实现。
    第二步、把“其中出现的所有“1”的个数”计算出来,可以在第一步的基础上内嵌一个循环语句,对出现的每一个“i”提取出它的每一位数,然后判断它是否为1。
    第三步、调试程序的bug,看代码的运行过程是否与自己的思路相同,一步一步改进,最终成型。
    
    ④计算代码运行时间的解题思路:
    第一步、查找网络,看是否有能计算时间的代码,剖析它的结构,分析它是如何计算代码运行时间的
    第二步、将自己之前已经打出的代码嵌入其中,并删去无用的结构,改动部分说明词
    附(网络查找的代码,引用自“菜鸟教程”):
    

    2.1.3列出测试数据

    输入数据 输出数据 说明 代码运行时间(单位:秒)
    12 f(12)=5 两位数 1.749
    121 f(121)=55 三位数 2.187
    12321 f(12321)=8095 五位数 3.156
    123111 f(123111)=93043 六位数 4.093
    1234321 f(1234321)=1058695 七位数 3.421
    123454321 f(123454321)=130586695 九位数 18.173

    附:图


    要求二、给出不同测试数据的运算时间,如果你的运算时间不变,说明你的测试数据不够大(5分)

    已在要求一的“2.1.3”写出


    要求三、思考针对足够大的数据,如何减少运算时间,并给出在原有算法基础上的改进算法和改进思路。(10分)

    算法改进(附代码)

    思路改进

    把主函数里的判断优化,把在循环内判断改为在循环本身判断“是否跳出程序”

    2.2 将上题中多组测试数据写入文件,并给出测试程序以检测你的代码有没有问题,贴出你的代码、运行结果和文件内容。(5分)

    代码如下

    备注:上面这个“检测代码有无错误”的代码是错误的
    输入数据 输出数据 说明 代码运行时间(单位:秒)
    12 5 无法运行 两位数 没有数据
    121 55 无法运行 三位数 没有数据
    12321 8095 无法运行 五位数 没有数据
    123111 93043 无法运行 六位数 没有数据
    1234321 1058695 无法运行 七位数 没有数据
    123454321 130586695 无法运行 九位数 没有数据

    2.3 用自己的语言回答两个问题,并给出所查阅资料的引用(10分)

    1.什么是文件缓冲系统?工作原理如何?

    缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存“缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一般来说,文件“缓冲区”的大小随机器 而定。
    ————————————————
    版权声明:本文为CSDN博主「qcz_nuist」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qcz_nuist/article/details/79920048

    2.什么是文本文件和二进制文件?

    文本文件是一种计算机文件,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。
    特别的是,文本文件是指以ASCII码方式(也称文本方式)存储的文件,更确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息(包括能用ASCII码字符表示的回车、换行等信息)外,不能存储其他任何信息。
    二进制文件:包含在 ASCII及扩展 ASCII 字符中编写的数据或程序指令的文件。计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本文件),图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件。
    ————————————————
    引用自《二进制文件_百度百科》和《文本文件_百度百科》

    2.4 请给出本周学习总结(15分)

    1 学习进度条(5分)

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较疑惑的问题
    第一周/21年3月5日 20 147 用C语言读取文本文件 如何更好地计算代码运行时间

    2 累积代码行和博客字数(5分)

    3 学习内容总结和感悟(5分)

    学习内容总结

    学习感悟

    1、C/C++中的计时函数clock()可以用于计算代码运行的时间
    2、有两个和计算执行时间相关的函数。
    clock()
    返回程序到目前的CPU执行时间,这个值需要除以CLOCKS_PER_SEC才能得到真正的用户时间,即秒。
    gettimeofday()
    得到当前的时间精确到微秒。用这个得到的数据更真实。

    备注:此篇博客字数约为2327字(字数更新日期2021年3月7日17:34)
  • 相关阅读:
    Windows进程通信(2)使用内存映射文件
    VC2010添加头文件目录
    CString(ANSI/Unicode)与string/wstring的安全转换
    1005 ( Number Sequence )
    1004 ( Let the Balloon Rise )
    1003 ( Max Sum )
    CreateMutex
    CloseHandle
    delphi的Frame简单演示
    DLL中显示模式窗体
  • 原文地址:https://www.cnblogs.com/lyn-/p/14477805.html
Copyright © 2011-2022 走看看