zoukankan      html  css  js  c++  java
  • C语言博客作业03--函数

    这个作业属于哪个班级 C语言--网络2011/2012
    这个作业的地址 C博客作业00--我的第一篇博客
    这个作业的目标 学习如何设计函数、C语言基本数据类型
    姓名 王鑫

    0.展示PTA总分

    1.本章学习总结

    本章学习的函数,让我们更能了解C语言,像我们用的一些printf,scanf就是函数,是被定义过的在头文件里的。
    用了函数可以使我们的代码更加简洁,提高可读性。

    1.1函数定义、调用、申明

    int function(int a)//函数申明
    int main()
    {
    int a =function(1);//函数调用
    //这里的实参可以传入数字,数组,算式。(但是这些必须是有值的,非变量)
    }
    
    int function(int a)//函数定义
    *在开始的“int”是这个函数的返回类型。
    括号中间的是形参,当函数调用的时候要传入实参*
    {
    语句//这里就是数据传入执行的语句
    return a;
    /*返回的类型要是函数定义的类型
    如果函数类型是void;那么就可以不用返回*/
    }
    

    把一些重复使用的语句设置为一个函数,在需要的时候可以调用,可以减少空间。也能让代码可读性提高,逻辑清晰。是很方便的方法。

    1.2 全局、局部变量、静态局部变量

    • 把你想要运用到很多地方的变量写在函数外面,这个变量就可以在全局上使用。叫做全局变量。
    • 而在函数内定义的变量就是这个只能在这个函数使用的局部变量。
    • 而静态变量,它有在内存中占有一块地方,这个地方是不会再次改变。所以静态变量值初始化一次,下一次使用这个静态变量,它的值是上次静态变量的值。静态变量可以不用赋值,它自己是0的初值。
    int globalVariable=0;//全局变量
    static int GlobalStaticVariables;//全局静态变量,初值为0
    int main()
    {
    int localVariable=0;//局部变量
    static int LocalStaticVariables;//局部静态变量
      globalVariable++;
      GlobalStaticVariables++;
     add();
    printf("%d",LocalStaticVariables);
    }
    void add()
    {
    LocalStaticVariables++;
    }
    

    最后LocalStaticVariables=1;

    1.3C数据类型及注意点

    名称 类型名 数据长度 取值范围
    [有符号]整型 int 32位 -2147483648~2147483647
    有符号]短整型 short[int] 16位 -32768~32767
    [有符号]长整型 long [int] 32位 -2147483648~2147483647
    无符号整型 unsigned[int] 32位 0~4294967295
    无符号短整型 unsigned short[int] 16位 0~65535
    无符号长整型 unsigned long [int] 32位 0~4294967295
    字符型 char 8位 0~255
    单精度浮点型 float 32位 约±(10-38~1038
    双精度浮点型 doule 64位 约±(10-308~10308
    • 这个表格里是基本的数据类型,我们平时常用的是整型和字符型与浮点型。
    • 数据有他自己的取值范围,取得值过大会导致数据溢出。

    1.3.1整型

    • 如果用来做除法,结果只取整数部分,要把计算结果用浮点数定义,且计算的公式带有小数。

    1.3.2浮点数

    因为对浮点数了解较少,我上网查询了相关资料。

    • 由于计算机内部以二进制保存,所以十进制的有限位的小数,在计算机内部会是一个无限位的小数。
    • 解决此类问题是时可以加上一个很小的小数,如0.000001。
    • 当前面的计算都是整数时,但结果有小数时,记得要乘以1.0,这样结果才会是小数。

    1.3.3字符型

    • 注意当上一句的输出有换行符号时,输入字符时要在百分号前面加一个换行符号或者空格。
    printf("是否继续,输入y/n
    ");
    scanf("
    %c");
    

    1.4C运算符

    目数 单目 单目 单目 单目 双目 双目 双目 双目 双目
    运算符 ++ -- + - + - * / %
    名称 自增 自减 正值 负值 模(求余)

    *n++和++n都是最后n的值加一但是它们的不同之处是n++这个式子还是原来的值,而++n的值是原来的值加1.

    • 自增符和自减前面都必须是变量,不能3++。

    1.4.2位运算符

    p q p & q p 或 q p ^ q
    0 0 0 0 0
    0 1 0 1 1
    1 1 1 1 0
    1 0 0 1 1

    2.综合作业 小学生口算表达式自动生成系统

    2.1模块流程图

    2.1.1总流程图

    2.1.2一年级流程图

    2.1.3二年级流程图

    2.1.4三年级流程图

    2.2函数功能介绍

    • 我在口算大作业中设置了下面这些函数
    void OperateMenu();//游戏操作界面
    void GradeOneMenu();//一年级
    void GradeTuoMenu();//二年级
    void GradeThreeMenu();//三年级计算
    int random();//随机个位数字
    int randomTen();//生成两位数的
    char oprate(int a);//生成运算符号
    void rightAnswer();//正确答案时的肯定话语
    void wrong();//做错时的鼓励
    int judgeReasonable(int num1, int num2, char op);//判断符号与数据是否合理
    void judgeAnswer(int num1, int num2, char op, int answer);//判断答案对错
    void output(int num1, int num2, char op);//输出函数
    

    2.2.1.全局变量

    我设置了三个全局变量

    static int rightNum;//正确数量
    static int wrongNum;//错误数量
    double accuracy;//正确率
    

    这样保证不管是一年级还是二年级 三年级我都能计算对错的题数总和,来计算正确率。
    然后正确率也可以算出来。

    2.2.2.菜单相关函数

    这个菜单的函数我直接使用老师给的模板

    void OperateMenu();//游戏操作界面(是否进入三个不同年级计算的页面)
    void GradeOneMenu();//一年级(做题或退出的一年级操作页面)
    void GradeTuoMenu();//二年级(做题或退出的一年级操作页面)
    void GradeTuoMenu();//三年级(做题或退出的一年级操作页面)
    
    

    分别是开始进入三个年级操作界面的操作界面和
    一、二、三年级是否做题的操作界面

    void OperateMenu();//游戏操作界面(是否进入三个不同年级计算的页面)

    void GradeOneMenu();//一年级(做题或退出的一年级操作页面)

    void GradeTuoMenu();//二年级(做题或退出的一年级操作页面)

    void GradeTuoMenu();//三年级(做题或退出的一年级操作页面)

    2.2.3 出题相关函数

    出题相关的函数我设置了下面这些函数

    int random();//随机个位数字
    int randomTen();//生成两位数的
    char oprate(int a);//生成运算符号
    void rightAnswer();//正确答案时的肯定话语
    void wrong();//做错时的鼓励
    int judgeReasonable(int num1, int num2, char op);//判断符号与数据是否合理
    void judgeAnswer(int num1, int num2, char op, int answer);//判断答案对错
    void output(int num1, int num2, char op);//输出函数
    
    • random();//随机个位数字:生成计算的数字,并且是个位的

    • randomTen();//生成两位数的:生成计算的数字,两位的

      *char oprate(int a);//生成运算符号

      *void rightAnswer();//正确答案时的肯定话语

      *void wrong();//做错时的鼓励

      *int judgeReasonable(int num1, int num2, char op);//判断符号与数据是否合理

    *void judgeAnswer(int num1, int num2, char op, int answer);//判断答案对错

    *void output(int num1, int num2, char op);//输出函数

    2.3.运行结果截图,测试用例。

    之后回到原来的页面

    2.4.大作业中编程技巧总结

    • 不同年级有不同运算符,我设置了传入的形参,来提醒函数做不同的返回。
    • 当年级为三时,随机数可以有四种,二年级为一二时随机数只能有两种,以此来控制符号。
    char oprate(int grade)//生成运算符号
    {
    	char op;
    	int temp;
    	srand(time(0));
    	if (grade == 3)
    	{
    		temp = 1 + rand() % 4;
    	}
    	else 
    	{
    		temp = 1 + rand() % 2;
    	}
    	switch (temp)
    	{
    	case 1:op = '+'; break;
    	case 2:op = '-'; break;
    	case 3:op = '*'; break;
    	case 4:op = '/'; break;
    	}
    
    	return op;
    
    }
    
    • 老师上课时教我们的清屏与睡眠
    Sleep(500);//睡眠
    system("cls");//清屏
    

    使用清屏就可以让之前的留在窗口的东西清除,使得页面清晰、美观。
    而有的时候我们需要留着界面返回的东西一会,然后还要清屏时,就可以在清屏前睡眠,这样这些界面可以停留相对应的毫秒。

    • 可以在函数中间放入函数,来使界面返回到想要的界面。
      像在一年级的界面中如果选择不想做题,就去到游戏开始界面。
  • 相关阅读:
    【json的处理】一、Gson处理
    【校验处理】三、Spring Validation 校验处理
    【校验处理】二、SpringBoot Validate 统一处理
    【校验处理】一、Java Bean Validation验证
    div 固定宽高 水平垂直居中方法
    vue 修改ElementUI样式(非全局修改)
    js --- execCommand('copy')复制文本到剪切板换行符不生效
    C#枚举(一)使用总结以及扩展类分享
    php执行时长
    关于PHP的编码格式导致的乱码
  • 原文地址:https://www.cnblogs.com/xiechi/p/14056698.html
Copyright © 2011-2022 走看看