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. 【转】多线程Core Data

    原文地址:http://www.cocoanetics.com/2012/07/multi-context-coredata/ Multi-Context CoreData When you star ...

  2. MySQL面试宝典

    ==============================================# 参数==============================================auto ...

  3. JS实现图片上传之前先预览

    <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat=&quo ...

  4. Phonegap 目录结构介绍

    1.Src 该目录包含了所有用户要创建的 Java 源文件 2.gen 为开发工具自动创建 3.assets 目录 用于方一些资源文件 css js html 4.res 目录该目录包含了所有的资源文 ...

  5. nowcoder模拟赛

    R1 D1 普及组... T1/T2 咕 T3 链接:C 小A有一个只包含左右括号的字符串S.但他觉得这个字符串不够美观,因为它不是一个合法的括号串.一个合法的括号串是这样定义的: ()是合法的括号串 ...

  6. flutter 配置环境

    1. 下载java SDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html c ...

  7. bbs论坛浏览器兼容性问题

    一直都是在chrome上进行调试,今天终于把bbs论坛这个项目搭建完了,进入IE.Firefox看了看 吓哭了!!! 火狐 Edge chrome 特别是加了<!DOCTYPE html> ...

  8. 监听器中spring注入相关的问题

    问题描述: 需求是要求在项目启动自动触发一个service中的线程的操作,使用监听器来实现,但是自定义监听器中spring注解service失败,通过WebApplicationContextUtil ...

  9. RAID基本知识

    RAID是英文Redundant Array of Independent Disks(独立磁盘冗余阵列),简称磁盘阵列.下面将各个级别的RAID介绍如下. 一.为什么使用Raid? 1.对磁盘高速存 ...

  10. PHP扩展功能----发送邮件

    1.下载PHPMailer源码 github下载 (测试使用的是5.2.2 版本) 2.注册并登录网易邮箱(其他邮箱均可)[用于配置用户名和三方登录授权码,以及发送人邮箱地址]  (1)开启POP3协 ...