zoukankan      html  css  js  c++  java
  • 2017-2018-1 20179226 《从问题到程序》第5周学习总结

    教材学习知识点总结

    • 基本数据类型的选择
      1.如果没有特殊需要,浮点数都采用double类型。
      2.如果没有特殊需要,整数总采用int类型。
      3.如果没有特殊需要,字符型总采用char类型。
      4.尽量少用各种unsigned类型。
    • continue语句
      1.只能用在循环里,结束最内层循环体的本次执行,立即进入下次循环。
      2.break使程序跳到循环之外,continue跳过循环体内这个语句之后的部分。
    • switch语句
      1.default部分可以没有,各case之后的语句序列也可以没有。
      2.各case表达式的值互不相同。
    • 标准库函数
      1.字符分类函数:ctype.h
      2.随机数生成函数:stdlib.h
    • 每个C程序必须有一个以main为名的主函数,其返回值必须是int。
    • 函数封装和两种观点
      1.函数是封装起来并予以命名的一段代码,是程序中具有逻辑独立性的动作性实体。
      2.两种观点:内部观点和外部观点
      3.函数头部的重要性就在于描述了函数内部和外部之间的联系。
    • 函数原型
      1.函数原型形式上与函数头部类似,最后加一个分号,但参数表里的参数名可缺。
      2.函数原型可以出现在任何可以写变量定义的地方,目前最合理的方式是把它们都放在最前面。
      3.书写时必须给出完整的类型特征描述。
      4.写无参函数原型时,参数表必须写成(void),不能简单写成()。
    • 外部变量
      1.以外部定义形式定义的变量称为外部变量。
      2.外部变量声明需要在前面加关键词extern。
    • 作用域和存在期
      1.作用域:每个变量定义都有一个确定的作用范围,这个范围就是作用域,是一个静态概念。
      2.存在期:一个变量在程序执行中存在的那段时期称为这个变量的存在期,是一个动态概念。
    • 静态局部变量
      1.性质:局部作用域、全程存在期、一次初始化。
      2.static int m=0;
    • 初始化表达式
      1.不能包含涉及赋值的运算,如增量/减量运算等。
      2.定义外部变量和局部静态变量时未写初始化部分,系统自动将其初始化为0.
    • 寄存器变量
      1.局部自动变量可加关键词register定义为寄存器变量。
      2.特点:速度最快而数量很少,是最紧缺的存储资源。
    • 预处理
      1.如果源程序里某行的第一个非空格符号是#,这就是一个预处理命令行。
      2.#include最重要用途时组织程序的物理结构,使我们能以多个源程序文件的方式开发较大的程序。
      3.条件编译预处理命令:#if,#else,#elif,#endif。
      4.#ifdef相当于#if defined,#ifndef相当于#if !defined。
    • 定义常量
      1.enum:只能用于定义int常量。
      2.const:不能用在常量表达式。
      3.宏定义:无视语法语义,尽量少用。

    教材学习中的问题和解决过程

    • 问题1:书上说C源程序的加工过程分为三步:预处理编译和连接,那汇编呢?是没有还是包含在了编译里面?
    • 问题1解决方案:在网上查的也都是预处理、编译、汇编、连接。
    • 问题2:使用rand()产生随机数为什么种子数不同最后产生的随机数也相同?如图:

      rand.c代码如下:
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    unsigned int seed; 
    int k;
    printf("Enter a positive integer seed value: 
    ");
    scanf("%u",&seed);
    printf("Random Numbers are:
    ");
    for(k = 1; k <= 10; k++)
    {
    printf("%i",rand());
    printf("
    ");
    }
    return 0;
    }
    
    • 问题2解决方案:原因是代码中没有设置srand函数,其功能是用seed值重置种子值。修改后结果如下图:
  • 相关阅读:
    利用UltraScale和UltraScale+FPGA和MPSOC加速DSP设计生产力
    ARM系列处理器和架构
    Thumb扩展
    使用Redis分布式锁处理并发,解决超卖问题
    idea指定启动参数、环境变量
    Json返回结果为null属性不显示解决
    Spring Cloud Zuul 网关服务的fallback
    记录一次URL中有特殊字符怎么处理?
    logback的使用和logback.xml详解
    通过gitlab的webhook触发Jenkins自动构建设置
  • 原文地址:https://www.cnblogs.com/9226ryf/p/7991707.html
Copyright © 2011-2022 走看看