首页 > 其他分享 >C语言笔记 13

C语言笔记 13

时间:2024-10-11 18:48:04浏览次数:11  
标签:13 return 函数 int sum 笔记 C语言 begain end

初见函数


求素数的和

#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

相关文章

  • 菲姐游泳(C语言实现)
    游泳奥运冠军菲姐刻苦训练,从早上a时b分开始下水训练,直到当天的c时d分结束。请编程计算:菲姐当天一共训练多少小时多少分钟?输入格式:一行之内输入以空格分隔的4个非负整数,分别对应a,b,c,d。其中,0≤a<c≤24;b和d均不大于60。输出格式:h:m。其中,整数h表示小时数,整数m表示分钟......
  • 初始爬虫13(js逆向)
    为了解决网页端的动态加载,加密设置等,所以需要js逆向操作。JavaScript逆向可以分为三大部分:寻找入口,调试分析和模拟执行。 1.chrome在爬虫中的作用        1.1preservelog的使用默认情况下,页面发生跳转之后,之前的请求url地址等信息都会消失,勾选perservelog后之......
  • C语言-常见文件操作函数详解(fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite)
     ......
  • 笔记本电脑蓝屏固态硬盘数据恢复
    当笔记本电脑出现蓝屏故障,并且需要恢复固态硬盘中的数据时,可以参考以下步骤和建议:一、初步处理与评估断开电源:在尝试任何数据恢复操作之前,首先要断开笔记本电脑的电源,以避免进一步的数据损坏或丢失。评估蓝屏原因:蓝屏可能是由多种原因引起的,如驱动程序错误、系统文件损坏、硬件......
  • 数据资产 学习笔记(零)核心概念收录
    1、数据在常见的DIKW层次结构模型中,数据(Data)被视为一系列原始素材和原始资料,经由处理后形成有逻辑的信息(Information),人们通过组织化的信息分析出原因和机制,形成知识(Knowledge)再通过不断地应用与验证,逐渐形成智慧(Wisdom),并由此达成预测未来的可能。2、数据资产......
  • 使用Bootload升级相关的开发笔记
    项目使用两款不同的芯片完成Boot到APP之间的升级,此处仅作为日常开发笔记。(作者忘性大)1.GD32F403相关的boot升级 要实现boot升级主要分为IAP和APP两部分程序。IAP实际就是Boot相关的配置。①首先创建一个工程,将GD32F403原先的flash改为0x4000大小(16K)。此时已经将IAP的......
  • express的使用笔记 2 请求对象与响应对象 、 增删改查demo
    Express不对Node.js已有的特性进行二次抽象,只是在它之上扩展了web应用所需的基本功能。内部使用的依旧是http模块,请求对象继承字http.IncomingMessage,响应对象继承自http.ServerResponse,所以node.js官网中的对应的方法可以通用1.请求对象2.响应对象除了response.send(),resp......
  • 第1讲:C语言常见概念(一)
    目录1.C语言是什么?2.C语言的历史和辉煌3.编译器的选择VS2022 正文开始1.C语言是什么? 人和人交流使用的是自然语言,如:汉语、英语、日语...那人和计算机是怎么交流的呢?使用计算机语言。目前已知已经有上千种......
  • 第二讲:C语言的常见概念(二)
    #1.初识C语言程序#首先我们来认识所有学习c语言的初学者学习的第一个程序编码:#include<stdio.h>intmain(){printf(“helloC\n”);return0;}在VS2022上运⾏代码的快捷键:Ctrl+f5#2.main函数每个C语言程序不管有多少行代码,都是从main函数开始执行的,main函数......
  • 【刷题笔记】DP 2021.10.11
    Candies思路朴素的算法设\(f_{i,j}\)表示给前\(i\)个小朋友分\(j\)个糖的方案数,\[f_{i,j}=\sum_{k=0}^{min(a[i],j)}f_{i-1,j-k}\]注意到此时时间复杂度为\(O(n\timesk^2)\)想到用前缀和进行优化,设\(s_{i,j}\)表示\(\sum_{j=0}^{k}f_{i,j}\)则\(DP\)转移方程\[f_{i,j}=s_......