(仅个人知识总结,用自己的话写出来的,并非全是对的,无瑕疵的)
DAY0:虚拟机、ubuntu的安装,vi编辑、gcc调试的使用;
有/ 即为绝对路径,无法更改
有~为相对路径,
pwd 显示当前目录的绝对路径
cd ~ cd 相对路径;当前系统登录的用户家目录
----略;
DAY1----基本数据类型
知识点1:标识符(变量名),eg :int a;
标识符的命名规则:
(1)只能由字母、数字、下划线组成,第一个字符必须是字母或者下划线;
(2)要区分字母大小写;
(3)不能用关键字同名。
知识点2:数据类型和对应的printf输出格式(基本)
1、整型 int 存储大小4字节 32bit(64位机) 范围-2147483648~+2147483647,即2^31-1 ==》(十进制输出形式)%d;(32位机,int也是4字节)
unsigned int(无符号) 范围0~4294967295 ==》%u
short (int) 16bit 2字节 范围 -32768~32767 ===》%hd;
long(int)64bit 8字节 范围-2147483648~+2147483647 ==》%ld
long long ==》%lld
扩展:
2、浮点型 float 32bit 4byte 有效数字:6~7,即这个数字从整数小数有效只有6~7位,超出的部分并不是原先数据,随机;取值范围-3,4*10e-38~3.4*10e38; ===>%f(十进制)
double 64bit 8byte 有效数字 15~16 范围很大 ===》%lf
long double 16byte 有效数字19 ==>%Lf
3 、字符型 char 1byte 范围-128-127 ===》
=>%c ----单个字符;
=》%s-----字符串,eg:char str[20]
注意:scanf输出字符串时,前面不加地址符号:eg;scanf("%s",&Name)错误,应该不要&,scanf("%s",Name)
知识点3: 一些杂七杂八的小东西(待更新补充)
1、如图:printf 输出%时,(即取余符号时),前面应该还有一个%,即%%!!!!还有%参与的运算对象必须是整数!
2、使用数学库函数时,gcc调试后面应该加上-lm,才能链接到数学库函数;
3、连续输入多个scanf和printf,中间或者后面的scanf会被跳过,再scanf(%d,&a),再%前面加\n即可解决这个问题;或者在scanf前面加fflush (stdin);
4、关于i++和++i:
(1)对于普通的独立语句,两者一样:
i++,与++i 均表示i=i+1;
(2)对于赋值语句,如y=i++,x=++i,i=3
y=i++,y=i=3,i=4; i++是先赋值,后加1
x=++i,i=4,y=i=4;++1是先加1,后赋值
(3)对于判断条件表达式,如
1)i++是先执行判断,后加1
#include <stdio.h>
int main()
{
int i=0;
while(i++)
{
printf("%d\n",i);
if (i==3)
break;
}
printf("%f\n",(float)i);
return 0;
}
i=0,while(0),为否,不执行while循环体,i=i++=1,输出
2)++i是先赋值后判断
#include <stdio.h>
int main()
{
int i=0;
while(++i)
{
printf("%d\n",i);
if (i==3)
break;
}
printf("%f\n",(float)i);
return 0;
}
++i,先加1后赋值,i=1,while(1),输出1;再进入循环,i=2,while(2),输出2;i=3,输出3,跳出循环,输出3.000;
DAY2---控制语句学习和一些小知识补充
知识点1:强制类型转换
eg:
#include <stdio.h>
int main()
{
int m=5
printf("m/2=%d\n",m/2);
printf("(float)(m/2)=%f\n",(float)(m/2));
printf("(float)m/2=%f\n",(float)m/2);
return 0;
}
m/2=2 (float)(m/2)=2.000000 (float)m/2=2.500000
知识点2:三大基本结构:顺序、选择和循环:
顺序结构:先后顺序一条一条执行,每个语句都会被执行;
条件结构: 通过条件判断,选择执行哪一个;
循环结构:在某些条件的控制下,重复执行某段代码;
- (1)while和do-while的区别和共同点:
区别:while先判断,再执行循环;do while先运行一次,再判断;
一开始输入为假,两者结果会不同,若一开始为真,结果相同;
- (2)for 循环
for (表达式1; 表达式2; 表达式3) {
循环体x;
}
表达式1:循环的初始条件,只执行一次。可以为0个、1个或多个变量设置初值
表达式2:判断循环结束的条件。在每次执行循环体前判断此表达式,若表达式为真则进入循环,否则不执行循环
表达式3:作为循环的调整(即改变循环状态),在执行完循环体之后执行---------即步骤为1-2-x-3(-2-x-3),3在X后面
知识点3 :关于3大基本结构的小题目(待补充)
经典题(1):输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
经典题(2):画菱形(两个方法的核心思想是一样的)
分析:
---*
--***
-*****
******* ------上四行:
分为倒三角和正三角组成 :即两个平行的for;
-:第一行:3列 *:1列
第二行:2列 3列
第三行:1列 5列
第四行:0列 7列 -----找行与列的关系
倒三角就是4-行;正三角就是行~~~思考找关系
-*****
--***
---* ---下三行
两种方法:1、做新的123行,找规律如方法二
2、把上面四行的方法倒过来:即行数为321 ,如方法一。
方法一
方法二:
经典题(3):数兔子
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1,1,2,3,5,8,13,21。。。。。。。
分析:这其实就是Fibonacci数列:f(n)=f(n-1)+f(n-2) n>=2;
知识点4:return、break和continue用法
Continue:
当j==1时,结束当次循环,继续下次循环即j=2时,打印出2
注意:是结束当前循环,不仅仅是结束if条件结构,还有第二个for循环;
Break:
J=1时,跳出当前循环,直接执行上一个循环
return 跳出整个main函数,结束;
知识点5:关于宏定义
#define max 100 ==》宏定义:只代入不运算
eg: