• C语言博客作业03 函数


    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业03--函数
    这个作业的目标 学习如何设计函数、C语言基本数据类型
    姓名 朱芳芳


    0.展示PTA总分(0----2)

    截图展示本次题目集排名分数截图。PTA题目集至少完成2/3,否则倒扣-2分

    1.本章学习总结(4分)

    整理这两周学习主要知识点,并能对每个知识点介绍简单案例或语法。不要截图ppt,自己文字书写。知识点包含:

    1.1 函数定义、调用、声明

    函数声明

    函数有两种类型

    一种是有返回值的,前面用int /float/ double/ char等返回值类型 来定义,如int f(int n);

    如果函数不需要返回值,那么就用void来写在前面,如void f(int n);注意声明是一条语句,后面要加分号;

    函数调用

    没有返回值的函数一般直接调用如: f(n);

    有返回值的一般语言定义一个变量如c=f(n);

    函数定义

    有返回值的函数一般就是

    int f(int)
    
     { 
    函数内容 
     return 返回的结果
    }
    
    

    注意f()没有分号。
    没有返回值的函数结构为

    void f(int)
    {
    函数内容
    }
    

    后面也没有分号。

    1.2 全局、局部变量、静态局部变量

    全局变量

    全局变量是可以被本程序所有对象或函数引用。(全局变量是块砖,哪里需要哪里搬。。

    局部变量

    指在一个函数内部或复合语句内部定义的变量,作用域是定义该变量的函数或定义该变量的复合语句,生存期是从函数被调用的时刻算起到函数返回调用处的时刻结束(地主家的傻儿子,只听地主的话

    静态局部变量

    当程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉,(干完事记忆就清零)这样就产生了一个问题:如何让局部变量不被重置?(想让傻儿子记得他做过的事去过的地方), 最容易想到的方法是定义为全局的变量(找块砖),但定义一个全局变量有许多缺点,最明显的缺点是破坏了此变量的访问范围(使得在此函数中定义的变量,不仅仅只受此函数控制)(砖头是多情的),static 关键字则可以很好的解决这个问题

    static 存储类
    指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁,即,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
    就是让傻儿子找个记事本记着,这样每次轮到他做事情,他就记得上次这件事情做到哪了

    C中 变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域。
    从作用域看:略;
    从分配内存空间看:
    全局变量、静态局部变量、静态全局变量都在静态存储区分配空间,而局部变量在栈分配空间
    把局部变量改变为静态变量后是改变了他的存储方式,即改变了他的生存期。把全局变量改变为静态变量后是改变了他的作用域,限制了他的使用范围,因此static这个说明符在不同的地方起的作用是不同的

    tips:
    1、若全局变量仅在单个文件中访问,则可以将这个变量修改为静态全局变量。

    2、若全局变量仅在单个函数中使用,则可以将这个变量修改为该函数的静态局部变量。

    3、全局变量、静态局部变量、静态全局变量都存放在静态数据存储区。

    1.3 C数据类型及注意点

    数据类型

    现在所学的类型分为字符型和数值型

    **1、自动转换: **

    高 double ←← float
    ↑ ↑
    ↑ long
    ↑ ↑
    ↑ unsigned
    ↑ ↑
    低 int ←← char,short

            自动转换顺序表
    

    2、强制转换:

    当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容,而较高类型的数据转换为较低类型时则可能有些数据丢失。

    3、注意事项:

    赋值中的类型转换当赋值运算符两边的运算对象类型不同时,将要发生类型转换,转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。具体的转换如下:

    (1) 浮点型与整型 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。

      将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式,即小数点后带若干个0.注意:赋值时的类型转换实际上是强制的。

      (2)单、双精度浮点型 由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为doub1e型数据参加运算,然后直接赋值。doub1e型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。

      (3) char型与int型 int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。

    浮点误差应注意的问题:
    简单通俗点来说,C语言中数据都是以二进制存储的,在
    1.避免相近的两数相减
    2.避免小分母
    3.避免大数吃小数
    4.简化计算步骤
    5:避免浮点数比较判断相等

    如何实现浮点数的比较判断?

    使用两数差的绝对值与所要达到的精度作比较,从而判断,或使用数据类型的转换(强制转换或者自动转换)

    如何实现字符型数据的输入?
    字符型数据包括空格符,换行符等,在输入过程中常常无法省略输入单字符避免回车。
    故有以下三种方法:
    1.在scanf()中使用' '屏蔽回车符号。

    scanf("%d
    ", &n);
    scanf("%c", &c);
    

    2.在scanf()格式串最前面添加空格,屏蔽回车字符。

    scanf("%d", &n);
    scanf(" %c", &c);//%c 前面加空格,过滤回车
    

    3.在接收字符前,使用getchar()来读取一次回车符号

    scanf("%d", &n);
    getchar();// 专门用来读取上次输入的回车字符
    scanf("%c", &c);
    

    1.4 C运算符

    同一优先级的运算符,运算次序由结合方向所决定。

    简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

    学习体会

    2.综合作业(6分):

    小学生口算表达式自动生成系统

    2.1.模块流程图
    请梳理各模块流程图,在编程前先画流程图再写代码。代码中有修改,流程图也跟着修改。二级模块,可以再画流程图展示。
    第一阶段流程图

    2.2.函数功能及全局变量介绍

    思路:调用相关文件的函数来实现菜单的交互性
    介绍你用到核心函数接口及全局变量。
    生成随机数,生成随机运算符(利用随机数0 1分别控制生成运算符)

    2.3.运行结果截图,测试用例。
    截图时候务必在图片中有文字说明该测试数据是什么,不能只有图片。测试数据有错也务必在图片上说明原因。


    第一次错误尝试
    2.4.大作业中编程技巧总结
    通过用除数加上余数的方法,使结果一定为整数
    实现代码如图:

    清屏函数
    system("cls");
    延时函数
    Sleep (500) ;
    exit(0)与exit(1)
    exit(0):正常运行程序并退出程序;
    exit(1):非正常运行导致退出程序;

    keep it up
  • 相关阅读:
    Spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
    Eclipse导入SpringBoot项目pom.xml第一行报错Unknown error
    分库分表理论概述
    什么是乐观锁,什么是悲观锁
    oracle中的索引查看
    手动实现tail
    KNN理论
    矩阵以及向量
    numpy常用的几个小函数
    线性回归
  • 原文地址:https://www.cnblogs.com/Z1188G/p/14065118.html
Copyright © 2020-2023  润新知