LinuxC 学习保姆级教程(李慧芹课程笔记)
⼀、课前准备
1.Linux 和unbutu 安装
2.虚拟机联⽹
< 和vim 的安装及使⽤说明
⾸先按 :ctrl+shift+T 打开终端输⼊sudo apt install gcc
接着输⼊Ubuntu密码(之前设置的密码)就可以安装gcc啦
4.做⼀个简单的例程感受⼀下吧
(1)⾸先创建⼀个vim吧(vim可以理解为⼀个word⽂档编辑器)vim这个编译器有许多快捷键,不掌握这些快捷键是很难完成编译的 1.输⼊vim hello.c
2.进⼊vim后,按 a 进⼊编辑模式,输⼊下⾯的代码
3.按 esc 键,退出编辑模式。再输⼊ :qw 保存并退出
4.终端输⼊ gcc hello.c -o hello 编译器会⾃动编译hello.c 并⽣成⼀个 hello⽂件
5.输⼊ ./hello 运⾏hello这个⽂件
看到Hello word! 就算成功运⾏这个程序啦!下⾯可以进⼊C语⾔的店铺
⼆、数据类型
1.常量
关注 软件管家 ->回复Linux->点击虚拟安装Linux 系统教程
1
#include <stdio.h>#include <stdlib.h>int main (){
printf ("Hello Wold!\n");exit (0);}
12345678
(1) 整形常量:1,79实型常量:3.14,1.999
字符常量:由单引号引起来的单个字符或转意字符’a’,’\n’,’\015’(⼋进制),’\x7f’(⼗六进制)
(2).字符串常量:由双引号引起来的⼀个或多个字符串组成的序列如"",”a”,”asdXS\n\021”
(3)1标识常量(特点:处理在程序预处理阶段,⼀改全改,但不检查语法,只是单纯宏体与宏名替换)a) #define PI 3.14(⽤宏体替换为宏名)b) #define ADD 2+3(直接转换到上⾯)c) #define MAX(a,b) (a>b?a:b)(4). 什么时候⽤宏,什么时候⽤函数答:节约时间⽤宏,保证稳定⽤函数
2.变量
1. 存储类型:auto static register extern(说明型)
a) auto:默认,⾃动分配空间,⾃动回收空间
b) register:(建议型)寄存器类型 只能定义局部变量,不能定义全局变量,只能定义32位⼤⼩的数据类型,寄存器没有地址,所以寄存器类型的变量⽆法打印出地址查看或使⽤ sush register int i=1
c) static:静态型,⾃动华初始值为0或NULL,并值其变量的值有继承性,仅能在局部使⽤。d) extern:说明型,意味着不能改变被说明变量的值或类型
2.变量的⽣命周期和作⽤范围
a) 全局变量和局部变量全局:从定义开始到程序结束
局部:从当前程序块开始,到程序块结束b) 局部变量和局部变量内部优先
3.运算符和表达式
运算符符号
1.单⽬运算符+、- 、 *、 \、 % 、 ++、 – 、 % 、/
关系运算符< <= >= !=
逻辑运算符!
&&(有零取零) 异或(有1取1)
注意:短路特性 &&左边为0,
linux教程第五版pdf下载赋值运算符= (a = 3 -> a = a 3)
条件运算符? :逗号运算符求字节数sizeof 例:printf(“%d\n”,sizeof(int));
强制类型转换例:a=(int)f;
位运算的重要意义
硬件、电路很多都⽤位运算定义:⽤来保存⼀些特定的内容,并且在程序执⾏过程中随时发⽣变化的量
1
三、输⼊、输出专题
1、格式化输⼊输出函数:scanf、printf int printf(const char *format,)format :"% [修饰符] 格式字符",
输出格式字符⼗进制整数%d ⼗六进制⽆符号整数
%x ⼋进制%o 不带符号⼗进制整数
%u 单⼀字符%c 字符串%s 指数形式浮点数%e 百分号本⾝
%%
修饰符功能
m 输出数据宽度,数据长度<m,左补空格,否则按实际输出
.n 对实数,指定指定⼩数点后位(四舍五⼊)
.n 对字符串,指定实际输出位-输出数据左对齐(缺省右对齐)+指定在该符号数的整数正数前显⽰正号(+)0输出数值时指定左⾯不适⽤的空位⾃动添零#在⼋进制和16进制前显⽰前导0,0x l 在d,o,x,u前指定输出精度为long型l
在e,g,f前,指定输出精度为double型
printf和scanf的注意事项
移位操作 <<(右移) ~(取反) |(按位或,有1取1)
^(按位异或,同值取零不同取⼀)&(按位与,有零取零)
例: 将操作位中第n 位置1 num=num | 1<<n
将操作数中第n 位清0,其他位不变:num=num&~(1<<n) 测试第n 定位:if(num & 1 <<n)
从⼀个指定宽度中取出其中某⼏位:段中取出⼏位
12345678910
printf("%s,%d\n",__FUNCTION__,__LINE__)
/* \n 有强制刷新缓冲区的作⽤==查错时printf 习惯性加\n
123
2、字符串输⼊输出函数:getchar、putchar getchar,回收字符,尤其时功能字符回车、空格等
3、字符串输⼊输出函数:gets(!)的、对缓冲区不做检查,puts 最好不⽤gets,⽤getline
四、流程控制
顺序、选择、循环 NS图,流程图 ⼯具Dia 简单结构与复杂结构:⾃然流程1. 顺序:语句逐句执⾏2. 选择:出现⼀种以上情况
3. 循环:在某个条件成⽴的情况下,重复执⾏某个动作关键字:
选择:if-else switch-case 循环:while do-while for if-goto 辅助控制:continue break
1.详解:if-else:
格式 if (exp)cmd;else if(exp)cmd;
注意:else只与它最近的if相匹配
2.详解 switch-case
语法格式:switch(exp){
case 常量表达式: break; case 常量表达式 break; … default: } 3.详解循环:while while 最少循环0次 do-while ⾄少循环1次
4.for:(最少循环0次)
佛如(exp1;exp2;exp3)loop;
if-goto:(慎⽤:go-to实现的是⽆条件的跳转,且不能跨函数跳转)
5.死循环:
while(1);for( ; ; );杀死死循环ctrl+c
6.辅助控制关键字: break continue
break跳出本层循环continue跳出本次循环
选择循环练习题
(1)投资问题:以每年10%的单利息投资了100美元,B 以每年5%的符合利息投资了100美元。编写⼀程序,计
scanf("%d",&i)
//%s 慎⽤,超出会发⽣越界,因为不知道存储空间⼤⼩
scanf 放在循环很危险,注意能否接收到正常有效的内容,输出加\n ⼀般情况输⼊什么你就⾥⾯写什么scanf("")
12345
算要多少年B 的投资总额会超过A 的,并且显⽰出到那个时候两个⼈的各⾃总资产
(2)从终端读⼊数据,直到输⼊0值为⽌,计算出其中的偶数的个数及平均值和奇数的个数及平均值(3)从终端输⼊若⼲字符,对其元⾳字母进⾏统计(4)写出斐波那契数列的前40项(不能⽤数组实现)
1 1
2
3 5 8 13 21 。。。
(5)输出九九乘法表
(6)百钱买百鸡:鸡翁⼀,值钱5;鸡母⼀,值钱三;三鸡雏,值钱⼀,问鸡翁,鸡母,鸡雏各⼏何?
(7)求出1000以内的⽔仙花数(各位数的⽴⽅和为数本⾝)如153=1+125+27
(8)求出1000以内的所有质数:2,3,5,7,11,13,17,19…
#include <stdio.h>#include <stdlib.h>static void text6(void ){
int x ,y ,z ,s ; for (x =0;x <20;x ++) {
for (y =0;y <100/3;y ++) {
z =100-x -y ; s =5*x +3*y +z /3; if (s ==100&&z %3==0) {
printf ("man=%d\twoman=%d\tchlidren=%d\n",x ,y ,z ); } } }}int main (){ text6(); exit (0);}
1234567891011121314151617181920212223
static void text7(void ){ int i ; int a ,b ,c ;
for (i =100;i <1000;i ++) { a =i /100; b =i %100/10; c =i %10;
if (a *a *a +b *b *b +c *c *c ==i )
printf ("The narcissistic number is:%d\n",i ); }}
12345678910111213
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论