C博客作业03--函数
这个作业属于哪个班级 | C语言--网络2011/2012 |
---|---|
这个作业的地址 | C博客作业03--函数 |
这个作业的目标 | 学习如何设计函数、C语言基本数据类型 |
姓名 | 王博 |
0.展示PTA总分(0----2)
1.本章学习总结(4分)
1.1 函数定义、调用、声明
函数的定义:函数类型+函数名+输入值
例:int sum(int num1,int num2)
函数调用: 函数名+输入值sum=sum(a,b)
定义时定义了多少个变量在调用时就必须输入多少个变量。
声明:当函数体在main函数前时不需要额外定义,当函数体在main函数后时需在main函数前定义函数。
例:
#include<stdio.h>
int sum(int sum1,int sum2)
{
...
}
int main()
{
...
}
#include<stdio.h>
int sum(int sum1,int sum2);
int main()
{
...
}
int sum(int sum1,int sum2)
{
...
}
1.2 全局、局部变量、静态局部变量
全局变量:在所有函数外部定义的变量,它的作用域默认是整个程序。
局部变量:它的作用域仅限于函数内部, 离开该函数后就是无效的;main 函数中定义的变量也是局部变量,只能在 main 函数中使用;同时,main 函数中也不能使用其它函数中定义的变量。main 函数也是一个函数,与其它函数地位平等。
静态局部变量:用static声明的局部变量,在函数调用结束后不消失而保留原值,在下一次该函数调用时,该变量已有值。
1.3 C数据类型及注意点
1.3.1.整型变量
- int类型
取值范围(16位):-32768~32767(-2^15— 2^15-1)
转换说明:%d - short int(或简写为short)
取值范围(16位):-32768~32767(-2^15— 2^15-1)
转换说明:%d
-long int(或简写为long)
取值范围(16位):取值范围(16位)-2147483648~2147483648(-2^31— 2^31-1)
转换说明:%ld - long long int(简写为long long)
取值范围(16位):-9223372036854775808~:9223372036854775807-(2^63— 2^63-1)
换说明:%lld - unsigned+声明语句表示无符号类型(即非负数)
转换说明:%u (十进制无符号整数 )l和u能一起用(%lu)
1.3.2.浮点数
- 单精度float
取值范围:10^-37 —10^37
转换说明:%f - 双精度double
取值范围:(2^63— 2^63-1)
转换说明:%f - 指数计数法
xen(或xEn)[中间没空格]
eg:1.2e(E)10=1.2*10^10
转换说明:%e(%E)
1.4 C运算符
1.4.1优先级1级
结合方向 左结合(自左至右)
( ) 圆括号
[ ] [1] 下标运算符
-> 指向结构体成员运算符
. 结构体成员运算符 [1] (请注意它是一个实心圆点)
1.4.2优先级2级
结合方向 右结合(自右至左)单目运算符
- ! 逻辑非运算符
- 按位取反运算符
++ 自增运算符
-- 自减运算符
- 负号运算符
(类型) 类型转换运算符
* 指针运算符
& 地址与运算符
sizeof 长度运算符
1.4.3优先级3级
结合方向 左结合 双目运算符
* 乘法运算符
/ 除法运算符
% 取余运算符
1.4.4优先级4级
结合方向 左结合 双目运算符
+ 加法运算符
- 减法运算符
1.4.5优先级5级
结合方向 左结合 双目运算符
<< 左移运算符
>> 右移运算符
1.4.6优先级6级
结合方向 左结合 双目运算符
<、<=、>、>= 关系运算符
1.4.7优先级7级
结合方向 左结合 双目运算符
== 等于运算符 (判断)
!= 不等于运算符(判断)
1.4.8优先级8级
结合方向 左结合 双目运算符
& 按位与运算符
1.4.9优先级9级
结合方向 左结合 双目运算符
^ 按位异或运算符
1.4.10优先级10级
结合方向 左结合 双目运算符
| 按位或运算符 举例:0xfe|0xef 即为1111 1110 与1110 1111按位或运算则答案为:1111 1111 即0xff。
1.4.11优先级11级
结合方向 左结合 双目运算符
&& 逻辑与运算符
1.4.12优先级12级
结合方向 左结合 双目运算符
|| 逻辑或运算符
1.4.13优先级13级
结合方向 右结合 三目运算符
? : 条件运算符
1.4.14优先级14级
结合方向 右结合 双目运算符
= 赋值运算符
+ = 加后赋值运算符 如s+=1表示s=s+1
- = 减后赋值运算符 如s-=1表示s=s-1
* = 乘后赋值运算符
/ = 除后赋值运算符
% = 取模后赋值运算符
< <= 左移后赋值运算符
>>=右移后赋值运算符
&= 按位与后赋值运算符
^=按位异或后赋值运算符
|= 按位或后赋值运算符
1.4.15优先级15级
结合方向 左结合
, 逗号运算符
2.综合作业(6分):小学生口算表达式自动生成系统
2.1.模块流程图
2.2.函数功能及全局变量介绍
void OperateMenu();//游戏操作界面
void GradeOneMenu();//一年级
int RandomNumber(int grade);//生成随机数
char RandomCharacters(int grade);//生成运算符
void AnswerJudgment(double answer, double RightKey);//判断答案对错并且回复
void GradeTwoMenu();//二年级
void GradeThreeMenu();//三年级
生成随机数:生成时先输入难度等级,从而生成一到三位整数
生成运算符:生成时先输入难度等级,由1-3分别是 “-”和“+”、“*”、“/”。
判断答案对错并且回复:根据判断对错随机输出相应的回复鼓励。
2.2.1.全局变量
未设定全局变量QWQ。
2.2.2 菜单相关函数
void OperateMenu();//游戏操作界面
void GradeOneMenu();//一年级
void GradeTwoMenu();//二年级
void GradeThreeMenu();//三年级
2.3.运行结果截图,测试用例。
输入3;
输入
y
-3
输出
小朋友你做对了, 继续加油(太快了没截到图)
2.4.大作业中编程技巧总结
1.可以将函数的定义放在一个头文件中,有利于查找。
2.把主要函数与次要函数分离,避免一页代码太长导致编程困难。
3.在设计程序时对于有重复内容的问题,或者是关联性的问题,可根据(如本题中的年级)其相同点向旁发散,避免定义的变量过多。而写函数也可以简化重复性问题。
4.一定要注意变量和函数的命名,不然会导致代码看不懂(过一段时间后)。
5.对代码多进行注释,有利于他人理解,以及自己后续的工作。
代码提交
请博客作业页面内容+口算系统的全部代码复制到一个word文档中。(记住,要复制过去,不能截图),文档保存好请提交课堂派的作业中。我们会用课堂派对你写的代码进行查重,请务必要独立完成。