嵌入式day5(2022.1.11)

2022-12-02 14:30:44 浏览数 (1)

在C语言知识体系中,

数据类型 ---》 点

运算符 ---》 线

逻辑结构 ---》 面

函数 ---》

=========================== 1.函数(Function)的含义 ===========================

C语言中的函数分类:

  1. 系统函数(预定义函数,编程者直接使用即可)
  2. 自定义函数(编程者根据需要,自行编写)
  3. 主函数main(程序的入口)
  4. 功能函数(子函数)
代码语言:javascript复制
// 子函数作用:计算2个数的和
int func_sum(int n1, int n2)
{
    int n3 = n1 n2;
    return n3;  // 结束当前函数,返回调用处
}
// int:返回值。
// func_sum:函数名
// (int n1, int n2):形参列表(形式参数)
// {...}:函数体

备注:

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

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

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

=========================== 2.自定义函数的使用 ===========================

一般形式:

备注:

  1. 返回值 函数名 形参列表,共同组成了函数头。
  2. 形参只对函数内有效。
  3. 如果实际情况下,子函数不需要传参,或者不需要返回值

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

  1. 如果出现下列警告:

出现原因:隐式声明。

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

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

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

出现原因:缺失了分号;

=========================== 3.递归函数===========================

特点:

  1. 自己调用自己。
  2. 递归函数一般来说,代码量很少,但是功能非常强大。
  3. 适用场景:
  4. 结束条件
  5. 算式的前一式和后一式存在等式关系。

例子:阶乘问题。

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

代码语言:javascript复制
#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: %dn", c);
	
	return 0;	// 直接结束程序
}
代码语言:javascript复制
#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: %dn", c);
	
	int c = func_sub(func_square(a), func_square(b));
	printf("square: %dn", c);

	return 0;
}


// 打印函数
void func_print(void)
{
	printf("hellon");
	printf("hellon");
	printf("hellon");
	printf("hellon");
	printf("hellon");
	printf("hellon");
	printf("hellon");
	printf("hellon");
}

// 传递1个int,计算它平方,返回int
int func_square(int a)
{
	return a*a;
}

// 传递2个int,计算他们的差值,返回int
int func_sub(int a, int b)
{
	return a-b;
}
代码语言:javascript复制
#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("%dn", num);

	return 0;
}

2.c

代码语言:javascript复制
#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("0t");
    }
}
void gear(int a,int b){
    int c;
    return c;
}
void stuff_it(double a,double *b){
    return *b=a;
}
代码语言:javascript复制
#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("最大值是:%dn",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

代码语言:javascript复制
#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("输出结果:%.6fn",sum);
	return 0;
}
代码语言:javascript复制
#include<stdio.h>
#include <strings.h>
#include <string.h>
void link(char a[],char b[]) {
    // strlen(): 获取指定字符串的长度(不含'')
	char t[strlen(a)-1   strlen(b)  1];
	//          去掉'n'       加上''
	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

代码语言:javascript复制
#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("%dt", c);
 }
}
int main()
{
    int n ;
    printf("输入一个数计算Fibonaccin");
    scanf("%d", &n);while(getchar()!='n');
    Fibonacci(n);
    printf("n");
    return 0;
}

7.c

代码语言:javascript复制
#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] != '';i  )		
	{
		if(character[i] == ' ')
		{
			for( j = i; character[j] != ''; j  )
			{
				character[j] = character[j 1];
			}
			i--;
		}
	}
}

0 人点赞