博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
华清远见fs4412开发板学习笔记(四)
阅读量:3931 次
发布时间:2019-05-23

本文共 3383 字,大约阅读时间需要 11 分钟。

fs4412开发板学习笔记(四)

今天的课程安排

1.复习
1.1 VIM 编辑器
[1] vim + filename 打开
[2] 工作模式
命令模式
编辑模式
底行模式
[3] 模式切换
命令->编辑 i
编辑->命令 ESC
命令->底行 :
底行->命令 ESC
[4]命令模式
yy 复制一行
dd 剪切一行
p/P 粘贴
nyy/ndd 复制/剪切n行
u 撤销
ctrl+r 恢复
光标移动
h 左
j 下
k 上
l 右
[5]底行模式
w 保存文件
w path/filename 另存为
q 退出
wq 保存并退出
x
q! 强制退出
vsp/sp filename 分屏显示

编辑器配置

1)将配置文件拷贝到虚拟机
2)cd ~/vim
3)cp .vim* ~ -a
4)cd ~
5)sudo chmod 777 ~/.vim* -R

1.2 C语言

面向过程的编译型语言
用于嵌入式领域、操作系统、操作系统底层

[1]编译器(GCC 编译器)

gcc 源码.c -o 可执行文件名

[2]编译的流程

将高级语言转换成计算机可以识别的二进制机器指令
1)预处理:执行预处理指令
#include
#define
#ifdef #ifndef #if #else #endif
gcc -E hello.c -o hello.i
2)编译 : C语言编译成汇编代码
gcc -S hello.i -o hello.s
3)汇编 : 汇编代码编译程二进制的目标文件
gcc -c hello.s -o hello.o
4)链接 将二进制目标文件和二进制库文件链接生成可执行文件
gcc hello.o -o hello
[3]执行程序
./程序名

2.C语言复习&练习

【1】过程控制语句
1)顺序
2)选择
[1]if-else 结构
if (条件) {

} else if (条件) {	} else {	}

[2]switch 结构

switch (条件) {
case 值: 表达式;break;
case 值: 表达式;break;
case 值: 表达式;break;
default : 表达式;
}
3)循环
[1]for 循环
for (表达式1;表达式2;表达式3) {
循环体;
}
表达式1 初始条件
表达式2 循环条件
表达式3 循环体后执行的代码
[2]while 循环
while (条件表达式) {
循环体;
}
[3]do-while
do {
循环体;
}while(条件表达式);

练习:

题目 1:输入两个正整数m和n,求其最大公约数和最小公倍数。
int m, n;
int r;
while (r > 0) {
m % n = r;
m = n;
n = r;
}
m * n = 最大公约数 * 最小公倍数

题目 2:一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3.编程找出1000以内的所有完数。

for (i = 2; i <= 1000; i++) {	for (j = 1; j < i; j++) {		if (i % j == 0) {			sum += j;		}	}	if (sum == i)		i 是 完数}

题目 3:一球从100米高度自由落下,每次落地后反跳回原高度的一半;

再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
sum = 0;
height = 100;
for (i = 0; i < 10; i++) {
sum += height + height/2;
height /= 2;
}
sum -= height;

【2】数组

用于保存相同数据类型的数据的一种人为构造的数据类型。
1)定义:
数据类型 数组名[元素个数];
eg:
int a[5];

2)数组的引用

数组名[下标]; //数组下标从零开始
eg :
a[0]…a[4]
a[5] //❌,数组下标越界

3)数组的初始化

数据类型 数组名[元素个数] = {初始值,初始值};
数据类型 数组名[元素个数] = {
[0] = {
初始值,
},
[1] = {
初始值,
},
};
数据类型 数组名[] = {初始值,初始值}; //省略数组下标
eg: int a[] = {1,2,3,4,5}
数据类型 数组名[元素个数] = {0}; //给所有元素初始化为了
eg: int a[5] = {0};

示例:打印斐波那契数列前10项

f1 = 1, f2 = 1,
fn = fn-1 + fn-2;(n>3)

练习1:

输入10个整数,按从小到大的顺序输出(排序)
冒泡排序 Bubble sort:
循环比较相邻的两个数顺序是否正确,如果不正确则交换
5 4 3 2 1

  1. 4 3 2 1 5 4次 n-1
  2. 3 2 1 4 5 3次 n-2
  3. 2 1 3 4 5 2次 n-3
  4. 1 2 3 4 5 1次 n-4

n 个数 n-1 轮

