C博客作业03--函数

| 这个作业属于哪个班级 | 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 = \n", digit1, oprator, digit2);//输出表达式
 
	printf("是否继续答题y/n:");
	scanf("\n%c", &ch);
	if (ch == 'n')
	{
		Sleep(1000);
		OperateMenu();
		return;
	}
	else//选择答题
	{
		printf("请输入你的答案:\n");
		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!\n");
		break;
	case 1:
		printf("答对了!\n");
		break;
	case 2:
		printf("答案正确\n");
		break;
	case 3:
		printf("Wonderful!\n");
		break;
	}
}
 
void Incorrect()//错误提示函数
{
	switch (rand() % 4)
	{
	case 0:
		printf("答案错误\n");
		break;
	case 1:
		printf("加油,你可以的!\n");
		break;
	case 2:
		printf("继续努力哦~\n");
		break;
	case 3:
		printf("可以再试一次哦~\n");
		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;
 
}
posted @ 2020-11-30 22:06  蓝胖子WHM  阅读(75)  评论(0编辑  收藏  举报