函数执行,从右到左执行

 #define _CRT_SECURE_NO_WARNINGS

 #include<stdio.h>
#include<string.h> main()
{
int num = ; printf("%d,%d\n", num, ++num);//函数执行,从右到左执行 system("pause");
}

输出结果:

101,101
请按任意键继续. . .

函数

 #include <stdio.h>
void max(int i, int j) //max是函数的名字,i和j是形式参数,简称形参,void表示函数没有返回值
{
if (i > j)
printf("%d\n", i);
else
printf("%d\n", j);
} main()
{
int a, b, c, d, e, f;
a = , b = , c = , d = , e = -, f = ; max(a, b);
max(c, d);
max(e, f);
}

为什么需要函数?

避免了重复性操作。

有利于程序的模块化。

什么叫函数?

逻辑上:能够完成特定功能的独立的代码单元。

物理上:能够接收数据(当然也可以不接收数据),能够对接收的数据进行处理,能够将数据处理的结果返回(当然也可以不返回任何值)。

总结:函数是个工具,它是为了解决大量类似问题而设计的。函数可以当做一个黑匣子。

如何定义函数?

函数的返回值,函数的名字(函数的形参列表)

{

函数的执行体

}

1 函数定义的本质是详细描述函数之所以能够实现某个特定功能的具体方法

2 return 表达式; 的含义

1) 终止被调函数,向主调函数返回表达式的值

2) 如果表达式为空,则只终止函数,不向主调函数返回任何值

3) break 是用来终止循环和 switch 的。return 是用来终止函数的。

 void f()
{
return; //return只用来终止函数,不向被调函数返回任何值
} int f()
{
return ; //第一,终止函数。第二,向主调函数返回10
}

3 函数返回值的类型也称为函数的类型,因为如果函数名前的返回值类型和函数执行体中的 return 表达式; 中表达式的类型不同的话,则最终函数返回值的类型以函数名前的返回值类型为准

 #include <stdio.h>

 int f()
{
return 10.5; //因为函数的返回值类型是int,所以最终f返回的是10而不是10.5
} main()
{
int i = ;
double x = 6.6; x = f();
printf("%f\n", x);
}

输出格式:

10.000000
请按任意键继续. . .

函数的分类:

有参函数 和 无参函数

有返回值函数 和 无返回值函数

库函数 和 用户自定函数

值传递函数 和 地址传递函数

普通函数 和 主函数(main 函数)

1 一个程序必须有且只有一个主函数

2 主函数可以调用普通函数,普通函数不能调用主函数

3 普通函数可以相互调用

4 主函数是程序的入口,也是程序的出口

7.1 编写函数 isprime(int a),用来判断自变量a是否为素数。若是素数,函数返回整数1,否则返回0。

 #include <stdio.h>
int isprime(int); /*isprime函数的说明语句*/
main()
{
int x;
printf("Enter a integer number:");
scanf("%d", &x); /*从键盘输入一个整数*/
if (isprime(x))
printf("%d is prime\n", x); /*当函数返回1时,输出“是素数”*/
else
printf("%d is not prime\n", x); /*当函数返回0时,输出“不是素数”*/
} int isprime(int a) /*定义isprime函数*/
{
int i;
for (i = ;i <= a / ;i++)
{
if (a%i == )
return ; /*a一旦能被某个数整除,即不是素数,返回0*/
}
return ; /*a不能被2到a/2之间任何一个数整除,返回1*/
}

7.2 编写函数,验证任意偶数为两个素数之和,并输出这两个素数。

若将验证的数放在变量x中,可依次从x中减去i,i从2变化到 x/2 。步骤如下:

(1) i 初值为2

(2) 判断 i 是否是素数,若是,执行步骤(3);若不是,执行步骤(5)

(3) 判断 x - i 是否是素数,若是,执行步骤(4);若不是,执行步骤(5)

(4) 输出结果,返回调用函数

(5) 使i增1

