全国计算机等级考试二级教程-C语言程序设计_第7章_函数
函数执行,从右到左执行
#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章_函数的更多相关文章
- 全国计算机等级考试二级教程-C语言程序设计_第4章_选择结构
switch什么时候用break,什么时候不用break 调用break:一次执行一个分支,输入一个数据,对应一个级别 不调用break:连续执行多个分支 if...else 可以处理任何情况,大于小 ...
- 全国计算机等级考试二级教程-C语言程序设计_第8章_地址和指针
面试: unsigned int *p1 = # int *p2 = # #define _CRT_SECURE_NO_WARNINGS #include<std ...
- 全国计算机等级考试二级教程-C语言程序设计_第15章_位运算
位运算,不适用于实数,仅仅适用于整数.字符. C语言的位运算只能操作整数.字符,实数是指数方式表示的,不适用于位运算. #define _CRT_SECURE_NO_WARNINGS #include ...
- 全国计算机等级考试二级教程-C语言程序设计_第9章_数组
四维数组,可用于航天卫星,三维+时间 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> ...
- 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型
函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...
- 全国计算机等级考试二级教程-C语言程序设计_第10章_字符串
字符型指针数组 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //参数中,int a ...
- 全国计算机等级考试二级教程-C语言程序设计_第5章_循环结构
for循环结构的嵌套 外层循环每循环一次,内层循环会完整循环一次. 外层循环是竖. 内层循环是横. for, do...while, while的选择: 如果有固定次数,如阶乘! ,判断素数,用 fo ...
- 全国计算机等级考试二级教程-C语言程序设计_第3章_顺序结构
1输入两个整数给变量x和y:然后输出x和y:在交换x和y中的值后,在输出x和y. #include <stdio.h> main() { int x, y, t; printf(" ...
- 全国计算机等级考试二级教程-C语言程序设计_第2章_C程序设计的初步知识
正负号与被除数一致. 3 % (-5) == 3 (-3) % 5 == -3 不用求余运算符,求出余数. int x, y; 答:x - x / y * y; const int i = 10; c ...
随机推荐
- Oracle EBS-SQL (PO-17):检查供货比例不为100%.sql
select * from apps.MRP_SOURCING_RULES msrwhere organization_id=X. a ...
- 软件看门狗--别让你地程序无响应(使用未公开API函数IsHungAppWindow,知识点较全)
正文一.概述一些重要的程序,必须让它一直跑着:而且还要时时关心它的状态——不能让它出现死锁现象.当然,如果一个主程序会出现死锁,肯定是设计或者编程上的失误.我们首要做的事是,把这个Bug揪出来.但如果 ...
- Windows.Server.2003.R2 简体中文企业版 x86 x64(转)
两张盘,第二张是 R2安装盘. Windows.Server.2003.R2.With.Sp2 中文企业版[MSDN官方版本][32bit] Windows 2003.R2.With.Sp2 简体中文 ...
- php信用卡卡号验证函数
介绍一个php信用卡卡号验证函数,可以验证一个卡号是否是信用卡. function validateCard ($cardnumber){ $cardnumber = preg_replace (&q ...
- Unity FixedUpdate 与 Update 的线程关系实验
先上结论:FixedUpdate 与 Update 在同一个线程上. 实验过程: 1.打印 FixedUpdate 和 Update 的线程编号 void FixedUpdate () { Debug ...
- hdu 5569 matrix(简单dp)
Problem Description Given a matrix with n rows and m columns ( n+m ,) and you want to go to the numb ...
- ASP.NET State Service
本文来自:http://www.cnblogs.com/jhxk/articles/1648194.html 这一段就是配置应用程序是如何存储Session信息的了.我们以下的各种操作主要是针对这一段 ...
- linux中grep使用方法具体解释
查找特定字符串并颜色显示 [root@fwq test]# grep -n 'the' regular_express.txt --color=auto 8:I can't finish the te ...
- asp.net MVC 验证注解
对于Web系统,对于用户的输入验证是必须的.不仅需要在客户端对用户的输入进行验证,在服务端也需要对用户的执行进行验证. asp.net MVC中对于验证提供了一种注解机制.注解是一种通用机制,可以用来 ...
- (七)Android中AIDL的应用与理解
一.跨应用启动Service Intent serviceIntent=new Intent();serviceIntent.setComponent(new ComponentName(" ...