C语言学习笔记1

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()时说可能会带来移植性问题。在网上找了一些资料来看 还是有些不明白这个问题会带来什么危害或好处,只有以谢简单的解释。

posted @ 2017-06-24 20:08  20155329胡佩伦  阅读(280)  评论(0编辑  收藏  举报