6.1函数的定义与使用
素数求和
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);
int isPrime(int i)
{
int ret = 1;
int k;
for ( k=2; k<i-1; k++){
if ( i%k == 0 ){
ret = 0;
break;
}
}
return 0;
}
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++;
}
}
printf("%d %d\n", cnt, sum);
求和
• 求出1到10、20到30和35到45的三个和
• 三段几乎⼀模⼀样的代码!
“代码复制”是程序质量不良的表现
求和函数
什么是函数?
• 函数是⼀块代码,接收零个或多个参数,做⼀件事情,并返回零个或⼀个值
• 可以先想像成数学中的函数:
• y = f(x)
调用函数
• 函数名(参数值);
• ()起到了表示函数调用的重要作用
• 即使没有参数也需要()
• 如果有参数,则需要给出正确的数量和顺
序
• 这些值会被按照顺序依次用来初始化函数
中的参数
函数返回
• 函数知道每一次是哪里调用它,会返回到正确的地方
从函数中返回值
• return停止函数的执行,并送回一个值
• return;
• return 表达式;
• 一个函数里可以出现多个return语句
• 可以赋值给变量
• 可以再传递给函数
• 甚至可以丢弃
• 有的时候要的是副作用
没有返回值的函数
• void 函数名(参数表)
• 不能使用带值的return
• 可以没有return
• 调用的时候不能做返回值的赋值
Ps:如果函数有返回值,则必须使用带值的return
思考题:
为什么要用函数?
写了函数有什么好处?有没有什么亲身感受能体会到函数的好、函数的美?
函数的好处:
-
减少重复代码, 简洁明了;
-
功能代码模块化,可读性强, 调试维护方便;
-
函数的积累, 函数库的积累, 方便以后编程的调用或类似功能的开发。
生活中的函数:
-
洗衣机和全自动洗衣机 ;
-
EXCEL中的SUM,AVERAGE等函数,以及各种功能按钮。