| 这个作业属于哪个班级 | 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 ,因为时间值每秒都不同,这个函数需要包含以下头文件: