zoukankan      html  css  js  c++  java
  • C语言----函数(基础篇七)

      好久没有撸博客了,落下好多东西。近期回来老家了,换了个工作,有点时间正好系统性的学习完C吧。今天是比较重要的函数。

      库函数 

      我们平时使用的printfscanf都是库函数,除此之外还有常用的求平方根函数sqrt,做游戏用的rand等等也是库函数。使用库函数时要使用#include宏命令来包含有库函数的文件。

      程序1

        求2的平方根。

     1 /* 7_1: 求2的平方根 */
     2 #include <stdio.h>
     3 #include <math.h>
     4 
     5 /* 主函数(父函数) */
     6 main()
     7 {
     8     double a;
     9     a = sqrt(4);   /*调用库函数求平方根*/
    10     printf("%lf
    ", a);
    11 }
    View Code

      程序2

        “随机”表示没有规律,随机函数就表示一种没有规律的函数,这种函数可以模拟很多现实的事务,比如洗扑克牌,摸奖,很多MP3播放器的随机播放模式等等。

        要在C语言中使用随机函数,需要调用srand和rand这两个函数。srand是随机种子,rand表示在0~32767之间产生一个随机整数。

     1 #include <stdio.h>
     2 #include <math.h>
     3 #include <time.h>   //time 函数头文件
     4 #include <stdlib.h> //rand 函数头文件
     5 
     6 main()
     7 {
     8     int i, n, m;    //循环变量,用户猜的面,电脑随机产生的面
     9         srand(time(0));
    10         for ( i = 0; i < 5; i++)
    11         {
    12             printf("
    你猜这次是正面还是反面?(0:正面,1:反面)
    ");
    13             scanf_s("%d", &n);
    14             m = rand() % 2;  //硬币只需要0和1数字表示两个面,这里除以2的余数即可
    15 
    16             //数字转化成文字显示在屏幕上
    17             if (m == 0)printf("答案是:正面
    ");
    18             else printf("答案是:反面
    ");
    19 
    20             //判断用户是否猜对啦
    21             if (n == m) printf("你猜对了
    ");
    22             else printf("你猜错了
    ");
    23         }
    24 }
    View Code

      函数的作用 

        1、减少重复代码的编写。

        2、将一个大项目按功能分解成函数,让多个程序员分别设计。也就是分工合作,增加效率。

      自定义函数

        自定义函数的格式:

          返回值的类型 函数名(类型名 形式参数1,类型名 形式参数2,…)

          {

            若干语句

            …

            return 表达式;

          }

       程序3

     1 // 7-3 简单的自定义函数
     2 #include <stdio.h>
     3 /*
     4 1,初学者最好将自定义函数放在前面
     5 2,v1 和 v2 在这里叫“形式参数”,fun 前面的int 表示会返回一个整数
     6 */
     7 
     8 
     9 double fun(double v1, double v2)
    10 {
    11     double d = v1 - v2;
    12         return d;
    13 }
    14 
    15 
    16 
    17 //主函数
    18 main()
    19 {
    20     double  a = 7.5, b = 4.7, c;
    21     c = fun(a, b);     //调用函数时,1和2叫实际参数
    22     printf("%lf
    ", c);
    23 }
    View Code

       程序4

        求         的和 ?                  题意: 求1 + 100 的和   500 + 501 + ...... +600 的和    300 + 301 + ......+350 的和。

     1 //求 1加到 100, 500加到600,300加到350的和。
     2 #include <stdio.h>
     3 
     4 int add(int begin,int end)
     5 {
     6     int sum = 0;     //总和初始化为0.
     7     for (; begin<=end; begin++)
     8         sum = sum + begin;
     9     return sum;    //返回值
    10 }
    11 
    12 //主函数(父函数)
    13 main()
    14 {
    15     int a1, a2, a3,num;
    16         a1 = add(1, 100);
    17         a2 = add(500, 600);
    18         a3 = add(300, 350);
    19         num = a1 + a2 + a3;
    20         printf("%d
    ",num);
    21 }
    View Code

        ※函数形参的定义与普通变量定义不同的是:同时定义2个普通变量可以用int a,b;  而函数形参只能用int a,int b

        ※父函数在调用子函数后,会在调用点等待子函数返回,子函数永远不返回,父函数就永远不会往下执行。

        ※不能调用main函数

       函数声明

        ※如果子函数在父函数之后定义,就要对子函数先进行“声明”,否则父函数会认不到子函数。

        ※函数声明的格式就是自定义函数的首部加上分号。

        ※如果函数返回值为整型,不需要声明也可编译通过,但是不提倡使用这种方式。

      数据传递

        ※父函数调用子函数时,通过“实际参数”将数据传给子函数的“形式参数”。

        ※父函数将数据传给子函数加工时,子函数不会改变父函数中的数据,它加工的只是实际参数的副本。

        ※子函数通过return将加工好的数据传回父函数,这时子函数中所有的数据寿终正寝。

        ※父子函数中如果有变量重名,这两个变量之间不会互相影响

        

        程序5

          父子函数变量重名示例

     1 // 7 -5 父子函数变量重名示例
     2 #include <stdio.h>
     3 
     4 int fun(int a, int b)   //与父函数变量重名
     5 {
     6     a = 2;
     7     b = 2;
     8 }
     9 
    10 
    11 main()
    12 {
    13     int a, b;
    14     a = 1;
    15     b = 1;
    16     fun(a, b); 
    17 
    18     printf("a= %d,b=%d
    ", a, b);
    19 
    20 }
    View Code

      函数返回值

        格式:

          return 表达式;  或  return (表达式);

          ※表达式最后的运算结果要与函数定义时的类型相同。如上面的代码,fun定义为double类型,return m中的m也必须是double类型。

          ※每个函数只能通过return返回一个值。

          ※如果函数头部没有返回类型标识,默认返回类型为int

          ※函数中无论有多少个return,只有一个return会执行,return一旦执行,函数马上就会跳出,后面的代码不再执行。

      无返回值的函数:

          ※无返回值的函数,类型定义为void。函数体中若没有return语句,或是有单独一个return;后面不带表达式,均符合void函数的条件。这时的return功能有点类似break语句。

          ※无返回值函数也称“功能函数”,主函数不需要它返回什么结果,只需要它做完某件事。

     1 // 7-6 无返回值函数
     2 #include <stdio.h>
     3 
     4 
     5 //子函数功能,输出两数中的大数
     6 void fun(int a , int b)
     7 {
     8     if (a > b)printf("%d
    ", a);
     9     else printf("%d
    ", b);
    10 }
    11 
    12 void main()
    13 {
    14     int i1, i2;
    15     scanf_s("%d%d", &i1, &i2);
    16     fun(i1, i2);
    17 }
    View Code
  • 相关阅读:
    解决“此计算机上已安装了试用版。必须先卸载以前安装的试用版后才能安装另一个试用版。”
    Windows 7 快捷键
    【译】部署Asp.Net MVC 网站到Winodws Azure
    jqGrid专题:搜索
    jqGrid专题:格式化数据
    jqGrid专题:事件文档
    jqGrid专题:方法文档
    jqGrid专题:数据加载
    jqGrid专题:参数文档
    jqGrid专题:jqGrid原理
  • 原文地址:https://www.cnblogs.com/httpcc/p/14959167.html
Copyright © 2011-2022 走看看