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()时说可能会带来移植性问题。在网上找了一些资料来看 还是有些不明白这个问题会带来什么危害或好处,只有以谢简单的解释。
C语言学习笔记1的更多相关文章
- HTML语言学习笔记(会更新)
# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- 2017-05-4-C语言学习笔记
C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Haskell语言学习笔记(88)语言扩展(1)
ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Ex ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- Go语言学习笔记十二: 范围(Range)
Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...
- Go语言学习笔记十一: 切片(slice)
Go语言学习笔记十一: 切片(slice) 切片这个概念我是从python语言中学到的,当时感觉这个东西真的比较好用.不像java语言写起来就比较繁琐.不过我觉得未来java语法也会支持的. 定义切片 ...
- Go语言学习笔记十: 结构体
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...
- Go语言学习笔记九: 指针
Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...
随机推荐
- Requests中文乱码解决方案
分析: r = requests.get(“http://www.baidu.com“) **r.text返回的是Unicode型的数据. 使用r.content返回的是bytes型的数据. 也就是说 ...
- Functional Reactive Programming
Functional Reactive Programming (FRP) integrates time flow and compositional events into functional ...
- 为什么 Category 不能增加成员变量-nonfragile
三.既然是 non-fragile ivars,为什么 Category 不能增加成员变量? 看过一些资料,理由并不是很让人信服.我觉得并不是做不到,只是现在没有做,现在不支持.我在 Opti ...
- 组合测试(Combinatorial Test)/配对测试 (pairwise)
组合测试方法:配对测试实践 实施组合测试 常用的Pairwise工具集:http://www.pairwise.org/tools.asp 成对测试(Pairwise Testing)又称结对测试.两 ...
- ThinkPHP5入门(三)----模型篇
一.操作数据库 1.数据库连接配置 数据库默认的相关配置在项目的application\database.php中已经定义好. 只需要在模块的数据库配置文件中配置好当前模块需要连接的数据库的配置参数即 ...
- windows环境安装docker,并下载lamp镜像
1.PC系统:windows10专业版 2.开启Hyper-V 此电脑->右击->属性->控制面板主页->(查看方式为小图标)程序和功能->右上方启动或关闭windows ...
- 【luogu P1373 小a和uim之大逃离】 题解
题目链接:https://www.luogu.org/problemnew/show/P1373 想不出来状态 看了一眼题解状态明白了 dp[i][j][h][1/0] 表示在i,j点差值为h是小A还 ...
- 升级到 OS EI 后 cocoa pods
安装: sudo gem install -n /usr/local/bin cocoapods 如果出现:pod :command not found 解决办法 S1:cd /Library/Rub ...
- css 尾巴
用border制作三角形 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- Linux内存管理-高端内存(一)
高端内存是指物理地址大于 896M 的内存.对于这样的内存,无法在“内核直接映射空间”进行映射. 为什么? 因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 ...