第i轮需要最多交换n-i次
作业1:
输入10个整数,按从小到大的顺序输出(选择排序)
每轮排序在未排序的集合中找到(最小/最大),将找到的数与未排序的
第一个数交换位置。
作业2:
从前有个人叫约瑟夫不幸入狱,监狱枪毙犯人。让33个犯人围成一个圈,
从1-7报数,数到7的出列枪毙,最后只有一个人能活下来。聪敏的约瑟夫稍加
计算活下来了,问这个位置在哪?(编程解决问题)

【3】函数

1)什么是函数?
将常用的一些功能代码集合起来就组成了函数。
减少代码体积,方便使用者调用
高内聚:函数功能尽可能单一,将某个功能尽可能放在一个函数内部
低耦合:降低函数和函数之间的关联程度
2)定义函数
数据类型 函数名(形参数列表)
{
函数体;
}
eg :
int plus(int a, int b)
{
int c;
c = a + b;
return c;
}
[1]数据类型:表示函数返回值的类型(如果没有返回值 void)
[2]函数名:函数的标识,也是每个函数的地址
[3]参数列表: 形参列表,用函数参数,可以用函数内部的计算。
(如果不需要传参,可以忽略)
[4]函数体:实现函数功能的代码
注意:
[1] return 负责将函数的运算结果传递给调用函数,返回值类型必须和
函数的数据类型保持一致。
3) 函数调用
函数名(实参数列表);
eg :
plus(100, 200);
形参:形式参数,在函数定义阶段参数列表中的变量
实参:实际参数, 在函数调用阶段,实参的值会被传递给形参
注意:
函数必须先定义,后调用

示例:

编写一个函数,
实现将大写字母转换成小写
实现将小写字母转换成大写

作业3:输出如下图形:

*
***








*** *

逻辑推理题:(不必写代码)

1、怎样分财宝?
有两位探险家穿越沙漠,甲携带5瓶水,乙携带3瓶水,计划8天走出沙漠,
甲乙二人约定每天每人喝半瓶水。
在旅程刚开始(水还未损耗时),二人碰上一个富商,该富商说他家就在沙漠
另一端(即甲乙二人的目的地),如果甲乙二人能护送他顺利到家,则会分给
甲乙二人一笔巨额财宝。
由于多了一个人,所以每天每人喝1/3瓶水。
8天后,三人成功穿越沙漠。富商兑现诺言,按甲乙二人携带的水量,
按5:3的比例分给二人一笔财宝。此时甲说:“您的分配方式不公平”。
问:富商的分配方式是否公平?若不公平,则正确的分配方式应该是多少?

2、哪一瓶为毒药?

现有100瓶液体已经编好号,其中99瓶为水,1瓶为毒药。
毒药的外观、性状、气味等与水完全相同。若小白鼠饮下毒药,
则会在24小时后死亡。
现在需要找出哪瓶为毒药,但是由于时间紧迫,只有1天时间,
为了加快验证速度,我们给你7只小白鼠。
问:设计一种给小白鼠喂食液体的验证方案,在24小时之后立即找出哪瓶为毒药

3、球的重量?

有8个球,其中一个比另外的要略重。现在只有一个天枰,在不使用砝码的情况
下最少需要称几次,才能找出这个球?

4.沙漠中的尸体?

一个人被发现死在沙漠里,手中捏这一个火柴,周围没有任何足迹,也没有其他
线索。他是怎么死的呢?

转载地址:http://yutgn.baihongyu.com/

你可能感兴趣的文章
Android Intents and Intent Filters
查看>>
PreferenceFragment 使用 小结
查看>>
android背景选择器selector用法小结
查看>>
隐藏(删除) Preference 小结
查看>>
eclipse导入 普通android项目时,出错
查看>>
android编译系统 整体 简介
查看>>
从零 使用vc
查看>>
Linux2.6 内核的 Initrd 机制解析
查看>>
Qt把ping www.baidu.com之后的内容的内容输出到一个名为output的文档
查看>>
修改 其他一些文件的内容,也就是修改 build.prop 里的 内容
查看>>
gzip 小结
查看>>
编译某一个ko模块make modules SUBDIRS=drivers/xxx/
查看>>
如何解决"Launching New_configuration"问题
查看>>
perl 脚本
查看>>
android的语言切换-应用程序 根据 不同的语言 加载不同的 res
查看>>
Android 上Camera分析
查看>>
开发自己的产品,所需要创建的makefile,以及 他们的作用
查看>>
Makefile中常用的函数
查看>>
Makefile的常用语法 及 规则
查看>>
Android Makefile 具体是 如何识别 TARGET_PRODUCT 变量
查看>>