嵌入式day5(2022.1.11)

简介: 嵌入式day5(2022.1.11)

在C语言知识体系中,


数据类型 ---》 点


运算符 ---》 线


逻辑结构 ---》 面


函数 ---》 体


1.函数(Function)的含义


C语言中的函数分类:


  1. 系统函数(预定义函数,编程者直接使用即可)


  1. 自定义函数(编程者根据需要,自行编写)


  • 主函数main(程序的入口)


  • 功能函数(子函数)


// 子函数作用:计算2个数的和
int func_sum(int n1, int n2)
{
    int n3 = n1+n2;
    return n3;  // 结束当前函数,返回调用处
}
// int:返回值。
// func_sum:函数名
// (int n1, int n2):形参列表(形式参数)
// {...}:函数体


备注:


如果需要使用系统函数,可以查看他们的帮助手册:man手册


(一般函数位于第2本,或第3本)


可使用man -f  printf,查看当前函数位于哪本手册。


2.自定义函数的使用


一般形式:


备注:


  1. 返回值 + 函数名 + 形参列表,共同组成了函数头。


  1. 形参只对函数内有效。


  1. 如果实际情况下,子函数不需要传参,或者不需要返回值


返回值、形参列表中,可以使用空类型 void


如果出现下列警告:


 

出现原因:隐式声明。


解决方法:在使用前进行函数声明。



出现原因:红框内的函数未定义。


解决方法:把缺失的函数编写完成即可。



出现原因:缺失了分号;


3.递归函数


特点:


  1. 自己调用自己。


  1. 递归函数一般来说,代码量很少,但是功能非常强大。


  1. 适用场景:


  • 结束条件


  • 算式的前一式和后一式存在等式关系。


例子:阶乘问题。


5! = 5*4*3*2*1


6! = 6*5*4*3*2*1 = 6*5!


a.结束条件


func_jc(1) = 1 --->当n等于1时,结果直接返回1


b.算式的前一式和后一式存在等式关系。


6! = 6*5!


func_jc(6) = 6*func_jc(5);


结论---> func_jc(n) = n*func_jc(n-1);


#include <stdio.h>
// 子函数作用:计算2个数的和
int func_sum(int n1, int n2)
{
  int n3 = n1+n2;
  return n3;  // 结束当前函数,返回调用处
}
// int:返回值。
// func_sum:函数名
// (int n1, int n2):形参列表(形式参数)
// {...}:函数体
int main()
{
  int a=100, b=200;
  int c = func_sum(a, b); // 子函数的调用。(a, b)称为实参的传参(实际参数的传递)
  printf("c: %d\n", c);
  return 0; // 直接结束程序
}


#include <stdio.h>
// 函数的声明
// 传递1个int,计算它平方,返回int
int func_square(int a);
// 传递2个int,计算他们的差值,返回int
int func_sub(int a, int b); 
// 打印函数
void func_print(void);
int main()
{
  func_print();
  int a=10, b=5;
  // int c1 = func_square(a);
  // int c2 = func_square(b);
  // int c = func_sub(c1, c2);
  // printf("square: %d\n", c);
  int c = func_sub(func_square(a), func_square(b));
  printf("square: %d\n", c);
  return 0;
}
// 打印函数
void func_print(void)
{
  printf("hello\n");
  printf("hello\n");
  printf("hello\n");
  printf("hello\n");
  printf("hello\n");
  printf("hello\n");
  printf("hello\n");
  printf("hello\n");
}
// 传递1个int,计算它平方,返回int
int func_square(int a)
{
  return a*a;
}
// 传递2个int,计算他们的差值,返回int
int func_sub(int a, int b)
{
  return a-b;
}


#include <stdio.h>
// 递归计算传参的阶乘
int func_jc(int n)
{
  // a.结束条件
  if(n == 1)
    return 1;
  // b.算式的前一式和后一式存在等式关系。
  return n*func_jc(n-1);
}
int main()
{
  int a = 4;
  int num = func_jc(a);
  printf("%d\n", num);
  return 0;
}


2.c


#include<stdio.h>
void donut(int a);
void gear(int a,int b);
void stuff_it(double a,double *b);
int main()
{
    int a,b;
    double c;
    double *d;
    donut( a);
    gear( a, b);
    stuff_it(c,&c);
   return 0;
}
void donut(int a){
    for (int i = 0; i < a; i++)
    {
        printf("0\t");
    }
}
void gear(int a,int b){
    int c;
    return c;
}
void stuff_it(double a,double *b){
    return *b=a;
}


