c基础学习总结(一)

(仅个人知识总结,用自己的话写出来的,并非全是对的,无瑕疵的)

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输出字符串时,前面不加地址符号:egscanf("%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:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值