(6) 重复执行步骤(2),直到 i>x/2

 #include <stdio.h>
int isprime(int); /*isprime函数的说明语句*/
void even(int); /*even函数的说明语句*/
main()
{
int a;
printf("Enter a even number:");
scanf("%d", &a);
if (a % == )
{
even(a);
}
else printf("The %d is not even number\n", a);
} void even(int x) /*定义even函数*/
{
int i;
for (i = ;i <= x;i++)
{
if (isprime(i))
if (isprime(x - i))
{
printf("%d=%d+%d\n", x, i, x - i);
return;
}
}
} int isprime(int a) /*定义isprime函数*/
{
int i;
for (i = ;i <= a / ;i++)
{
if (a%i == )
return ; /*a一旦能被某个数整除,即不是素数,返回0*/
}
return ; /*a不能被2到a/2之间任何一个数整除,返回1*/
}

7.3 编写函数 sum(int n) 用以求 ∑f(x) ,和数作为函数值返回。这里 f(x)=x^(2)+1

 #include <stdio.h>
int sum(int); /*sum函数的说明语句*/
int f(int); /*f函数的说明语句*/
main()
{
int a, b;
printf("Enter a integer number:"); /*输入一个整数*/
scanf("%d", &a);
b = sum(a); /*调用sum函数求f(x)的累加和*/
printf("a=%d sum=%d", a, b);
} int sum(int n) /*定义sum函数*/
{
int x, s = ;
for (x = ;x <= n;x++)
{
s += f(x);
}
return s; /*返回累加和*/
} int f(int x) /*定义f(x)函数*/
{
return x*x + ;
}

7.4 编写函数 myupper(ch),把ch中的小写字母转换成大写字母作为函数值返回,其他字符不变。主函数中不断输入字符,用字符@结束输入,同时不断输出结果。

按要求 myupper 函数的返回值类型应当是 char 类型。程序如下:

 #include <stdio.h>
#include <ctype.h>
char myupper(char ch)
{
if (ch >= 'a'&&ch <= 'z')
ch = ch - ;
return ch;
} main()
{
char c;
while ((c = getchar()) != '@')
{
c = myupper(c);
putchar(c);
}
}

7.5 编写函数统计输入字符的个数,用@字符结束输入。在主函数中调用此函数,输出统计结果。

 #include <stdio.h>
long countch(); /*countch函数说明语句*/
main()
{
long n;
n = countch();
printf("n=%ld\n", n);
} long countch()
{
long cn;
for (cn = ;getchar() != '@';cn++);
return cn;
}

7.6 编写函数,根据整型形参n的值,计算如下公式的值:

1-1/2+1/3-1/4+1/5-1/6+1/7-...+ ((-1)^(n+1)) /n

 #include <stdio.h>
double fun(int);
main()
{
int n;
double a;
scanf("%d", &n);
a = fun(n);
printf("%f", a);
} double fun(int n)
{
int k, s = ;
double add = ;
for (k = ;k <= n;k++)
{
add = add + 1.0*s / k;
s = -s;
}
return add;
}

7.7 编写函数,根据整型形参m的值,计算如下公式的值:

t=1-1/(2*2)-1/(3*3)-...-1/(m*m)

 #include <stdio.h>
double fun(int);
main()
{
int m;
double a;
scanf("%d", &m);
a = fun(m);
printf("%f", a);
} double fun(int m)
{
int k, j = ;
double add = , t;
for (k = ;k <= m;k++)
{
t = 1.0 *j / (k*k);
add = add + t;
j = -;
}
return add;
}

