初见函数
求素数的和
#include <stdio.h>
int main()
{
int m,n;
int sum = 0;
int cnt = 0;
int i;
scanf("%d %d", &m, &n);
// m=10,n=31;
if( m==1) m=2;
for( i=m; i<=n; i++ ) {
int isPrime = 1;
int k;
for ( k=2; k<i-1; k++ ) {
if ( i%k == 0 ) {
isPrime = 0;
break;
}
}
if ( isPrime ) {
sum += i;
cnt++;
}
}
printf("%d %d\n", cnt, sum);
return 0;
}
写自己的函数
#include <stdio.h>
int isPrime(int i);
{
int ret = 1;
int k;
for ( k=2; k<i-1; k++ ) {
if ( i%k == 0 ) {
ret = 0;
break;
}
}
return ret;
}
int main()
{
int m,n;
int sum = 0;
int cnt = 0;
int i;
scanf("%d %d", &m, &n);
//m=10,n=31;
if( m==1 )m=2;
for ( i=m; i<=n; i++ ) {
if ( isPrime(i) ) {
sum += i;
cnt++;
}
}
pritnf("%d %d\n", cnt, sum);
return 0;
}
函数变得很简洁,而isPrime函数将来也可以用到其他地方
求和
求1~10、20~30和35~45的三个和
#include <stdio.h>
int main()
{
int i;
int sum;
for ( i=1,sum=0; i<=10; i++ ) {
sum += i;
}
printf("%d到%d的和是%d\n", 1, 10, sum);
for ( i=20,sum=0; i<=30; i++ ) {
sum += i;
}
printf("%d到%d的和是%d\n", 20, 30, sum);
for ( i=35,sum=0; i<=45; i++ ) {
sum += i;
}
printf("%d到%d的和是%d\n", 35, 45, sum);
reuturn 0;
}
发现,有三段几乎一样的代码,在程序中叫做”代码复制“
“代码复制”是程序质量不良的表现
将重复函数提取出来:
void sum(int begain, int end)
{
int i;
int sum = 0;
for ( i=begain; i<=end; i++ ) {
sum += i;
}
printf("%d到%d的和是%d\n", begain, end, sum);
}
int main()
{
sum(1,10);
sum(20,30);
sum(35,45);
return 0;
}
函数的定义和使用
什么是函数:
函数是一块代码,接受零个或多个参数,做一件事情,并返回零个或一个值
函数定义
void sum(int begain, int end)
{
int i;
int sum = 0;
for ( i=begain; i<=end; i++ ) {
sum += i;
}
printf("%d到%d的和是%d\n", begain, end, sum);
}
函数头:
void sum(int begain, int end)
void:返回类型(不返回任何结果的函数)
sum:函数名
int begain, int end:参数表
函数体: (一定要有)
int i;
int sum = 0;
for ( i=begain; i<=end; i++ ) {
sum += i;
}
printf("%d到%d的和是%d\n", begain, end, sum);
调用函数
格式:函数名(参数值);
()起到了表示函数调用的重要作用,即使没有参数也需要();如果有参数,则需要给出正确的数量和顺序,这些值会被按照顺序依次用来初始化函数中的参数
函数返回
函数知道每一次是哪里调用它,会返回到正确的地方
从函数中返回
- return:停止函数的执行,并送回一个值
- return的两种写法:
①return;
②return 表达式;
- 一个函数里可以出现多个return语句
int max(int a, int b)
{
int ret;
if ( a>b ) {
ret = a;
} else {
ret = b;
}
return ret;
}
>>
int max(int a, int b)
{
if ( a> b ) {
return a;
} else {
return b;
}
}
*但上述不是一种好的写法,不符合单一出口
从函数中返回值
- 可以赋值给变量
- 可以再传递给函数
- 甚至可以丢弃
没有返回值的函数
格式:void 函数名(参数表)
不能使用带值的return(可以没有return)
调用的时候不能做返回值的赋值
*如果函数有返回值,则必须使用带值的return
标签:13,return,函数,int,sum,笔记,C语言,begain,end From: https://blog.csdn.net/2401_87749224/article/details/142860036