“21好习惯“第一期-11


6.2函数的定义与使用
6.2.1初见函数
求素数的和
可以将判断一个数是不是素数的那部分代码放入函数
#include<stdio.h>

int main()
{
int m,n;
int sum=0;
int cnt=0;
int i=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);
return 0;
}

 21:19:52
判断素数部分代码可以单独取出

 21:19:59
#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=1;

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);
return 0;
}

 21:21:38
void sum(int begin,int end)//函数头 返回类型  函数名 参数表
{
int i;//函数体
int sum=;
for(i=begin;i<=end;i++){
sum+=i;
}
printf("%d到%d的和使%d\n",begin,end,sum);
}

int main()
{
sum(1,10);
sum(20,30);
sum(35,45);
return 0;
}

求出1到10,20到30,35到45的三个和
用一个函数去求三段的和

6.2.2函数定义和调用

函数
是一块代码,接收0个或者多个参数,做一件事情,并返回0个或者1个值。
函数结构:函数头(返回类型 函数名 参数)+函数体

()的含义是起到了表示函数调用的重要作用,即使没有参数也需要()
讲函数指针的时候我们再来讲调用函数时一定要加上()的原因
DEV C++编译器中我们通常在调试的时候是使用下一步(主程序),但是如果我们要进入一个函数,一步一步的执行一个函数中的步骤,我们使用单步进入的按钮

函数名(参数值);
如果有参数,则需要给出正确的数量和顺序
这些值会被按照顺序依次用来初始化函数中的参数

6.2.3 从函数中返回值

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;
}

return的作用:停止函数的执行,并送回一个值。
return有两种写法:
1.return; 2.return 表达式;

一个函数中是可以出现多个return语句的,而且return不一定要放在最后,但是这不好,不符合我们单一出口的理念。有很多个出口可以传递值到外面
可以赋值给变量,有时也可以丢弃(有时候我们要的是副作用)

用void做返回类型的函数,可以没有return,但一定不能使用带值的return
如果函数有返回值,必须使用带值的return
6.3函数的参数与变量
6.3.1函数原型

函数先后关系:
1.如果我们不在主函数中声明函数,那么函数应该写在主函数的上面,这是因为C 的编译器是自上而下的顺序分析的你的代码的。
2.如果我们不是将函数写在上面,那么我们就需要在主函数中先声明这个需要使用 的函数。

(通常我们使用第二种顺序)LLVM是一个严格的编译器。

int isPrime(int i);
函数的原型声明:声明不是函数,只有函数头,可以在int main之外去定义
函数原型的目的就是告诉编译器这个函数长什么样子
函数原型里可以不写参数的名字,只写类型

int isPrime(int i)
{

}
函数的定义:具体的代码(函数头+函数体);
原型声明在写主函数里是旧版本的C,现在函数的原型声明在写主函数的外面
作业:#include<stdio.h>
#include<math.h>
int main()
{
    float x,result;
    scanf("%f",&x);
    if(x>=0){
        result=sqrt(x);
    }
    else{
        result=pow(x+1,2)+2*x+1/x;
    }
     printf("f(%.2f) = %.2f",x,result);
    return 0;
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值