全国计算机等级考试二级教程-C语言程序设计_第7章_函数的更多相关文章

  1. 全国计算机等级考试二级教程-C语言程序设计_第4章_选择结构

    switch什么时候用break,什么时候不用break 调用break:一次执行一个分支,输入一个数据,对应一个级别 不调用break:连续执行多个分支 if...else 可以处理任何情况,大于小 ...

  2. 全国计算机等级考试二级教程-C语言程序设计_第8章_地址和指针

    面试: unsigned int *p1 = &num; int *p2 = &num; #define _CRT_SECURE_NO_WARNINGS #include<std ...

  3. 全国计算机等级考试二级教程-C语言程序设计_第15章_位运算

    位运算,不适用于实数,仅仅适用于整数.字符. C语言的位运算只能操作整数.字符,实数是指数方式表示的,不适用于位运算. #define _CRT_SECURE_NO_WARNINGS #include ...

  4. 全国计算机等级考试二级教程-C语言程序设计_第9章_数组

    四维数组,可用于航天卫星,三维+时间 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> ...

  5. 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

    函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...

  6. 全国计算机等级考试二级教程-C语言程序设计_第10章_字符串

    字符型指针数组 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //参数中,int a ...

  7. 全国计算机等级考试二级教程-C语言程序设计_第5章_循环结构

    for循环结构的嵌套 外层循环每循环一次,内层循环会完整循环一次. 外层循环是竖. 内层循环是横. for, do...while, while的选择: 如果有固定次数,如阶乘! ,判断素数,用 fo ...

  8. 全国计算机等级考试二级教程-C语言程序设计_第3章_顺序结构

    1输入两个整数给变量x和y:然后输出x和y:在交换x和y中的值后,在输出x和y. #include <stdio.h> main() { int x, y, t; printf(" ...

  9. 全国计算机等级考试二级教程-C语言程序设计_第2章_C程序设计的初步知识

    正负号与被除数一致. 3 % (-5) == 3 (-3) % 5 == -3 不用求余运算符,求出余数. int x, y; 答:x - x / y * y; const int i = 10; c ...

随机推荐

  1. NFC通信的模式选择

    原帖请参照:http://www.nfcchina.org/forum.php?mod=viewthread&tid=68&extra=page%3D1 1.nfc 怎么选择操作模式的 ...

  2. Response JSON数据返回

    简述: 在servlet填充Response的时候,做JSON格式的数据转换 使用的类是net.sf.json.JSONObject,传入response对象和返回的显示类,修改response,返回 ...

  3. sql 数据库 庞大数据量 需要分表

    17:04:05问下 在什么情况下 审核分区啊 ~..大熊..o○ 17:06:53这个要看应用~..大熊..o○ 17:07:37比如数据量很大,查询多是按照时间段查询,就可以用时间段来做分区~.. ...

  4. Nutch环境搭建

    1. 环境准备 HOST:Ubuntu12.04LTS JDK: jdk-7u45-linux-i586.rpm Nutch:apache-nutch-1.7-bin.tar.gz Solr:solr ...

  5. vmware重装系统后虚拟机实例文件*.vmdk重用

    如题:vmware重装系统后自定义的:虚拟机名称*.vmdk文件重用. 一.问题描述 系统磁盘坏道,装不上系统直接换了硬盘,但是新装的Vmware不能够通过open方式打开“自定义*.vmdk”(这个 ...

  6. Error:/bin/bash: /bin/java: No such file or directory

    描述:在Hadoop运行Job的时候,可能会报这样的一个错误“/bin/bash: /bin/java: No such file or directory”,那是因可能有些地方用到了/bin/jav ...

  7. get方式中文乱码问题

    <a target="_blank" href="ftpFileAction!downloadFile.action?filename=测试.xml"&g ...

  8. Minimum Sum(思维)

    Problem 1603 - Minimum Sum Time Limit: 2000MS   Memory Limit: 65536KB    Total Submit: 563  Accepted ...

  9. 如何使用Storyboard创建UIPageViewController

    之前我们已经讲过UIPageViewController,那篇文章演示了如何使用Interface Builder创建UIPageViewController.为了适配iOS7和Xcode5,我们重新 ...

  10. 牛掰的图片等比缩放js代码

    function resizeImg(img,oAW,oAH){ var oimgW = img.width, oimgH = img.height, oimg = img, oY = (oimgH/ ...