#include<stdio.h>
void max( int a,int b ,int c)
{
    int max;
    if(a>b){
        max=a;
        if(a>c) max=a;
        else max=c;
    }
    if(b>c){
        max=b;
        if(b>a) max=b;
        else max=a;
    }
    if(c>a){
        max=c;
        if(c>b) max=c;
        else max=b;
    }
     printf("最大值是:%d\n",max);
}
int main()
{
    printf("输入3个整型数");
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
   max(a,b,c);
   printf("\n");
   return 0;
}


4.c


#include <stdio.h>
float my_power(float a,int b)
{
  int sum1 = 1;
  float sum2 = 1.0;
  if( b > 0 )
  {
    for( int i = 0; i < b; i++ )
    {
      sum1 *= a;
    }
    return sum1;
  }
  else if( b == 0)
    return 1;
  else
  {
    for( int i = 0; i < -b ; i++)
    {
      sum2 *= (float)1.00 / a;
    }
    return sum2;
  }
}
int main()
{
  int N;
  float a,sum;
    printf("输入mypower(___,___)内两个数\n");
  scanf("%f %d", &a, &N);
  sum = my_power(a,N);
  printf("输出结果:%.6f\n",sum);
  return 0;
}


#include<stdio.h>
#include <strings.h>
#include <string.h>
void link(char a[],char b[]) {
    // strlen(): 获取指定字符串的长度(不含'\0')
  char t[strlen(a)-1 + strlen(b) +1];
  //          去掉'\n'       加上'\0'
  int i;
  for(i=0; i<strlen(a)-1; i++)
  {
    t[i] = a[i];
  }
  int j;
  for(j=0; j<strlen(b)+1; j++, i++)
  {
    t[i] = b[j];
  }
  printf("合并后: %s", t);
}
int main()
{
    char a[100],b[100];
    printf("输入第一个字符串\n");
    fgets(a, 100, stdin);
    //scanf("%s",&a);
     printf("输入第二个字符串\n");
    // scanf("%c",&b);
    fgets(b, 100, stdin);
    // printf("%s",b);
    link(a,b);
   return 0;
}


6.c


#include <stdio.h>
#include <stdlib.h>
void Fibonacci(int n){
 int a = 1;
 int b = 1;
 int c = 0;
 printf("Fibonacci:\n");
 for (int i = 0; i < n - 2;i++)
 {
   c = a + b;
   a = b;
   b = c;
   printf("%d\t", c);
 }
}
int main()
{
    int n ;
    printf("输入一个数计算Fibonacci\n");
    scanf("%d", &n);while(getchar()!='\n');
    Fibonacci(n);
    printf("\n");
    return 0;
}


7.c


#include <stdio.h>
void remoSpace(char character[]);
int main()
{
  printf("请输入带空格的字符串:");
  char character[120];  
  fgets (character , 50 , stdin);     
  remoSpace(character);
  printf("%s",character);
  return 0;
}
void remoSpace(char character[])
{
  int i = 0, j = 0;
  for( i = 0;character[i] != '\0';i++)    
  {
    if(character[i] == ' ')
    {
      for( j = i; character[j] != '\0'; j++)
      {
        character[j] = character[j+1];
      }
      i--;
    }
  }
}


相关文章
|
7月前
|
机器学习/深度学习 人工智能 安全
嵌入式会越来越卷吗?
嵌入式系统,融合硬件与软件,正以前所未有的速度普及和多样化。从智能手机到医疗保健,它们无处不在,推动着技术边界不断扩展。随着AI和IoT的发展,嵌入式系统变得更智能、高效。然而,技术进步也带来了安全挑战,数据保护和系统稳定性成为重要议题。未来,嵌入式系统将在物联网中扮演关键角色,同时教育和跨领域合作将塑造其发展路径。面对挑战,我们需要创新与合作,确保其健康且持续的进步。
|
6月前
|
C语言
嵌入式程设
嵌入式程设
|
存储 Java C#
day10嵌入式(2022.1.16)
day10嵌入式(2022.1.16)
|
存储 编译器
day8嵌入式(2022.1.14)
day8嵌入式(2022.1.14)
|
存储
day7嵌入式(2022.1.13)
day7嵌入式(2022.1.13)
|
数据安全/隐私保护 C语言
day12嵌入式(2022.1.18)
day12嵌入式(2022.1.18)
|
Linux Windows
day9嵌入式(2022.1.15)
day9嵌入式(2022.1.15)