C博客作业03--函数

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

0.展示PTA总分

1.本章学习总结

1.1有关函数的知识点

1.1.1 函数的定义

  • 基本形式:
函数类型 函数名(形式参数表)  /*函数首部*/
{
      函数实现过程           /*函数体*/
}
  • 定义:函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种。例如,库函数:scanf()、printf(),是由C语言系统提供定义,编程时直接调用即可,而用户自己定义的函数属于自定义函数。

  • 函数首部:函数首部由函数类型、函数名和形式参数表组成,位于函数义的第一行。函数首部中,函数名是函数整体的称谓,需用一个合法的标识符表示。函数类型指函数结果返回的类型,一般与return语句中表达式的类型一致。

    注意:

    • 函数首部后面不能加分号,它和函数体一起构成完整的函数定义

1.1.2 函数的调用

  • 形参表:格式为类型1 形参1,类型2 形参2,…,类型n 形参n 每个形参前面的类型写明,函数的形参的数量可以是0,1,2....

    注意:

    • int x,y是错误的;形参只能为变量
  • 函数体:函数体体现函数的实现过程,由一对大括号内的若干条语句组成,用于计算,或完成特定的工作,并用return语句返回运算的结果。

1.1.3函数的原型声明

  • 一般形式:函数类型 函数名(参数表);

    注意:

    • 目的是说明函数类型和参数情况,以保证程序编译时能判断对该函数的调用是否正确
    • 在调用函数前一定要先声明,再调用
    • 函数声明是一条C语句,而函数定义时的函数首部不是语句,后面不能跟分号

1.1.4 形参与实参

  • 形参:
    • 函数定义时位于参数表的被称为形参。
    • 形参除了接受实参的值外,使用方法与普通变量类似
    • 形参只在自定义函数里起作用,形参的任何变化与实参没有关系
    • 形参必须是变量
  • 实参:
    • 主调函数(main函数)的参数被称为实参。
    • 实参的作用:只是把值传给形参
    • 实参可以是常量、变量和表达式
  • 参数传递:实参→形参

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

变量种类 定义位置 使用范围 优点 什么时候使用
全局变量 函数外部 从定义开始到程序所在的文件结束 可以解决单个变量在多个函数之间的问题 一个变量需要到多个函数中
局部变量 函数内部 被局限于所在的函数,函数调用结束时就失效 保证了函数的独立性 一个变量只在单个函数中起作用
静态变量 函数内部 从被调用开始一直作用到程序结束 保留上一个函数调用后的值 变量需要积累之类的运算

1.3 C数据类型及注意点

1.3.1数据的存储

  • 整型数据的存储:

    • 计算机处理的所有信息都以二进制形式表示

    • 0代表正数,1代表负数

    • 数值可以采用原码,反码,补码表示

      • 正数的原码、反码和补码相同,符号位是0,其余各位表示数值

      • 负数的原码、反码和补码不同:

        原码:符号位是1,其余各位表示数值的绝对值;反码:符号位是1,其余各位对原码取反;补码:反码+1

例如:-1的原码是:10000000 00000001 -1的反码是:11111111 11111110 -1的补码是:11111111 11111111

  • 实型数据的存储:
    • 分为符号位、阶码和尾数
  • 字符型数据的存储:
    • ASCII码

1.3.2 基本数据类型

常用整型类型:

名称 类型名 数据长度
整型 int 32位
短整型 short 16位
长整型 long 32位

字符型:

名称 类型名 数据长度
字符型 char 8位

浮点型:

名称 类型名 数据长度
单精度浮点型 float 32位
双精度浮点型 double 64位

1.3.3 转义字符

  • 转义字符:由反斜杠加上一个字符或数字组成,它把后面的字符或数字转换成别的意义。虽然转义字符形式上由多个字符组成,但它是字符常量只代表一个字符,它的使用方法与其它字符常量使用相同。
字符 含义
\n 换行
\t 横向跳格
\ 反斜杠
'' 双引号
' 单引号
\ddd 1~3位八进制整数所代表的字符
\xhh 1~2位十六进制整数所代表的字符。

