这个作业属于哪个班级 | C语言--网络2011/2012 |
---|---|
这个作业的地址 | C博客作业03--函数 |
这个作业的目标 | 学习如何设计函数、C语言基本数据类型 |
姓名 | 吴慧敏 |
0.展示PTA总分
1.本章学习总结
1.1 函数定义、调用、声明
- 函数定义的一般形式为:
函数类型 函数名 (形式参数表) /*函数首部*/
{
函数实现过程 /*函数体*/
}
注意:每个形参前面的类型必须分别写明;函数首部后面不能加分号,它和函数体一起构成完整的函数定义。
- 函数调用:
函数调用的一般形式为:
函数名 (实际参数表)
参数分为实参和形参:
实参:主调函数的参数被称为实参,如radius和height。
形参:函数定义时,位于其首部的参数被称为形参,如r和h。
注意:首先从主函数main开始,如果遇到函数调用,则转而执行相应的函数。
- 函数声明:
函数声明的一般形式为:
函数类型 函数名 (参数表);
1.2 全局、局部变量、静态局部变量
*全局变量:
全局变量的作用范围是从定义开始到程序所在文件的结束,它对作用范围内所有的函数都起作用。
局部变量:
其有效使用范围在所在函数中;其作用是最大程度确保了各函数之间的独立性,避免函数之间相互干扰。
- 静态局部变量:
静态变量定义格式:
static 类型名 变量表
作用:
函数上次调用后的值仍然保存,可供本次调用继续使用。
1.3 C数据类型及注意点
- c数据类型:
整数类型:eg:char类型,int类型。
浮点类型:eg:float类型,double类型。
void 类型:函数返回为空。 - 注意点:实数在计算机中只能近似表示,运算中也会产生误差。
1.4 C运算符
- 逻辑运算符:!,&&,||
- 算数运算符:++,--,+,-(单目)
*,/,%,+,-(双目) - 关系运算符:<,<=,>,>=,==,!=
- 条件表达式:?:
- 赋值运算符:=,+=,-=,*=,/=,%=
- 逗号运算符:,
2.综合作业:小学生口算表达式自动生成系统
2.1.模块流程图
一年级模块流程图
二年级模块流程图
三年级 模块流程图
2.2函数功能及全局变量介绍
2.2.1.全局变量
2.2.2 菜单相关函数
2.2.3 出题相关函数
2.3运行结果截图,测试用例
2.4大作业中编程技巧总结
代码提交
1. 大作业代码
1.1 头文件代码
void OperateMenu();//游戏操作界面
void GradeOneMenu();//一年级
int operandsKey(int grade);//生成操作数函数
char opera(int grade);//生成随机运算符函数
int ComputerKey(int numberOne, int numberTwo, char b);//计算结果函数
void Correct();//回答正确函数
void Incorrect();//回答错误函数
#include"HeadfileCalculation.h"
1.2 主函数所在cpp文件
int main(void)
{
srand(time(NULL));//生成随机数种子
OperateMenu();//游戏操作界面
return 0;
}
#include"HeadfileCalculation.h"
1.3 其他函数所在cpp文件1
void GradeOneMenu()//一年级
{
int digit1, digit2;
int UserKey, ComputerKey;
char oprator;//运算符
char ch;//用户输入y/n
digit1 = operandsKey();/*生成操作数*/
digit2 = operandsKey();/*生成操作数*/
oprator = opera();/*生成随机运算符*/
while (oprator == '-' && digit1 < digit2)//结果不能是负数
{
digit2 = operandsKey(1);
}
printf("%d %c %d =
", digit1, oprator, digit2);//输出表达式
printf("是否继续答题y/n:");
scanf("
%c", &ch);
if (ch == 'n')
{
Sleep(1000);
OperateMenu();
return;
}
else//选择答题
{
printf("请输入你的答案:
");
scanf("%d", &UserKey);//用户结果
ComputerKey = ComputerKey(digit1, digit2, oprator);//计算机的结果
if (UserKey == ComputerKey)
{
Correct();//正确提示
Sleep(1000);
}
else
{
Incorrect();//错误提示
Sleep(1000);
}
}
}
}
1.4 其他函数所在cpp文件2
int ComputerKey(int numberOne, int numberTwo, char b)//计算结果函数
{
int result = numberOne;
if (b == '+') { result = result + numberTwo; }
if (b == '-') { result = result - numberTwo; }
return result;
}
void Correct()//正确提示函数
{
switch (rand() % 4)
{
case 0:
printf("Great!
");
break;
case 1:
printf("答对了!
");
break;
case 2:
printf("答案正确
");
break;
case 3:
printf("Wonderful!
");
break;
}
}
void Incorrect()//错误提示函数
{
switch (rand() % 4)
{
case 0:
printf("答案错误
");
break;
case 1:
printf("加油,你可以的!
");
break;
case 2:
printf("继续努力哦~
");
break;
case 3:
printf("可以再试一次哦~
");
break;
}
}
int operandsKey()//生成操作数
{
int num;
num = 1 + rand() % 9;//1--9
return num;
}
char opera(int grade)//生成随机运算符函数
{
int selt;
char op;
selt = rand() % 2;//0 1
switch (selt)
{
case 0:
op = '+';
break;
case 1:
op = '-';
break;
}
return op;
}