zoukankan      html  css  js  c++  java
  • 第四篇博客

    这个作业属于哪个班级 C语言--网络2012
    这个作业的地址 C博客作业03--函数
    这个作业的目标 学习如何设计函数、C语言基本数据类型
    姓名 卢伟杰

    0.展示PTA总分

    1.本章学习总结

    1.1 函数定义、调用、声明

    • 函数定义的一般形式
         函数类型  函数名  (形式参数表)   /*函数首部*/
         {
             函数实现过程                  /*函数体*/
         }
    
         形参表中的格式为: 类型1 形参1, 类型2 形参2,……
         形参数量可以是一个、多个,或者没有形参。
    
    • 函数调用
        一般形式 : 函数名 (实际参数表)  //实参可以是常量、变量和表达式。
    
        两种情况:
         A. 赋值语句
            volume = cylinder (radius, height);
         B. 输出函数的实参
            printf ("%f", cylinder (radius, height));
    
        函数结果的返回形式 :return 表达式;
    
        不返回结果的函数 :函数类型void 表示不返回结果、省略return;
    
    • 函数声明的一般形式

      函数类型 函数名 (参数表);

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

    • 局部变量

      使用的变量定义在函数地内部,有效使用范围局限于所在的函数内。

      使用局部变量可以避免各个函数之间的干扰。

    • 全局变量

      一般情况把全局变量定义在程序的最前面,即第一个函数的前面。

      当一些变量需要被多个函数共同使用,可定义全局变量。

      可以帮助解决函数多结果返回的问题。

    • 静态局部变量

      静态变量定义形式 :static 类型名 变量表

      存放在静态存储区,不会因函数调用结束而被系统回收。

      由于存储单元被保留,一旦含有静态局部变量的函数被再次调用,则被重新激活;

      上次函数调用后的值仍然保存着,可供本次调用继续使用,持续到系统结束。

    1.3 C数据类型及注意点

    类型名 字节长度
    int 4
    char 1
    short 2
    long 4
    float 4
    double 8
    • 字符型输入与输出问题
        int    printf("%d", ...);
               scanf("%d", &...);
    
        double  printf("%f", ...);
                scanf("%lf", &...);
      
        float   printf("%f", ...);
                scanf("%f", &...);
       
        char    printf("%c", ...);
                scanf("%c", &...);
    
        输出时可以加入.x如 :%。2f 来控制小数位数。
    
        %lf     表示四舍五入保留整数;
        %02d    (可输出)02来补零;
        %2d     数字宽度为二,不够用空格补零;
        %6.1d   数字宽度为6,保留一位小数。
    
        ch = getchar() : 等待用户输入一个字符,赋值给变量ch.
        
    

    1.4 C运算符

    算术运算符 用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
    关系运算符 用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。
    逻辑运算符 用于逻辑运算。包括与(&&)、或(
    位操作运算符 参与运算的量,按二进制位进行运算。包括位与(&)、位或(
    赋值运算符 用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,
    特殊运算符 有括号(),下标[],成员(→,.)等几种。

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

    函数功能及全局变量介绍

         void OperateMenu();            //游戏操作界面
    
         void GradeOneMenu();           //一年级
    
         int computerNumber(int grade); //生成一年级的操作数
    
         char getOperator();            //生成一年级的运算符
    

    模块流程图

    一年级模块流程图

    代码执行运用的函数

    代码主要执行

                    int titleNumber;
    		scanf("%d", &titleNumber);
    
    		if (titleNumber > 0)
    		{
    			int countNumber = 1;//完成的题目数量
    			int rightNumber = 0;//正确的题目数量
    			double accuracyRight;  //题目正确率
    
    			for (countNumber; countNumber <= titleNumber; countNumber++)
    			{
    				int num1, num2;                             /*1.生成操作数函数*/
    				srand(time(0));
    				num1 = computerNumber(1);
    				num2 = computerNumber(1);
    
    				char operator;                              /*2.生成随机运算符函数*/
    				operator = getOperator();
    
    				printf("%d%c%d=
    ", num1, operator, num2);  /*3.生成表达式函数,并输出展示*/
    
    
    				printf("是否继续答题y/n:");
    				char ch;
    				scanf("
    %c", &ch);
    				if (ch == 'n')
    				{
    					Sleep(500);
    					OperateMenu();
    					return;
    				}
    				else if (ch == 'y')
    				{
    					int sum;
    					int answer;
    					int choice;
    
    					if (operator == '+')
    					{
    						choice = 1;
    					}
    					else if (operator == '-')
    					{
    						choice = 2;
    					}
    					
    					switch (choice)
    					{
    					case 1:
    						sum = num1 + num2; break;
    					case 2:
    						if (num1 < num2)
    						{
    							int temp;
    							temp = num1;
    							num1 = num2;
    							num2 = temp;
    						}
    						sum = num1 - num2; break;
    					}
    
    					printf("请输入你的答案:");
    					scanf("%d", &answer);
    
    					if (answer == sum)
    					{
    						printf("回答正确,你真棒!
    ");
    						rightNumber++;
    					}
    					else if (answer != sum)
    					{
    						printf("回答错误,继续加油!
    ");
    						printf("答案是:%d
    ", sum);
    					}				
    				}
    			}
    			accuracyRight = (rightNumber * 1.0 / titleNumber) * 100;
    			int percent = '%';
    			printf("你的正确率为%.1f%c,请继续努力!", accuracyRight,percent);
    
    			return;
    		}
    		else
    		{
    			Sleep(500);
    			OperateMenu();
    			return;
    		}
    

    运行结果截图、测试用例


    大作业中编程技巧总结

    • 画流程图十分重要!!!!!这样能使各个条件更加清晰易懂!循环和分支结构能更好的使用。

    • 函数的使用能减少大量代码的使用,只要一次定义就能多次使用。

    • 过程中注意return的正常使用,不然可能会闪退。

    代码提交

    • 请博客作业页面内容+口算系统的全部代码复制到一个word文档中。文档保存好请提交课堂派的作业中。
  • 相关阅读:
    ThreadPoolExecutor线程池参数设置技巧
    CountDownLatch与join的区别和联系
    数据库的隔离级别
    Spring事务管理的demo
    Java中isAssignableFrom的用法
    Java注解的基本概念和原理及其简单实用
    System.getProperty("line.separator") 是什么意思?
    关于“100g文件全是数组,取最大的100个数”解决方法汇总
    Intellij IDEA 添加jar包的三种方式
    亿级Web系统搭建 Web负载均衡的几种实现方式(阿里)
  • 原文地址:https://www.cnblogs.com/eau2077/p/14057843.html
Copyright © 2011-2022 走看看