• C语言博客作业03函数


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

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

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

    1.1 函数定义、调用、声明

    函数返回值类型 函数名(形式参数列表)
    {
    函数体
    }
    函数调用: 两种方式
    方式1: 非void型
    变量名=函数名(实参列表);
    方式2: void型
    函数名(实参列表);
    声明:
    函数类型 函数名(形成类型1 形参1, 形参类型2 形参2...);
    函数类型 函数名(形参类型1, 形参类型2 ...);

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

    全局变量:在所有函数外部定义的变量,它的作用域默认是整个程序。

    局部变量:它的作用域仅限于函数内部, 离开该函数后就是无效的;main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。main 函数也是一个函数,与其它函数地位平等。

    静态局部变量:用static声明的局部变量,在函数调用结束后不消失而保留原值,在下一次该函数调用时,该变量已有值。

    1.3 C数据类型及注意点

    1.3 C数据类型及注意点

    字符类型char
    一个字节。
    用来存储小范围的整数(-128 ~ 127),和“字符”(所有ASCII字符,128个)。

    char a = 100;
    char b = ‘a’;

    整数类型int
    4个字节
    用来存储整数,范围:- (2的31次方) ~ 2的31次方-1

    长整形long
    long 也就是 long int
    用来存储整数。
    在32位系统上,占4个字节,和int相同
    在64位系统上,占8个字节。

    长长整形long long
    用来存储整数。
    8字节。

    float类型(单精度浮点类型)
    用来存储带小数部分的数据。
    4个字节

    表示方式:按科学记数法存储,也就是需要存储“尾数”和“指数”
    float x = 1.75E5;
    //1.75E5就是1.75乘以10的5次方,只需保存尾数(1.75)和指数(5)
    float y = 1.123456789;
    //精度只能取值到 1.1234568, 在第7位(整数部分不算)是四舍五入后的值。

    表示范围:-3.4*1038~+3.4*1038 (不需记忆)
    精度:最长7位有效数字(是指7位10进制位)

    double类型(双精度浮点类型)

    用来存储带小数部分的数据。
    8个字节

    表示范围:-1.7*10308~1.7*10308(不需记忆)
    精度:最长16位有效数字(是指16位10进制位)

    1.4 C运算符

    后缀自增 x = i++; x = i;i=i+1; 先取值再自增
    后缀自减 x=i--; x =i; i=i-1;先取值再自减
    前缀自增 x = ++i; i=i+1; x=i; 先自增再取值
    前缀自减 x = --i; i=i-1; x = i;先自减再取值

    一共有15个级别!
    最高优先级:( )和[ ]
    倒数第二低优先级:赋值和复合赋值(=, +=, -= ...)
    最低优先级:逗号表达式

    ! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

    x = ! 3 + 4 < 5 && 6 > 7 || 8 > 7;
    等效于:
    x = ((!3 + 4 < 5) && (6 > 7)) || (8 > 7);

    2.综合作业(6分):小学生口算表达式自动生成系统

    2.1.模块流程图

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

    2.2.1.全局变量

    未使用到全局变量

    2.2.2 菜单相关函数

    游戏操作界面

    • 功能
      输出游戏界面
      提示用户操作
      接受用户输入字符
    • 思路
      printf输出提示用户的语句
      定义字符型变量option用于表示用户的选择
      用switch语句按照用户的选择进入下一环节
      用do-while语句使输入的字符只能在1-4中,在范围外需重新输入
    • 截图

    一年级界面函数 void GradeOneMenu()

    功能

    • 输出游戏界面
    • 提示用户操作
    • 接受用户输入字符
    • 输出题目
    • 统计正确率
    • 鼓励用户
      思路
    • 定义work变量表示用户要做的题目的数量
    • 定义right变量表示用户做对题目的数量
    • 定义count变量表示用户做到第几题,若count==work则说明题目都做完了
    • 使用Expression1(count,work,right)函数,输出题目,判断题目是否正确,判断用户是否做对,统计正确率。
    • 截图

    二年级界面函数 void GradeTwoMenu()

    功能

    • 输出游戏界面
    • 提示用户操作
    • 接受用户输入字符
    • 输出题目
    • 统计正确率
    • 鼓励用户
      思路
    • 定义work变量表示用户要做的题目的数量
    • 定义right变量表示用户做对题目的数量
    • 定义count变量表示用户做到第几题,若count==work则说明题目都做完了
    • 使用Expression2(count,work,right)函数,输出题目,判断题目是否正确,判断用户是否做对,统计正确率。
      截图
    • 大致与一年级相同

    三年级界面函数 void GradeThreeMenu()

    功能

    • 输出游戏界面
    • 提示用户操作
    • 接受用户输入字符
    • 输出题目
    • 统计正确率
    • 鼓励用户
      思路
    • 定义work变量表示用户要做的题目的数量
    • 定义right变量表示用户做对题目的数量
    • 定义count变量表示用户做到第几题,若count==work则说明题目都做完了
    • 使用Expression3(count,work,right)函数,输出题目,判断题目是否正确,判断用户是否做对,统计正确率。
      截图
    • 大致与一年级相同

    2.2.2 出题相关函数

    文字介绍函数功能、思路,截图函数代码。

    输出题目,判断题目是否正确,判断用户是否做对,统计正确率

    思路与功能

    • 使用rand()函数生成随机数
    • 使用srand(time(NULL))来使每次输出的结果都随机
    • 使用生成随机操作数函数,每个年级出题的标准不同,每个年级生成操作数的函数不同
    • 使用生成随机操作符函数
    • 使用判断生成的题目是否合理的函数,每个年级判断的标准不同,故每个年级都有一个判断的函数
    • 统计做题数和正确题数来统计正确率
    • 定义变量num1,num2,num3来表示操作数
    • 定义变量op1,op2来表示操作符
    • 定义变量key来表示题目正确答案来与用户所输入的结果进行对比
    • 定义变量answer来表示用户输入结果
    • 定义变量flag,使用rand()函数来给予随机数,若flag为1则题目的操作数只有2个,若为2则为3个,操作符个数也随之改变
    • 在用户答题前询问是否作答
    • 在用户答完一题后判断是否正确,并给予嘉奖或鼓励
    • 在用户答题结束后输出用户的正确率
      截图

    一年级


    二年级


    三年级


    2.3.运行结果截图,测试用例。

    2.4.大作业中编程技巧总结

    若只使用rand()函数,会发现每次运行的结果都是一样的,不能达到我们想要的随机
    使用srand(time(NULL))来使每次输出的结果都随机
    rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数,使用 rand() 生成随机数之前需要用随机发生器的初始化函数 srand(unsigned seed)(也位于 stdlib.h 中) 进行伪随机数序列初始化,seed 又叫随机种子,通俗讲就是,如果每次提供的 seed 是一样的话,最后每一轮生成的几个随机值也都是一样的,因此叫伪随机数,所以需要每次提供不同的 seed 达到完全的随机,我们通常用时间函数 time(NULL) 作为 seed ,因为时间值每秒都不同,这个函数需要包含以下头文件:

    include <time.h>

  • 相关阅读:
    d is less efficient than [0-9]
    How to navigate back to the last cursor position in Visual Studio Code?
    Is there a short-hand for nth root of x in Python 开n次方
    Disable source maps in Chrome DevTools
    Disable map files on SASS
    快速理解脏读,不可重复读,幻读
    AWR学习
    oracle set命令详解
    TimescaleDB上手和性能测试
    Centos 7.5 通过yum安装GNOME Desktop时出现:file /boot/efi/EFI/centos from install of fwupdate-efi-12-5.el7.centos.x86_64 conflicts with file from package grub2-common-1:2.02-0.65.el7.centos.2.noarch
  • 原文地址:https://www.cnblogs.com/jingzheng001/p/14064302.html
Copyright © 2020-2023  润新知