• c语言博客3—函数


    0.pta总分

    1.本章学习总结

    1.1函数定义、调用、声明

    函数的定义

    函数的定义首先要对函数确定函数的三个内容
    1.函数的返回值类型
    2.函数的名称
    3.函数的参数
    如定义一个求和函数
    int putSum (int a,int b)
    {
    int sum;
    sum=a+b;
    return sum
    }
    其中函数名称为putSum,函数的返回值类型为整形,函数的参数为a和b

    函数的调用

    #include <stdio.h>
    int main()
    int putSum(int a, int b);
    {
    	int a = 2, b = 3;
    	int c;
    	int putSum(int a, int b);
    	c = putSum(a, b);
    	printf("%d + %d = %d
    ",a, b, c);
    }
    int putSum(int a, int b)
    {
        int sum;
        sum=a+b;
        return sum;
    }
    

    得到结果为2+3=5

    函数的声明

    函数的声明在函数定义后加;并放在头部即可

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

    1.全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。
    2.静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见,每次被调用都使用上一次的值。
    3.局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。
    4.静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

    1.3C数据类型及注意点

    1.整型变量
    int类型
    取值范围(32位):-2^15— 2^15-1
    转换说明:%d
    short int(或简写为short)
    取值范围(16位):-2^15— 2^15-1
    转换说明:%d
    long int(或简写为long)
    取值范围(32位):取值范围(16位)-2^31— 2^31-1
    转换说明:%ld
    2.浮点数
    单精度float
    取值范围:10^-37 —10^37
    转换说明:%f
    双精度double
    取值范围:(2^63— 2^63-1)
    转换说明:%f
    3.字符型
    转换说明:%c
    输入单个字符

    注意点

    1.输入多个字符用getchar()实现
    2.在解决浮点误差问题时,可以利用一个很小的值进行矫正

    1.4C运算符

    逻辑运算符:!
    算术运算符:自增++,自减--,+,-,*,/
    关系运算符:<,>,==,!=等
    逻辑运算符:&&,||

    1.5学习体会

    近段时间主要学习函数的使用以及回顾数据类型,对于函数的编写还不太熟练,应在以后多加练习

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

    2.1流程图




    2.2.函数功能及全局变量介绍

    菜单相关函数
    void OperateMenu();//游戏操作界面

    void OperateMenu()//游戏操作界面
    
    {
    
    	char option;
    
    	int i;
    
    	int temp;
    
    	system("cls");//清屏
    
    
    
    	do
    
    	{
    
    		system("cls");
    
    		printf("******************************************
    ");
    
    		printf("1.一年级口算
    ");
    
    		printf("2.二年级口算
    ");
    
    		printf("3.三年级口算
    ");
    
    		printf("4.退出系统
    ");
    
    		printf("******************************************
    ");
    
    		printf("请输入您的选择:");
    
    		scanf(" %c", &option);
    
    		switch (option)
    
    		{
    
    		case '1':
    
    			system("cls");
    
    			GradeOneMenu();
    		    break;
    
    		case '2':
    			system("cls");
    			GradeTwoMenu();
    			//GradeTwoMenu();
    			break;
    
    		case '3':
    			system("cls");
    			GradeThreeMenu();
    			//GradeThreeMenu();
    			break;
    
    		case '4':
    
    			printf("
    谢谢您的参与!
    ");
    
    			Sleep(500);
    
    			exit(0);
    
    		default:
    
    			printf("您输入不对,只能输入1,2,3,4,请重输!
    ");
    
    			Sleep(500);
    
    		}
    
    	} while (!(option >= '1' && option <= '4'));
    
    }
    

    void GradeOneMenu();//一年级
    void GradeTwoMenu();//二年级
    void GradeThreeMenu();//三年级
    出题相关函数
    int putNum(int grade)//生成操作数,用rand随机生成数字,用switch进行转化为运算符,对不同年级对运算符进行限制

    int putNum(int grade)//生成操作数
    {
    	int num;
    	switch (grade)
    	{
    	case 1:num = 1 + rand() % 9; break;
    	case 2:num = 1 + rand() % 99; break;
    	case 3:num = 1 + rand() % 99; break;
    	}
    	return num;
    }
    

    int putOperation(int grade)//生成运算符,用rand随机生成数字,对不同年级对数值进行限制

    int putOperation(int grade)//生成运算符
    {
    	char op;
    	int sum = 0;
    	switch (grade)
    	{
    	case 1:sum = 1 + rand() % 1; break;//一年级
    	case 2:sum = 1 + rand() % 3; break;//二三年级
    	}
    	switch (sum)
    	{
    	case 1:op = '+'; break;
    	case 2:op = '-'; break;
    	case 3:op = '*'; break;
    	case 4:op = '/'; break;
    	}
    	return op;
    }
    

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

    一年级题目,作答3次,全部正确



    二年级题目,作答5次,中途退出




    2.4大作业中编程技巧总结

    1.分多个cpp文件,可以让代码更简洁,查阅方便
    2.运用srand((unsigned)time(NULL));产生真正的随机数

  • 相关阅读:
    CloudFlare CDN折腾记-优化设置
    验证 Googlebot (检查是否为真的Google机器人)
    (C#) SQLite数据库连接字符串
    Xamarin.iOS开发初体验
    Windows平台下利用APM来做负载均衡方案
    cloudflare的NS服务器地址
    CloudFlare Support
    菜刀php过waf
    opencv3寻找最小包围矩形在图像中的应用-滚动条
    【教程】如何修改路由表?
  • 原文地址:https://www.cnblogs.com/f2002/p/14057240.html
Copyright © 2020-2023  润新知