函数

  • Post author:
  • Post category:其他



内容预览

  • 内置函数

     头文件 ctype.h
     int  isuper(int)		//是否为大写字母
     int  islower()			//是否为小写字母
     int  isdigit()			//是否为数字
     int  isalpha()			//是否为字母
     int  toupper()			//对应的大写字母
     int  tolower()			//对应的小写字母
     
     头文件 math.h
     double  ceil(double)		//向上取整(进一)
     double  floor()			//向下取整(去尾)
     double  sqrt()				//平方根
     double  pow(a, b)			//a的b次幂
     int  	 abs(int)			//绝对值
     
     头文件 stdlib.h
     int  	rand()				//用来产生随机数
     int  	srand()				/设置rand()产生随机数的种子
     void  	exit(int)			//终止程序,0-正常退出
     void  	system(const char *)//执行dos命令
     
     程序示例
     		ASCII码对应的字符
     		将输入的阿拉伯数字转为汉字数字
     
     内置函数补充
     		malloc()函数
     		calloc()函数
    
  • 自定义函数

     概念
     示例
    



正文


内置函数

  • 内置函数:

     1.由C语言提供
     2.需要在程序前包含定义函数的头文件
    

常用内置函数

  • 头文件 ctype.h

     int  isuper(int)		//是否为大写字母
     int  islower()			//是否为小写字母
     int  isdigit()			//是否为数字
     int  isalpha()			//是否为字母
     int  toupper()			//对应的大写字母
     int  tolower()			//对应的小写字母
    
    #include <stdio.h>
    #include <ctype.h>
    int main()
    {
        //常用内置函数    -0表示假,非0表示真
        printf("%d\n", isupper('a'));   //返回字符是否为大写字母
        printf("%d\n", islower('a'));   //返回的字符是否为小写字母
        printf("%d\n", isalpha('-'));   //返回的字符是否为字母
        printf("********************************************\n");
        printf("%d\n", isdigit(50));    //如果传入的是数字,表示是ASCII码
        printf("%d\n", isdigit('9'));
        printf("%c\n", toupper('a'));   // 转换大小写
        return 0;
    }
    
  • 头文件 math.h

     double  ceil(double)		//向上取整(进一)
     double  floor()			//向下取整(去尾)
     double  sqrt()				//平方根
     double  pow(a, b)			//a的b次幂
     int  	 abs(int)			//绝对值
    
    #include <stdio.h>
    #include <math.h>
    int main()
    {
        //ceil - 进一法    floor - 去尾法
        //进一法变大,去尾法变小
        printf("%.2lf\n", ceil(-98.1));
        printf("%.2lf\n", floor(-98.9));
        printf("********************************************\n");
        printf("%.2lf\n", sqrt(9)); //求平方根
        printf("%.2lf\n", pow(5, 2));   //求第一个数字的第二个数字次幂
        printf("%.2d\n", abs(-98));    //求绝对值,整型变量
        return 0;
    }
    
  • 头文件 stdlib.h

     int  	rand()					//用来产生随机数
     int  	srand()					//设置rand()产生随机数的种子
     void  	exit(int)				//终止程序,0-正常退出
     void  	system(const char *)	//执行dos命令
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        //1.设置随机种子
        srand(time(NULL));
        //2.取随机数
        int num = rand();
        printf("%d\n", num);
        printf("********************************************\n");
        exit(0);    //0 - 正常退出应用程序,非零就是不正常退出
        //system();函数应用
        system("shutdown /r /t 180");   //180秒后关机
        system("shutdown /a");
        printf("这里是普通文字,非常普通!\n");
    
        //设置背景色
        system("color 4E");
        system("pause");
        system("cls");  //清屏 - 可以做简单的动画效果
    	return 0;
    }
    
  • demon

    ASCII码对应的字符

    #include <stdio.h>
    int main()
    {
        //ASCII码对应的字符
        printf("********************************************\n");
        printf("0-126ASCII码对应的字符是:");
        int i;
        for(i = 0; i < 127; i++)
        {
            printf("%3d对应的字符是:%c\n", i, i);
        }
        return 0;
    }
    

    将输入的阿拉伯数字转为汉字数字

    #include <stdio.h>
    int main()
    {
        //如何将用户输入的小写数字转换成中文大写
        //1234-壹仟贰佰叁拾肆元
        int i = 0;
        int count = 0;   //count数字的位数
        int temp;        //临时变量
        int money;
        int moneys[6];   //默认支持6位数字
        char unit[10][4] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        printf("************************************************************\n");
        printf("请输入金额:");
        scanf("%d", &money);
        //判断用户输了几位数字?将每一位数字取出来
        while(money != 0)
        {
            moneys[i] = money % 10;
            money /= 10;    //去掉最后一位
            i++;
            count++;
        }
        printf("用户输入的数字一共有%d位!\n", count);
        printf("************************************************************\n");
        printf("数组中的内容:\n");
        for(i = 0; i < count; i++)
            printf("%d", moneys[i]);
        //逆序排列
        for(i = 0; i < count / 2; i++)
        {
            temp = moneys[i];
            moneys[i] = moneys[count - i -1];
            moneys[count - i -1] = temp;
        }
        printf("\n************************************************************\n");
        printf("排序后数组中的内容:\n");
        for(i = 0; i < count; i++)
            printf("%d", moneys[i]);
        printf("\n中文大写:\n");
        for(i = 0; i < count; i++)
            printf("%s", unit[moneys[i]]);
        printf("\n************************************************************\n");
        return 0;
    }
    

