本文共 3383 字,大约阅读时间需要 11 分钟。
今天的课程安排
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* -R1.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 1n 个数 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/