C语言假期学习笔记1

关于吃回车问题
  • 第一个解决方案是使用ch=getchar();
  • 第二个方案是在scanf(" %c",&b);在%c加空格,将存于缓冲区的回车符读入

    第一次就遇见重大问题

    我在codeblocks上编写代码编译运行时会出现下面的问题,我还以为自己写的简单代码都有错误,然后再抄写树上代码时也出现了此类问题。在网上也没差找到相关解决办法

    -重装之后就这个问题就修复了。虽然蠢了点,但是还是挺有用的。

    关于类型转换

    -在实践自己动手编程中,一个计算年利率问题,遇见了很多问题。

  • 第一个问题,在scanf("%d",&n)应加入地址符&;
    地址符就像一个门牌号,只有有了这个地址符才能存到相应位置。

-第二个问题是类型不明确;

  • 在使用float,double时我都使用double这样虽然不会错,但是程序质量会受到影响

  • 例如这个题目中的利率是不变的,如果定义成float,这个值可能会被改变,所以可以直接定义成宏常量

白盒测试

  • 作为新手写C语言程序,总是怀疑自己代码是不是还存在一些bug,这时候就得学会白盒测试。
  • 白盒测试是对过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,
    它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。
  • 感觉这和java中的TDD一样,都是通过写代码来进行测试,包括边缘测试。

    可移植性问题:
  • 在学习C语言写一个判断两个整型大小,并且当输入非法字符时提示输入了非法字符。

在编写这个程序时遇见了几个问题。

(1)怎么判断是不是整型?

在百度之后发现其实很简单。定义整型ret,

ret=scanf("%d,%d",&a,&b);
if(n==2){
//比较ab大小比输出大的数字
}
else{
printf("输入非法字符\n");
}

(2)在使用if-else时,发现分支很多,感觉代码可以进行优化,不仅仅是这个代码,我之前写的好几个代码和书上的参考代码比较起来都是使用过多if-else;显得代码很臃肿,但又感觉无可奈何,想到用函数来解决,但是函数部分只是了解,又不能掌握,所以尝试几次都运行失败了。相信以后会解决这个问题。

(3)在看书上参考代码时发现比我的代码多了一个清除输入缓冲区的错误数据的函数fflush(stdin),又看到书上解释发fflush()时说可能会带来移植性问题。在网上找了一些资料来看 还是有些不明白这个问题会带来什么危害或好处,只有以谢简单的解释。

C语言学习笔记1的更多相关文章

  1. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  2. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

  3. 2017-05-4-C语言学习笔记

    C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...

  4. GO语言学习笔记(一)

    GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...

  5. Haskell语言学习笔记(88)语言扩展(1)

    ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...

  6. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

  7. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  8. Go语言学习笔记十一: 切片(slice)

    Go语言学习笔记十一: 切片(slice) 切片这个概念我是从python语言中学到的,当时感觉这个东西真的比较好用.不像java语言写起来就比较繁琐.不过我觉得未来java语法也会支持的. 定义切片 ...

  9. Go语言学习笔记十: 结构体

    Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

  10. Go语言学习笔记九: 指针

    Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...

随机推荐

  1. Java 字符流与基本IO

    字符流基类 java.io包中专门用于字符流处理的类,是以 Reader 和 Writer 为基础派生的一系列类.字符流以字符为单位,根据码表映射字符,一次可能读多个字节,只能处理字符类型的数据.Re ...

  2. 怎么知道是哪个div被点击了

    怎么知道是哪个div被点击了 不在div中加onclick等事件调用函数 ,用事件监听函数,但是如果div中的div被点击了,addEventListener得到了两个监听事件,我想点击div里的di ...

  3. GCD vs NSOperation

    GCD is a lightweight way to represent units of work that are going to be executed concurrently. You ...

  4. 随手练——O(n)解决无序数组排序后的相邻最大差值

    题目从这儿看到的 : https://mp.weixin.qq.com/s/2OXg67MfBuQjDPAJxxD8rQ,但是公众号上讲错了,问题还挺严重的. 题目知识点:桶排序. 题目:有一个无序数 ...

  5. 五子棋项目总结 JavaScript+jQuery(插件写法)+bootstrap(模态框)

    Html部分(界面): 1.五子棋棋盘由canvas完成: 2.两个按钮,样式由bootstrap完成: 3.菜单按钮对应的模态框,可以选择游戏模式:玩家自由对战,和电脑对战,还可以指定谁先执子和哪个 ...

  6. verilog实现的16位CPU设计

    verilog实现的16位CPU设计 整体电路图 CPU状态图 idle代表没有工作,exec代表在工作 实验设计思路 五级流水线,增加硬件消耗换取时间的做法. 具体每一部分写什么将由代码部分指明. ...

  7. 5、RabbitMQ-订阅模式 Publish/Subscribe

    http://www.rabbitmq.com/tutorials/tutorial-three-java.html 1.模型图 我们之前学习的都是一个消息只能被一个消费者消费,那么如果我想发一个消息 ...

  8. linq的左连接右连接内连接用法

    1.左连接: var LeftJoin = from e in ListOfEmployees join d in ListOfDepartment on e.DeptID equals d.ID i ...

  9. No.1 - 制作一个简单的菜单动画效果---百度IFE

    最近比较闲,在家做点训练 http://ife.baidu.com/course/detail/id/18?t=1527144851578#learn CSS3新特性,兼容性,兼容方法总结 https ...

  10. I、Q信号是如何产生的,I、Q信号复用的作用

    接收机在中频部分实现模数变换和采样,采样后的信号和数字域的同频相乘,就可以得到基带的I.Q分量.在无线接口传输时,每一种使用特定的载波频率.码(扩频码和扰码)以及载波相对相位(I或Q)的信道都可以理解 ...