内置函数补充

  • malloc()函数

      全称memory allocation,动态内存分配
      分配长度为N字节的内存块
      函数原型:(type *)malloc(unsigned int num_bytes)
      		teye		——字节类型
      		num_bytes	——字节大小
      分配成功,指向分配内存的指针(初始值不确定)
      分配不成功,返回空指针NULL
      内存不再使用时,应使用free()函数将其释放
    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        //malloc函数,动态分配内存
        int i;
        int *nums;
        nums = (int *)malloc(20);   //为前面的指针动态分配20个字节的空间
        //为指针动态分配空间后,指针就变成了数组
    
        for(i = 0; i < 5; i++)
        {
            printf("请输入第%d个元素:", i + 1);
            scanf("%d", nums + i);
        }
        printf("\n******************************\n");
        printf("数组元素为:\n");
        for(i = 0; i < 5; i++)
        {
            printf("%d\n", *(nums + i) );
        }
        free(nums);     //释放动态分配的内存,释放的指针必须是初始分配的地址
        nums = NULL;    //良好的编程习惯
        return 0;
    }
    
  • calloc()函数

     calloc(num_element, size_element,) 分配所需的内存空间,并返回一个指向它的指针
     			 num_element,	——被分配的元素个数
     			 size_element,	——元素的大小
     该函数返回一个指针,指向已分配的内存;请求失败,则返回NULL
     malloc 和 calloc 之间的不同点是,malloc 不会设置内存为零,而 calloc 会设置分配的内存为零
    
    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        //calloc不需要强制转换
        int * num;
        int i;
        num = calloc(5, sizeof(int));
        num[4] = 9;
        printf("*****************************\n");
        for(i = 0; i < 5; i++)
        {
            printf("%d\n", num[i]);
        }
        free(num);
        return 0;
    }
    


自定义函数

  • 自定义函数:

     return_type function_name(data_type , ... , ... )
     自定义函数三要素:返回值类型;	函数名;	参数列表
    
    #include <stdio.h>
    //函数原型
    int sun(int, int);	//返回值为整型;函数名sum;参数是两个整型变量
    int main()
    {
    	int a = 2;
    	int b = 4;
    	int result = sum(a, b);	
    	printf("结果是:%d", result);
    }
    //函数定义
    int sum(int num1, int num2)	
    {
    	return num1 + num2;		//返回值
    }
    
  • 注意

      1. 函数原型与函数定义类似,函数原型以分号结尾
      2. 函数原型中的参数名称可以省略,可以只写参数类型
      3. 返回值
     		 	关键字:return
     			只能返回一个,不能返回多个值
     			返回值类型必须与原型中的返回值类型匹配
     			return会立即终止函数并返回,可返回空值
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    //函数原型
    void calcCircle();      //计算圆面积
    void calcRectangle();   //计算矩形面积
    void calcTriangle();    //计算三角形面积
    int calcSum();          //求1-100之间的偶数和
    
    /** 计算圆的面积(函数实现)*/
    void calcCircle()
    {
        double radius, s;   //半径和面积
        printf("请输入圆的半径:");
        scanf("%lf", &radius);
    
        s = 3.14 * pow(radius, 2);  //圆的面积 = Π * 半径的平方
        printf("半径为%.2lf的圆面积为:%.2lf\n", radius, s);
    }
    /**
     * 计算矩形的面积(函数实现)
     */
    void calcRectangle()
    {
        double s;
        double width, height;    //宽、高
        printf("请输入矩形的宽和高:");
        scanf("%lf%lf", &width, &height);
        if(width <= 0 || height <= 0)
        {
            printf("宽和高不能为负数,你是不是傻!\n");
            return;
        }
        s = width * height;
        printf("宽%.2lf和高%.2lf矩形的面积为:%.2lf\n", width, height, s);
    
    }
    /**
     * 计算三角形的面积(函数实现)
     */
    void calcTriangle()
    {
        double base, height;    //底、高
        double  s;
        printf("请输入三角形的宽和高:");
        scanf("%lf%lf", &base, &height);
        s = base * height;
        printf("宽%.2lf和高%.2lf矩形的面积为:%.2lf\n", base, height, s);
    }
    
    /**
     * 求1-100之间的偶数和
     */
    int calcSum()
    {
        //1-100之间的偶数和
        int sum = 0;
        int i;
        for(i = 1; i < 100; i++)
        {
            if(i % 2 == 0)
                sum += i;
        }
        return sum; //将计算好的结果返回
    }
    int main()
    {
    	/**
    	 *  三种图形的面积计算公式如下:
    	 *  圆:s = PI * r * r;
    	 *  矩形:s = width * height;
    	 *  三角形:s = width * height / 2;
    	 *  使用函数分别实现三种图形的图形面积计算,打印计算结果
    	  */
    
        //书写函数的步骤:完成函数三要素
        //1.需要返回值吗? 2.函数名是什么?3.需要给这个函数参数吗?
        calcCircle();       //调用计算圆面积的函数
        calcRectangle();    //调用计算矩形面积的函数
        calcTriangle();     //调用计算三角形面积的函数
        printf("************************************\n");
        //如果函数有返回值,调用时,记得使用对应类型的变量来接收
        int sum = calcSum();
        printf("1-100之间的偶数和为:%d\n", sum);
        return 0;
    }
    



版权声明:本文为weixin_46161549原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。