第三章

前面我们曾经学习了程序设计中的三种基本控制结构(顺序、分支、循环)。用它们可以组成任何程序。但在应用中,还经常用到子程序结构。
通常,在程序设计中,我们会发现一些程序段在程序的不同地方反复出现,此时可以将这些程序段作为相对独立的整体,用一个标识符给它起一个名字,凡是程序中出现该程序段的地方,只要简单地写上其标识符即可。这样的程序段,我们称之为子程序。
子程序的使用不仅缩短了程序,节省了内存空间及减少了程序的编译时间,而且有利于结构化程序设计。因为一个复杂的问题总可将其分解成若干个子问题来解决,如果子问题依然很复杂,还可以将它继续分解,直到每个子问题都是一个具有独立任务的模块。这样编制的程序结构清晰,逻辑关系明确,无论是编写、阅读、调试还是修改,都会带来极大的好处。
在一个程序中可以只有主程序而没有子程序(本章以前都是如此),但不能没有主程序,也就是说不能单独执行子程序。
在此之前,我们曾经介绍并使用了C++提供的各种标准函数,如abs(),sqrt()等等,这些系统提供的函数为我们编写程序提供了很大的方便。比如:求sin(1)+ sin(2)+...+sin(100)的值。但这些函数只是常用的基本函数,编程时经常需要自定义一些函数。

  1. 求:1!+2!+3!+……+10!
    #include
    using namespace std;
    int main()
    {
    int sum=0;
      for (int i=1; i<=10; i++)
        sum+=js(i);
      cout<<“sum=”<<sum<<endl;
      return 0;
    }
  2. 函数定义的语法形式
    数据类型 函数名(形式参数表)
    {
    函数体
    }
    形式参数(简称形参)表可以是空的(即无参函数);也可以有多个形参,形参间用逗号隔开,不管有无参数,函数名后的圆括号都必须有。
  3. 函数的声明
    调用函数之前先要声明函数原型。在主调函数中,或所有函数定义之前,按如下形式声明:
    类型说明符 被调函数名(含类型说明的形参表);
    如果是在所有函数定义之前声明了函数原型,那么该函数原型在本程序文件中任何地方都有效,也就是说在本程序文件中任何地方都可以依照该原型调用相应的函数。如果是在某个主调函数内部声明了被调用函数原型,那么该原型就只能在这个函数内部有效。
    下面对js()函数原型声明是合法的。
    int js(int n);
    也可以:
    int js(int);
    可以看到函数原型声明与函数定义时的第一行类似,只多了一个分号,成为了一个声明语句而已。
  4. 函数的调用
    函数名(实参列表)
  5. 函数的返回值
    return(表达式);
  6. 写一个判断素数的函数,输入一个数,判断它是否是素数,是输出yes,不是输出no
    程序如下:
    #include
    #include
    int prime(int x); //对于函数的声明
    int main()
    {
    int n;
    scanf("%d",&n);
    if (prime(n))
    printf("%s\n",“yes”);
    else
    printf("%s\n",“no”);
    return 0;
    }
    int prime(int x) //判断x是否素数的函数
    {
    int j;
    if (x==2) return 1;
    j=2;
    while(j<=sqrt(x) && x%j!=0) j++;
    if (x%j == 0)
    return 0;
    else
    return 1;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值