• 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 = 
    ", 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;
     
    }
    
  • 相关阅读:
    Linux下基于PAM机制的USB Key的制作
    IP-route管理路由
    Linux下CPU主板监控工具lm_sensors
    两个网卡隔离方法
    关机后内存的数据是怎么丢失的呢?
    6.0 移动端页面布局
    CyberPlayer 使用教程
    5.10 HTML5 音频和视频
    让Ecshop网店系统用户自动登陆
    設定 Bootstrap/SASS/Bower/gulp (Windows平台)
  • 原文地址:https://www.cnblogs.com/whm520/p/14060803.html
Copyright © 2020-2023  润新知