前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式day5(2022.1.11)

嵌入式day5(2022.1.11)

作者头像
天天Lotay
发布2022-12-02 14:30:44
1700
发布2022-12-02 14:30:44
举报
文章被收录于专栏:嵌入式音视频

在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: %d\n", 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: %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;
}
代码语言: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("%d\n", 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("0\t");
    }
}
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("最大值是:%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

代码语言: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("输出结果:%.6f\n",sum);
	return 0;
}
代码语言:javascript
复制
#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

代码语言: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("%d\t", c);
 }
}
int main()
{
    int n ;
    printf("输入一个数计算Fibonacci\n");
    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] != '\0';i++)		
	{
		if(character[i] == ' ')
		{
			for( j = i; character[j] != '\0'; j++)
			{
				character[j] = character[j+1];
			}
			i--;
		}
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档