计算机培训 c语言知识点概要


    C语言章节复
    第章:C语言概述
    1C语言特点
    1)C程序main()函数
    2)C程序文件main()函数
    C程序总main()函数开始执行
    3)C程序基单位 函数
    4)C函数基单位 语句
    5) C程序语句必须 结束
    6)C程序 * * 作注释开始结尾
    7)C程序语句写行
    8)C程序行写语句
    :a10 printf(d\na)
    9)C语言区分写 _
    10)C语言没输入输出语句函数代
    11)#编译预处理include包含语句
    12)C识半角语言字符全角果想输出汉字必须函数括起
    第二三章:数类型运算符表达式标准输入输出
    1 C程序标识符 字母 数字 划线 组成第1字符必须 字母 划线____
    2 常量
    整型:三种表示形式:a)十进制整数例:12b)八进制整数例:012c)十六进制整数0258387503570x35b6945L
    实型:两种表示形式:a)十进制数形式例:123456b)指数形式例:1e323e31367950584510005e5124e10125E2
    注意:1)E指数部分必须整数
    2)字母Ee前必须数
    3)字母Ee前数字间空格
    字符型: ’括号括起单字符
    1)普通字符:’a’’B’’’’’’#’’’
    2) 转义字符:’\n’ ’\t’ ’\r’ ’\b’ ’\\’ ’\’’ ’\’
    3) \加1~3位八进制表示字符(范围0~377)’\54’’\127’ ’\07’
    \x加1~2位16进制表示字符’\x54’’\xa7’ ’\xaf’
    字符串型: 括号括起字符c语言动面加’\0’
    This is a mapbdWQ\\hm\bab\’89\4A\tOU
    符号常量:#define PI 314
    #define EOF (1)
    3 变量包含五素类型名称容址存储类型
    4填写表
      类型
    表示
    占字节数
    (视系统定) 
    表数范围/效位数
    输出格式
    整型
    Int
    2
    32768+32767
    d o x
    符号整型
    unsigned
    2
    0~65535
    u o x
    长整型
    Long
    4
    2147483648 +2147483647
    ld lo lx
    单精度浮点型
    Float
    4

    f e g
    双精度浮点型
    Double
    8

    lf f e
    字符型
    Char
    1
    0~255
    c
    字符串型
    char
    N
    n
    s
    5 类型数进行混合运算时数转换方式两种:动转换强制类型转换中前种转换方式规:低类型转换成高类型赋值号右边类型转换成左边类型
    6 printf(格式控制输出列表)
    1) 格式控制包括:原样输出字符格式符转义字符
    格式符包括(doxXufeEgGcsp)
    2) 输出列表常量变量表达式输出值项间分隔
    3) 格式控制输出列表类型项数相
    4) 指定宽度mmn
    A) m表示输出总宽度实际宽度m时实际位数输出printf(6d3d\n3587 3587)
    B) n表示四舍五入输出数位数表示取字符串左端n字符
    printf(73f54s5905327abcderf)
    5) 加Ll:输出long型double型
    6) 加减号:左齐
    7) 加0:左边补0
    7 scanf((格式控制输入址列表)
    1) 格式控制包括:格式符原样输入字符
    2) 址列表定址:普通变量址字符串数组名(首址)
    3) 输入项间空格Tab键回车分隔
    4) 格式符前加l表示输入长整型数(ldlolxlu)double数(lfle)
    5) 格式符前加数字m指定输入数宽度指定精度mn
    :scanf(3d4d&a&b)
    6)加*m表示跳(丢掉)m列
    :scanf(4d*3d4d&a&b) (分输入12 345 67123456789)
    7)scanf()输入字符串时遇空格输入结束
    8 算术运算 (+*++)
    1)两整数相结果整数两实数相结果double实数
    :508 值:__6_____ 508 值:___6125____
    printf(df\n508508) 结果_______
    2) 取余运算适整数余数符号数符号相
    :508 值:_______ 508 值:_______
    508 值:_______ 508 值:_______
    3)增减运算
    A)++ii:变量值先加1减1然新值进行运算
    B)i++i:变量先原值参运算然值加1减1新值表达式语句生效:
    main()
    {int i3jk
    ji++kii++
    printf(ddd\nijk)
    }
    执行i3j(i++)+(i++)+(i++)i值___6____j值___9____
    执行i3j( ++ i)+(++i)+(++i)i值___6____j值___18____
    C)++运算变量常量表达式
    D)注意区普通变量增数组指针变量结构数组指针变量增减意义
    :int a3b[5]*pb
    a++p++意义
    4)算术运算优先级++ * +
    9 赋值运算(+*…)
    a) 赋值号左边必须变量右边常量变量表达式
    b) 赋值变量值变新赋值原值掉法恢复
    c) 赋值运算结合性右左
    :执行a10 a+aa*aa值:________
    a5执行a+a*a3a值__________
    4)区a10aa10~aa<<2
    10 关系运算(><>< )
    a) 关系运算结果:01
    b) 关系运算非零数成1
    c) ><><优先级高
    11 逻辑运算(&&||非)
    a) &&:两数1’结果1
    b) ||:两数0’结果0
    c) 非:0非1 1非0
    d) 优先级:高&&居中||低
    e) 注意短路现象
    12条件运算(式1式2:式3)
    1) 条件运算优先级仅高赋值运算逗号运算
    2) :x4y6zx>yx+yxyz值________
    x4y6zx+5>yx+yxyz值________
    x4y6z5z+x+5>y+3x+yxyz值________
    13逗号运算(式1式2…式n)
    1) 次计算表达式值表达式值作整逗号表达式值
    2) 逗号运算优先级低
    :表达式(x(a2a+7)b5))值________
    a5执行语句xa+7b5 x
    3) 逗号表达式表达式构成新逗号表达式
    :表达式(x2*5x*5)x+5值
    4) 出现方作逗号运算符(intprintfscanf)
    :printf(dd\n(xyz)z)
    14sizeof()运算符
    1)计算类数占存储空间字节数
    2)括号常量变量类型说明符等
    int ab[20]char *pabcdefghi
    sizeof(5)sizeof(52)sizeof(a’)sizeof(abcde)
    sizeof(a)sizeof(b)sizeof(p)
    sizeof(char)sizeof(double)sizeof(strucu student)
    15运算优先级
    1级()[ ]>
    2级单目运算~*&++ 右左
    34级算术运算:*+
    5级移位运算:<< >>
    左移位等该数*2右移位等该数2取整
    67级关系运算:><><
    8910级位运算:&位^(异)|位
    先化二进制进行位运算中异算法两位相0两位相异1
    1112级逻辑运算:&&||
    13级条件运算:式1?式2:式3右左
    14级赋值运算:+*结合性右左
    15级逗号运算:式1式2… 式n

    第四章:选择结构
    特注意:C语言中非0表示逻辑真0表示逻辑假
    C语言构造类型没逻辑类型
    关系运算符号:注意<写法区(考试重点)
    if面语句请括号
    If(a) if(a)表示什意思

    1单分支:if (表达式)
    语句
    功:先计算表达式值1执行语句然执行续语句
    0直接执行续语句
    2双分支:if (表达式)
    语句1
    else
    语句2
    功:先计算表达式值1执行语句1然执行续语句
    0执行语句2然执行续语句
    说明:1)应if语句成条语句分两部分写两行缩
    2)语句包含条时{}括起组成复合语句
    3)分支双分支构成
    4)else总if结合
    5)分支形式种构成if…else嵌套
    6)分支单分支完成
    7)条件表达式中运算&&&&前面式子值0运算&&面式子:
    main()
    {int abk
    a
    b
    结果
    1
    5
    5 0
    4
    5
    4 3
    4
    0
    3 1

    if(++a<0&& b printf(dd\nab)
    else
    printf(dd\nba)
    printf(dd\nab)
    }
    3分支:if (表达式1)
    语句1
    else if (表达式2)
    语句2
    else if (表达式3)
    语句3
    else
    语句4
    4分支:switch (表达式)
    {case 常量表达式1:语句1
    break
    case 常量表达式2:语句2
    break
    ……
    case 常量表达式n:语句n
    break
    default 语句n+1
    }
    1)功:先计算表达式值case常量表达式相时进入相default中进入进入序执行遇break退出switch语句
    2)default语句位置先
    3)表达式结果整型值字符值case面定整型常量字符常量
    表达式0453+250A’b等i+3abcd等
    例:main()
    {int a
    scanf(d&a)
    switch(a3)
    {case 1 a+1
    case 2 a+2
    case 3 a+3
    case 4 a+4
    case 5 a+5
    default a+10
    }
    printf(ada)
    }

    4)写出列程序结果
    main()
    {int xy
    scanf(d&x)
    输入x值
    Y值
    5
    1
    0
    0
    4
    1

    y1
    if (x<0)
    if (x0)
    y0
    else
    y1
    printf(d\ny)
    }


    第五章:循环结构
    1while循环
    while (表达式)
    循环体
    2do…while循环
    do {
    循环体
    }
    while (表达式)
    3for循环
    for (表达式1表达式2表达3)
    循环体
    4说明
    1)理解三种循环执行程
    条件1执行循环体条件0退出循环执行续语句
    2)整循环语句作语句写成两行注意缩
    3)注意if语句区:条件表达式if语句判断执行次循次判断执行
    4)注意简易方法分析循环
    5)注意if语句连时分析
    6)理解双循环执行程
    7)进入循环前注意某变量赋初值:求s0求积n1排序求公约数等
    8)条件表达式中运算&&&&前面式子值0运算&&面式子:
    main()
    a
    b
    结果
    7
    7

    8
    6

    8
    4






















    {int a5b8
    while(++a>7&&b<7)
    printf(dd\nab)
    printf(dd\nab)
    }

    5break:①结束整循环
    ②跳出循环跳出外层循环
    ③循环switch语句
    6continue结束次循环开始次循环
    7程序举例:
    1)判断数否素数输出 100~200间素数数(例5758)
    2)计算∏值(见例54p100)
    3)计算级数值(见题58P113)
    4)求阶n


    第六章:数组
    数组
    维数组
    1定义意义
    格式:数类型 数组名[整型数]
    :int a[10]
    意义:定义10变量(元素)变量存放整数
    a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
    说明:标0开始定义时标整型数整型数表达式符号常量变量
    :#define N 10
    int a[10] score[N]b[4+6]
    2赋值:
    1)直接赋值 a[0]6 a[1]5 a[2]a[0]+a[1]
    2)定义时赋值
    int a[10]{75389121064}
    float b [20]{658946}
    注意:A)定义时赋初值元素值确定赋值部分余元素值0\0’
    B)省略标 int a[ ]{75389121064}
    C)赋值数标数否系统会报错
    D)int a[10]{ }int a[10]{75 912 }
    3)键盘赋值:scanf(d&a[0])(循环元素赋值)
    3输出:数值数组必须单独输出printf(da[0])
    4数组存储:元素先序存储数组名表示首址常量定义赋值
    5注意区:定义时赋值非定义时赋值
    :int a[10]{75389121064}
    a[10]{75389121064}(错误)
    6例题:
    1)找出列数值输出(三种方法编程)
    3 2 5 9 6 4 7 10 8 1
    2)输入10整数找出值输出值位置
    3)键盘输入10整数输出计算均值
    4)键盘输入10整数存入数组中然数倒置输出
    5)列数排序输出(分选择排序泡排序直接交换排序编程)
    3 8596210714

    二字符数组
    1字符数组作:存放字符串(string)字符串双引号括起串字符面动加’\0’ABCDEStudent This is a map
    2字符数组定义意义
    格式:数类型 数组名[整型数]
    :char s[10]
    意义:定义10变量(元素)变量存放字符
    s[0]s[1]s[2]s[3]s[4]s[5]s[6]s[7]s[8]s[9]
    3赋值:
    1)直接赋值 s[0]’A’ s[1]’m’ s[2]’7’
    2)定义时赋值
    char s[10]{A’’B’’C’’D’’E’’F’’G’’H’’I’’’’\0’} *需手工加’\0’*
    char s[10]{ABCDEFGHI}
    char s[10]ABCDEFGHI
    注意:定义时赋初值元素值确定赋值部分余元素值0\0’
    3)键盘赋值:
    scanf(c&s[0]) *循环元素赋值接收意字符*
    scanf(ss) *面写数组名输入时空格回车Tab键作结束字符串动加’\0’*
    gets(s) *输入时回车键作结束字符串动加’\0’*
    strcpy(sABCDE)
    4输出:
    printf(cs[i]) *循环输出*
    printf(ss) *整体输出面写数组名遇’\0’结束*
    puts(s) *整体输出面写数组名遇’\0’结束输出完换行*
    5数组存储:元素先序存储数组名表示首址常量定义赋值
    6字符串处理:前遍
    7例题
    1)输入字符串然输出(三种方法输入输出ABCDEFGIHJ)
    2)输入句英文统计出英文字符数
    3)输入段文字中写字母转换写然输出
    4) 输入行字符统计中字母数字字符数
    5) 输入行字符串复制字符数组中
    6 ) 输入两字符存入St数组中t连接s面
    三字符串处理函数
    1输入字符
    格式:cgetcher() scanf(c&c)相
    功:键盘接收字符存变量C中接收意字符
    2输出字符
    格式:putchar(c)
    功:C中字符显示屏幕
    :putchar (A’) char c’A’ putchar(c)
    3输入字符串
    格式:gets(s)
    功:接收字符串存入数组s中输入时回车键作结束字符串动加’\0’
    4输出字符串
    格式:puts(s)
    功:数组s中字符串输出屏幕遇’\0’结束输出完换行
    5求字符串长度
    格式:strlen(s)
    功:返回字符串含字符数(长度)’\0’记
    :char s[50]ABCDEF
    strlen(s) 结果:6
    strlen(This is a map) 结果:14
    6字符串复制
    格式:strcpy(st)
    功:数组t(源)中字符串复制s(目标)中
    :char s[20]t[20]ABCDE
    strcpy(st)
    strcpy(sstudent)
    说明:源定字符串变量目标字符串变量字符串常量
    7字符串连接
    格式:strcat(st)
    功:字符串t连接字符串s
    :char s[50]abcdet[20]m123
    strcat(st) 结果:abcdem123
    strcat(sxyz) 结果:abcdexyz
    说明:源定字符串变量目标字符串变量字符串常量
    8字符串较
    格式:strcmp(st)
    功:st中字符较s返回正整数n s返回负整数n相等返回0
    :strcmp(abcfabcdefg) 结果 2
    strcmp(abcdabcdefg) 结果101
    strcmp(ABCDEABCDE) 结果 0
    说明:两字符串字符串变量字符串常量
    9说明:
    getcher()putchar(c)gets(s)puts(s)包含stdioh中
    strlen(s)strcpy(st)strcat(st)strcmp(st) 包含stringh中
    10例:
    意输入两字符串存入a中存入b中然输出
    四二维数组
    1定义意义
    格式:数类型 数组名[m][n]
    :int a[3][4]
    意义:定义3行4列3*4变量(元素)变量存放整数
    a[0][0]a[0] [1]a[0] [2]a[0] [3]
    a[1][0]a[1] [1]a[1] [2]a[1] [3]
    a[2][0]a[2] [1]a[2] [2]a[2] [3]
    2赋值:
    1)直接赋值 a[0][0]6 a[0][1]5
    2)定义时赋值
    int a[3][4]{123456789101112}
    int a[3][4]{{1234}{5678}{9101112}}
    int a[][4]{{123}{56}{9}}
    注意:A)定义时赋初值元素值确定赋值部分余元素值0\0’
    B)省略第标 int a[ ][4] {12345678910 }
    3)键盘赋值:scanf(d&a[0][0])(输入双循环元素赋值)
    3输出:数值数组必须单独输出双循环输出元素
    printf(da[0][0])
    4数组存储:行序存储数组名表示首址常量定义赋值
    :main()
    {int a[3][4]{123456789101112}ij
    for(i0i<3i++)
    for(j0j<4j++)
    printf(d a[i][j])
    printf(\nu a)
    }
    5例
    1)编程:求5行5列矩阵角线元素
    2)编程:4行4列矩阵转置
    3)某班30四门课程语文数学英语专业课编程输入成绩求总分均分科科分
    五二维字符数组
    1定义意义
    格式:数类型 数组名[m][n]
    :char s[3][10]
    意义:定义3行10列3*10变量(元素)变量存放字符
    行存放字符串存s[0]s[1]s[2]中
    s[0] s[0][0]s[0] [1]s[0] [2]s[0] [3]……s[0] [9]
    s[1] s[1][0]s[1] [1]s[1] [2]s[1] [3] ……s[1] [9]
    s[2] s[2][0]s[2] [1]s[2] [2]s[2] [3] ……s[2] [9]
    2赋值:
    1)直接赋值 s[0][0]’A’ s[0][1]’B’
    2)定义时赋值
    int s[3][10]{A’’B’’C’’\0’}
    int s[3][10]{ABCXYZMNOPQ}
    int s[][10]{chismchangechankchar check }
    3)键盘赋值:
    次输入字符:scanf(c&s[0][0])
    s[0][0]getchar()
    次输入字符串:scanf(ss[0])
    gets(s[0])
    3输出:
    次输出字符:printf(c s[0][0])
    putchar(s[0][0])
    次输出字符串:printf(ss[0])
    puts(s[0])
    4例
    1)输入列五字符串排序输出
    chismchangechankchar check

    第七章 函数
    1函数定义
    1) 函数定义格式
    类型 函数名(形参列表) *函数首部*
    {语句组 *函数体*
    return 式子
    }
    2)类型:指函数返回值类型intfloatcharlongvoid…
    中int型省略
    3) 形参列表:子函数调函数接收数变量(等赋值左边)形参说明类型分隔没形参
    4) 函数体:完成相应功
    2函数调:
    1)格式:函数名(实际参数)
    2)说明:实际参数函数传递子函数数等赋值右边数变量式子
    3)调形式:
    ①函数作单独行语句进行调mj(ab)
    printf(…)
    ②函数作表达式部分 xmj(ab)
    nsqrt(x)
    ③函数作函数参数进行调:printf(f\n mj(ab))
    printf(f\n sqrt(x))
    3函数返回:函数返回return返回执行函数尾动返回调函数函数返回值时须函数定义void型
    4函数说明:
    A)般子函数应写前面函数写面果函数定义调应先进行说明正确调
    B)说明方法:定义时函数首部相似加分号省略形参int型函数说明float mj(float afloat *b)
    float mj(floatfloat *)
    C)说明位置:函数部外部
    5函数运行程:
    运行函数前部→调子函数→运行子函数→返回函数→运行函数部
    6函数参数传递(特注意函数子函数中变量名意情况)
    1)赋值调:赋值调时函数实参值复制份传递形参进行单传递实参常量变量表达式
    2)传址调:传址调函数调函数变量址传子函数中调语句采swap(&a&b)传递存址子函数参数般指针型swap(int *aint *b)
    7数组调
    1)维数组 int a[10]{ 12345678910}
    ①调时般传递数组名数组子函数fun(a10)
    ②子函数首部形式:fun(int a[]int n)fun(int *aint n)
    种形式子函数指针指函数首址
    2)二维数组 int a[3][4]{123456789101112}
    ①调时般传递数组名行数子函数fun(a3)
    ②子函数首部形式:fun(int a[][4]int n)fun(int (*a)[4]int n)
    3)字符串数组般传递数组名
    8函数嵌套
    1)意义:函数中调函数函数嵌套
    main()调a()函数a()函数调b()函数 b()函数调c()函数…
    2)函数递调:
    函数身调身main()调a()函数a()函数调a()函数…
    9局部变量全局变量
    1) 局部变量:函数定义函数块定义函数块效退出函数块时动释放定义初值定
    2) 全局变量:定义函数外变量定义开始程序文件结束变量直效初值0
    3) 分析列程序运行结果
    练1 练2
    int m13 main()
    int fun2(int xint y) {int a3b2c1
    {int m3 c++b
    return(x*ym) b*a+c
    } {int b5c12
    cb*2
    main() ac
    {int a7b5 printf(dddabc)
    printf(d\nfun2(ab)m) a+c
    } }
    printf(ddd\nabc)
    }
    10变量存储类型
    动态存储 动变量:auto
    1)变量存储类型 寄存器变量register
    静态存储 静态变量static
    外部变量extern

    2)特点
    名称
    表示
    初值
    函数结束存储空间
    特点
    动变量
    auto

    动释放
    默认auto变量
    寄存器变量
    register

    动释放寄存器
    存放cpu寄存器中cpu寄存器够时转auto
    静态变量
    static
    0’\0’
    释放
    次进入进行次定义初始化
    外部变量
    extern
    0’\0’
    释放
    1)外部变量进行说明
    2)面定义变量提前
    3)程序文件间变量引
    11 程序举例
    P184185:题13911


    第八章:指针
    指针基知识
    引例:int abx[10]{12345678910}*p*q
    通列程序变量名称容址
    #include
    #define N 10
    main()
    {int x100y200a[N]{12345678910}*p&a*qxi
    printf(\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n x y ) *显示xy名称*
    for (i0i printf(a[d] i)
    printf(\n6d6dxy) *显示xy容*
    for (i0i printf(6da[i])
    printf(\n6u6u&x&y) *显示xy址*
    for (i0i printf(6u&a[i])
    }
    1指针变量:定义时带*号变量存放变量址种变量称指针变量
    指针变量存放变量址说指变量
    2指针定义方式意义
    类型 *变量名
    :int a5b10*p&a*q&b
    float mn*x
    char s[10]ABCD*ch

    int *p[5] 意义:
    int (*p) [5] 意义:
    int **p1 意义:
    指针变量六属性:
    指针变量名称类型容址存储类型指针变量指容
    3指针赋值(赋值画指图)
    1) 变量址赋指针变量:int a*p p&a
    2) 数组名赋指针变量:float a[10]*x xa
    3) 指针变量赋指针变量 :int a10*p&a*q qp
    4)赋空值:(0’\0’NULL):char *c cNULL
    5)赋值形式:定义时赋值 int a*p&a
    定义赋值 p&a
    6)注意:指针变量值存中址数值表达式指针变量赋值指针变量存放类型变量址
    :int *p
    p1000 p400+1500 (错)
    char c p&c (错)
    4指针引:取值运算符*存取指变量值
    :*p5 *x4565
    b*p+*x printf(d d\n*p*x)
    5说明:
    1)注意区定义时*p引时*p
    int *a
    *a8
    2)类型指针变量占存储空间2字节(存址0~65535)
    6例键盘输入两整数交换值输出
    二指针数组(数组首址某元素址指针指针数组建立联系)
    1维数组: int a[10]{2468101214161820}*pa
    容:a[0]~a[9]p[0]~p[9]
    *a*(a+0)~ *(a+9) *p*(p+0)~ *(p+9)
    址:&a[0]~&a[9]&p[0]~&p[9]
    a (a+0)~ (a+9) p (p+0)~ (p+9)
    2指针运算(指针运算前必须先指针指数组)
    指针加(减)整数结果指该数组元素
    指针增(减)结果指该数组()元素
    两指针相减结果相距元素数
    3二维数组指针:
    1)二维数组转化维指针
    int a[3][4]{24681012141618202224}*pa
    容:a[0][0]~a[2][3]p[0]~p[11]
    **a*(*(a+0)+0)~ *(*(a+2)+3) *p*(p+0)~ *(p+11)*(a[i]+j)*(a+i)[j]
    :a[1][2]表示:*(p+7)p[7]*(*(a+1)+2)*(a[1]+2)*(a+1)[2]
    址:& a[0][0]~&a[2][3]&p[0]~&p[11]
    a (a+0)~ (a+2) *a *(a+0)+0~* (a+2)+3p (p+0)~ (p+11)
    2)二维数组a[n][m]转化二维指针:建立行指针(*p)[m]
    3)二维数组a[n][m]转化二维指针:建立指针数组*p[n]
    已知int a[4][5]{1 2 3 4 56 7 8 9 1011121314151617181920}
    数组a[n][m]
    维指针p
    行指针(*q)[m]
    数组指针*r[n]
    int a[n][m] *p (*q)[m] *r[n]
    赋值
    pa
    qa
    ra(赋值错误)
    r[0]a[0]
    r[1]a[1]…
    a[1][2]
    p[6]
    q[1][2]
    r[1][2]
    *(a[1]+2)
    *(p+6)
    *(q[1]+2)
    *(r[1]+2)
    (*(a+1))[2]

    (*(q+1))[2]
    (*(r+1))[2]
    *(*(a+1)+2)

    *(*(q+1)+2)
    *(*(r+1)+2)











    4例题:
    例1:种方法显示维数组容(址)(4种方法)
    2468101214161820
    例2:种方法显示列二维数组容(址)
    int a[4][5]{1 2 3 4 56 7 8 9 1011121314151617181920}
    main()
    {
    int *p(*q)[5]*r[4]ij
    pa
    qa
    for (i0i<4i++) *ra赋值*
    r[i]a[i] 行址
    for (i0i<4i++)
    {for(j0j<5j++)
    printf(4d(*(a+i))[j]) * 注意(*(a+i))外括号少 *
    printf(\n)
    }
    }

    例3:int ija[3][4]{24681012141618202224}*pa*qa+1
    显示容14显示14址
    三字符数组指针
    1维字符数组指针
    1)字符串两种存储方式意义:
    char a[10]*pa 采字符数组方式
    char *pStudent 采字符指针方式
    pxyz
    2)字符串数组字符串指针区
    (1)字符数组已事先预备空间字符串定存入空间里数组名常量
    (2)字符指针事先预备空间字符串放里指里指针名变量
    注意:果指针没指赋值
    :char *p p[0]’a’p[1]’b’错误
    (3)赋值方法:
    定义时赋值 char a[10]abcd*babcde
    键盘输入赋值 gets(a) gets(b)
    直接赋值 a[0]’a’a[1]’b’ bxyz
    aStudent(错误) bStudent (正确)
    2二维字符数组指针
    1)定义意义
    char s[5][20]
    char *p[5]
    二维字符数组第维表示少字符串第二维表示字符串少字符
    字符指针数组表示少指针指针指字符串
    2)赋值方法:
    定义时赋值:char s[5][20]{abcmnopqxyxze1235m1235}
    char *p[5] {abcmnopqxyxze1235m1235}
    键盘输入赋值:scanf(ss[i])
    scanf(sp[i])
    直接赋值:s[0][0]'a'
    p[0]abcdef
    3注意区数值数组字符数组
    1)数值数组名表示首址字符数组名表示首址时表示整字符串
    int a[]{123…} char b[]This
    printf(d\nsab) (a错误)
    2)定义赋初值时
    int a[10]{123…} char b[10]{Student}c[]map
    3)输入输出时方式
    数值数组输入输出字符数组输入输出整体输入输出
    4)维字符数组表示字符串二维字符数组表示字符串50姓名
    4例:1)键盘输入五整数找出整数输出
    main()
    {int a[5]imax
    for(i0i<5i++)
    scanf(d&a[i])
    maxa[0]
    for(i1i<5i++)
    if(max maxa[i]
    printf(maxd\nmax)
    }
    2)键盘输入五字符串找出字符串输出
    #include
    #include
    main()
    {char a[5][20]max[20]
    int i
    for(i0i<5i++)
    scanf(sa[i])
    strcpy(maxa[0])
    for(i1i<5i++)
    if(strcmp(maxa[i])<0)
    strcpy(maxa[i])
    printf(maxs\nmax)
    }

    四二重指针:存放指针变量址变量称二重指针
    : main()
    {int ab*p&a**q&p
    a10
    *p20
    **q100
    printf(d\na)
    }
    五区练
    1区
    int *p p *p *p++ *(p++) (*p)++ *p+1 *(p+1)
    2练:
    1)定义int a[]{1223314759}*pa *q&a[4]
    *p值_________ *q值_________
    *p++值_________ *q++值_________
    (*p)++值_________ *(q)值_________
    *p+1值_________ *(q1)值_________
    2)定义int a[2][3]{123456}*pa
    a[1][0] 值________ *(*(a+0)+1) 值________
    p[4] 值________ *(p+2) 值________


    第九章 结构体体枚举
    结构体
    1结构体定义意义
    struct 结构体名
    {类型 成员变量表1
    类型 成员变量表2
    类型 成员变量表3
    ……
    }
    1)学生信息包括学号姓名年龄性址语文数学英语总分均分
    struct student
    {int num
    char name[10]
    int age
    char sex[3]
    char addr[20]
    int ywsxyysum
    float avg
    }
    2)说明:见课p249
    3)结构体定义时嵌套递
    2结构体变量定义四种方法意义存储
    1)定义结构体定义结构体变量
    struct student s1*p
    2)定义结构体时定义结构体变量
    struct student
    {int num
    char name[10]
    int age
    char sex[3]
    char addr[20]
    int ywsxyysum
    float avg
    } s1*p
    3)定义结构体时定义结构体变量省略结构体名
    struct
    {int num
    char name[10]
    int age
    char sex[3]
    char addr[20]
    int ywsxyysum
    float avg
    } s1{1zs18ncz859077}*p&sla
    asl
    4)先结构体取名名定义结构体变量
    typedef struct student
    {int num
    char name[10]
    int age
    char sex[3]
    char addr[20]
    int ywsxyysum
    float avg
    }ST
    ST s1*p
    3结构体变量引
    结构体变量成员名 s1name s1sum
    结构体指针变量>成员名 p>name p>sum
    4结构体变量赋值|
    1) 定义变量时赋值(初始化)
    2) 直接单独赋值
    s1age18
    s1yw85
    p>sx96
    strcpy(s1nameWangJun) *错误:p>name WangJun*
    3)键盘赋值
     scanf(sdds1name&s1yy&s1sx)
    gets(s1addr)
    5结构体变量名
    1) 变量名赋变量名整体赋值ba
    2) 变量址赋变量指针变量p&a
    :struct student
    {int num
    char name[10]
    int age
    char sex[3]
    char addr[20]
    int ywsxyysum
    float avg
    }

    main()
    {struct student s1{1001王艳18女郴州869779}s2*p
    s2s1
    printf(s\ns2addr)
    p&s1
    p>sex男 *语句错误 *
    printf(s\np>sex)
    printf(s\np>addr)
    printf(uuuu\n&s1&s2&pp)
    printf(uuuuuuuu&s1nums1name&s1age
    s1sexs1addr&s1yw&s1avg&s2)
    }
    6链表:
    链表头指针指第结点链表结点少数项指结点指针

    :1) struct link 2) struct link
    {int x {int num
    float y char name[10]
    struct link *next struct link * next
    }abc }s
    ax5ay65anext&a
    bx10by125b next &c
    cx12cy155c next NULL
    链表操作例题
    #include
    #include
    typedef struct student
    {int data
    struct student *next
    }ST
    ST *insert(ST *head)
    void liulan(ST *head)
    ST *delete(ST *headint n)
    main()
    {ST abcd*head*p*q*s
    int n15
    adata5
    bdata10
    cdata15
    ddata20
    head&a
    anext&b
    bnext&c
    cnext&d
    dnextNULL
    liulan(head)
    headinsert(head)
    printf(\n)
    liulan(head)
    headdelete(headn)
    printf(\n)
    liulan(head)
    }

    void liulan(ST *head)
    {ST *p
    phead
    while(pNULL)
    {printf(d p>data)
    pp>next
    }
    }

    ST *insert(ST *head)*链表插入*
    {ST *p*q*s
    s(ST *)malloc(sizeof(ST))
    s>data12
    phead
    qhead
    while(pNULL&&p>datadata)
    {qp
    pp>next
    }
    s>nextp
    q>nexts
    return head
    }

    ST *delete(ST *headint n)
    {ST *p*q
    phead
    qhead
    while(pNULL&&p>datan)
    {qp
    pp>next
    }
    q>nextp>next
    free(p)
    return head
    }

    例题:某班50学生生包含学号姓名语文数学总分均分编程输入学生基信息计算总分均分输出学生信息
    struct student
    {int num
    char name[10]
    int ywsxsum
    float avg
    }
    main()
    {struct student st[50]
    int i
    for (i0i<3i++)
    {scanf(dsdd&st[i]numst[i]name &st[i]yw&st[i]sx)
    st[i]sumst[i]yw+st[i]sx
    st[i]avgst[i]sum30
    }
    for (i0i<3i++)
    printf(d s d d d1f\nst[i]numst[i]namest[i]ywst[i]sx st[i]sumst[i]avg)
    }
    例1:union aa 例2union aa 例3 union aa
    {char c[2] {char c0c1c2c3 {char c[4]
    int d int d int d
    } } }
    main() main() main()
    {union aa ab {union aa ab {union aa ab
    ac[0]'a' ac07>>2 ac[0]7>>2
    ac[1]'b' ac18^10 ac[1]8^10
    printf(dad) printf(dad) printf(dad)
    } } }


    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 9 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    C语言知识点总结

    C语言最重要的知识点总体上必须清楚的: 1)程序结构是三种: 顺序结构 、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选...

    3年前   
    621    0

    计算机专业c语言实训报告

    计算机专业c语言实训报告  通过c语言实训,让我加深了对c语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题...

    12年前   
    588    0

    C语言代码大全

     乘法口诀表 #include <stdio.h> #include <conio.h> void main(void) { int i,j,x,y; clrscr(); pr...

    5年前   
    1772    0

    专升本C语言题及答案

    C语言精编100题一、单选题1. 由C语言编写的代码程序( )A. 可直接执行 B. 是一个源程序C. 经过编译即可执行 D. 经过编译解释才能执行2. 按照C语言规...

    3年前   
    1178    0

    (1小时学会C语言51单片机)C语言入门教程

    △Victor Hugo 维克多?雨果相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。...

    4年前   
    745    0

    语言领域知识点整理

    1、语言是交流和思维的工具。2、幼儿期是语言发展,特别是口语发展的重要时期。3、幼儿在运用语言进行交流的同时,也在发展着人际交往能力、理解他人和判断交往情境的能力、组织自己思想的能力。4、通过...

    3个月前   
    113    0

    电脑编程 所有C语言题库

    试卷编号:2203所属语言:C语言试卷方案:所有C语言题库试卷总分:1220分共有题型:1种一、程序填空 共122题 (共计1220分)第1题 (10.0分) 题号:558 ...

    4年前   
    981    0

    技能高考专题:C语言练习

    第1题 (20.0分) 题号:332 难度:难 第3章/*----------------------------------------------...

    3年前   
    626    0

    c语言实验报告

    c语言实验报告  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________    成...

    11年前   
    806    0

    C语言上机题库WORD版

    C语言习题集3.11输入'A'~'F'中的一个字母,代表一个十六进制数,将其转换为十进制数,求该数与15的和并输出。输入格式:B输出格式:26#include<stdio.h>int main...

    3年前   
    906    0

    C语言作业:学通讯录

    学生通讯录一、 语言和环境1. 实现语言:C语言。2. 环境要求:devC++。二、 实现功能开发一套学生通讯录C语言系统,具体实现如下功能:1. 打开系统显示欢迎界面,以及功能菜单,用户输入...

    3年前   
    739    0

    C语言实验报告《指针》

    C语言实验报告《指针》  学号:__________    姓名:__________    班级:__________    日期:__________   指导教师:__________ ...

    11年前   
    970    0

    C语言试题库

    C 语言试题库 阅读说明*1 ————为题号A ————为答案-个C程序的执行是从 A)本程序的main函数开始,到main函数结束 B)本程序文件的第-个函数开始...

    1年前   
    678    0

    c语言高级面试题

    整个测试遵循以下的约定:u       假定在所有的程序中必须的头文件都已经被正确包含。考虑如下的数据类型:u       char 为1个字节u       int 为4个字节u      ...

    3个月前   
    112    0

    C语言实验报告《数组》

    C语言实验报告《数组》  学号:__________    姓名:__________    班级:__________    日期:__________  指导教师:__________  ...

    11年前   
    891    0

    语言学概论复习知识点

    语言学概论复习知识点一.填空题(20个空,20分)1、中国传统语文学的三个部门为:音韵学、文字学、训诂学2、西方传统语言学以 古希腊-罗马 为主。3、历史比较语言学的诞生标志着语言...

    3年前   
    1007    0

    C语言论文致谢

    C语言论文致谢  在硕士学位论文即将完成之际,我想向曾经给我帮助和支持的人们表示衷心的感谢。首先要感谢我的导师曹计昌教授,他在学习和科研方面给了我大量的指导,并为我们提供了良好的科研环境,让我...

    12年前   
    626    0

    国开电大《C语言程序设计》答案

    形考1在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(  )。选择一项:A. main 正确恭喜你,答对啦!!B. MAIN C. name D. function .题目2正确...

    1年前   
    418    1

    C语言综合实验2报告

    实验报告实验名称 小型学生信息管理系统 实验项目 编写一学生信息管理系统,用来管理学生基本信息及成绩信息专业班级 姓名 学号 指导教师 成...

    3年前   
    455    0

    C语言程序设计习题试题集

    《C语言程序设计》精品课件试题目录(按住CTRL键点击超链)单项选择题………………………第002页阅读程序题………………………第018页程序填空题………………………第039页编写程序题…………...

    1年前   
    5576    0

    文档贡献者

    小***库

    贡献于2021-03-03

    下载需要 9 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!

    该用户的其他文档