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. IOS Singleton(单例)

    Singleton.h // .h #define singleton_interface(class) + (instancetype)shared##class; // .m #define si ...

  2. django admin后台插件:django-suit入门

    去年9月底开始用django来做公司内部项目,开始对django有了一些了解,感觉django真的蛮强大的(也有很多人推荐flask,将来有空的话我会试试).今天的话只是介绍一个小东西,django管 ...

  3. UVa 10900 - So you want to be a 2n-aire?(期望DP)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  4. BZOJ1177:[APIO2009]Oil(枚举,前缀和)

    Description 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整块土地为一个矩形区域,被划分为M×N个小块. Siruseri地质 ...

  5. selenium + python自动化测试unittest框架学习(一)selenium原理及应用

    unittest框架的学习得益于虫师的<selenium+python自动化实践>这一书,该书讲得很详细,大家可以去看下,我也只学到一点点用于工作中,闲暇时记录下自己所学才能更加印象深刻. ...

  6. 该网页已屏蔽以下插件Adobe Flash Player

    2017.6.9更新:多谢网友留言,该网页已屏蔽以下插件Adobe Flash Player解决方法:chrome://flags/#run-all-flash-in-allow-mode选择启用就O ...

  7. linux下mysql忘记密码怎么办

    前言 今天在服务器安装mysql之后,登录发现密码错误,但是我没有设置密码呀,最后百度之后得知,mysql在5.7版本之后会自动创建一个初始密码. 报错如下: [root@mytestlnx02 ~] ...

  8. HDU 2076 夹角有多大

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2076 夹角有多大(题目已修改,注意读题) Time Limit: 1000/1000 MS (Java ...

  9. android实现静默安装demo

    1.须要RootTools.jar 2.运行脚本 public class InstallerActivity extends Activity {     /** Called when the a ...

  10. PHP介绍(PHP入门1)

    BS架构和CS架构 B:Browser:浏览器 S:Server:服务器 C:Client:客户端 BS 浏览器和服务器的关系,通过浏览器来访问服务器,比如:百度.新浪... 优点:只要有浏览器就能访 ...