例题:

1.3.4 数据的输入和输出

  • 整型数据:
十进制 八进制 十六进制
int %d %o %x
long %ld %lo %lx
unsigned %u %o %x
unsigned long %lu %lo %lx
  • 说明:

    %u 十进制:无符号整数
    %o 八进制:一个整数
    %x 十六进制:一个整数

1.4 C运算符

1.4.1 部分预算符优先级和结合性

  • 右结合(从右向左):!,++ -- + -(单目),?: (条件表达式),= += -= *= /= %= (赋值运算符)

  • 左结合(从左向右):,(逗号运算符), < >...(关系运算符),&& ||( 逻辑运算符),(双目运算符)

1.4.2 位运算

(几个不常见的)

  • ~ 取反
  • ^按位“异或”

学习体会

学习了函数和数据类型后,开始觉得题目变难了,而且上课进度也变快了。但话说回来,使用了函数确实能使代码简洁不少,但因为技巧掌握和代码量不太足,还是需要自己不断的敲代码!不断总结!

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

2.1.模块流程图

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

2.2.1.全局变量

//全局变量
int RightNumber = 0;//计算正确题目的个数
int WrongNumber = 0;//计算错误题目的个数
int QustionNum = 0;//储存题目数量

2.2.2 菜单相关函数

void ListMenu()//操作菜单界面

用于展示操作的首页面,并选择所对应的年级。

int main(void)//主函数

2.2.3 年级函数

void GradeOneMenu()//一年级

  • 注意:

case 2情况中,要进行数字判断,如果减数比被减数小,则需要调换。

void GradeTwoMenu()//二年级

void GradeThreeMenu()//三年级

  • 注意:

    case 1情况中,要进行数字判断,如果减数比被减数小,则需要调换。

2.2.4 出题相关函数

出题注意:

  • 题目中不能出现答案为负数的情况
  • 涉及除法运算时,除数不能为0
  • 题目中出现乘法除法需要用“×”“÷”符号表示
  • 要相应的年级出对应的题目,难度不能过大

int GetValue(int grade)//对于随机生成操作数

随机数的生成:10以内的个位数,两位数,三位数

char GetOp(int op)//对于运算符的随机生成

随机生成运算符:分别对应一二三年级调用“+-*/”

2.2.5 其他相关函数

int TimeAccount(void)//计算时间

void Judgement()//结算函数

void RightAnswer()//答对正确之后的表扬

void WrongAnswer()//答对错误之后的鼓励

2.3 运行结果截图 测试用例

2.3.1 基本流程

  • 开始页面:

  • 输入“1”后,进入一年级的页面(需要判断是否答题):

  • 系统随机生成题目:

  • 答题后有计算答对答错的个数:

  • 若年级输入错误:

2.3.2 一年级

  • 两个个位数相加:

  • 个位数加两位数:

  • 个位减个位:

2.3.3 二年级

  • 个位乘个位:

  • 两位数加两位数:

  • 一位乘两位:

2.3.4 三年级

  • 两位数乘两位数:

  • 两位数除一位数:

  • 三位数加两位数:

2.4.1大作业中编程技巧

  • 打一大段代码的时候,要打完一个函数之后,运行一下看一下情况,不然一直打代码上去到最后,只要有一点错误,就要大改动。很多细节的地方没有注意,因为很多函数,代码量很长,只能一步一步调试找错误。
  • 注意吸收字符的问题!
  • 在进行除法运算时,有的除法要注意,运算出来是小数的,而结果被定义整型。

2.4.2大作业总结

  • 感觉本次的大作业,并没有做的很好很细致,还需完善,有些可以给用户更好的互动感或者体验感,还可以加强改进,还有题目现在只是一题一题的出现,运算法则也可以再补充补充,还是有蛮多地方可以改进的,但因为函数的语法使用还是有点不太透彻,操作的时候还是不太熟练。
posted @ 2020-11-30 20:15  GGGa-Yi  阅读(173)  评论(1编辑  收藏  举报