• 2017《面向对象程序设计》课程作业三


    新增要求

    • 要求将第一次作业中使用静态变量的方法进行改进,推荐使用传参、定义函数有返回值。
    • 多参数主函数要求:在命令行中输入的参数为:用户要求题目数量的文件路径、最终结果的文件路径。
      D:>a.exe d://in.txt d://out.txt,a.exe为可执行文件,d://in.txt为用户要求的题目数量的文件路径,d://out.txt最终结果的文件路径。
    • 要求将程序写成一个.cpp和一个.h的形式。
    • 新增函数要求:
      int main(int argc,char *argv[]){}
      readFile()//读取用户要求的题目数量(请注意参数设置)
      writeFile()//将最终结果写入文件,写入内容包括:用户输入的题目数,每个生成的表达式、正确答案、用户输入的答案,保存到命令行中第二个参数指定的路径。(请注意参数设置)
    • 要求将课程作业一的代码进行迭代,实现以上各个模块。各个模块的形参列表、函数返回值类型可自由定制。

    github地址

    程序运行截图

    • 开始在input.txt中输入题目数。
    • 打开cmd窗口,将文件拖入窗口内,注意文件之间要有空格。

    遇到问题

    • 对应要求,把上次作业中唯一的一个全局变量language(布尔型)改成了局部变量,然后用指针传递。
    • 因为之前自己学过命令行参数的知识,所以问题不大,就是要注意路径之间要有空格隔开。
    • 这次作业中,需要将数字和字符都输入进文件,但是我所了解的函数只能将字符写入文件,所以就遇到了一个问题:如何将数字转化为字符?刚开始我用了itoa()来转化,可是写入文本的数字都变成了二进制的格式。查了一下发现可能是因为编码不兼容的问题,于是改用sprintf()(用法:sprintf(字符串,“%d”,整型变量))就成功转化了整型变量;
    • 在将表达式写入文件时遇到了问题:表达式如:(a+b)+(c+d),既有字符又有数字,要把他们转化成字符串,才能使用writeFile函数。我用了一种不太好的办法:对每一个单元做两步,第一步使用sprintf()转化字符串,第二步用strcat()将他们接在一个总的字符串的末尾后。strcat()遇到''时,把另一个字符串的头覆盖在前一个字符串''上,这样就能把两个字符连起来。
    • 文件在cmd窗口里运行时会出现两次的输出:在把东西写入文件时,那些东西会在cmd窗口再显示一次,所以,我把一些重复的输出语句删去,这样就只留下一次的输出。
    • 使用git时,遇到了问题(相同的问题,图来源于网络)

      有两种解决方法:1、使用git push -f 强行推送覆盖。2、使用git pull 在git push推送。

    感想

    程序运行有不同的方式,可以双击点开,也可以使用cmd窗口打开,main函数也可以接受参数,在使用文件输入输出时,也有一些需要留意的地方。代码迭代的过程中遇到了许多问题,除了未知的知识以外,很多是不太良好的编码习惯导致的,觉得以后一定要注意编码的规范性,这样可以给自己给别人减少许多麻烦。做作业的过程,搜索查找的过程,一些模棱两可的东西变得更清晰了,一些知识才真正被掌握起来。

  • 相关阅读:
    CDN混战何去何从,史上最全分析
    s3c2440中U-boot移植时执行cp.b提示:Flash not Erased【转】
    ubuntu18.04下挂载网络文件系统失败【学习笔记】
    win10下搭建深度学习--总结【学习笔记】
    零基础入门深度学习(5)
    为pyhon安装opencv扩展包出现distributed 1.21.8 requires msgpack, which is not installed.【转】
    ubuntu18.04下监视显卡的运行情况【学习笔记】
    Windows10下用Anaconda3安装TensorFlow教程【转】
    ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory 【学习笔记】【原创】
    安装tensorflow报ImportError: libcublas.so.9.0: cannot open shared object file的解决方法【转】
  • 原文地址:https://www.cnblogs.com/vancasola/p/6817880.html
Copyright © 2020-2023  润新知