C语言程序设计基础






大纲



第一章 C语言程序设计概述



第一节 C语言程序设计基础知识

1.1 C程序设计语言简介

 程序设计语言是用于编写计算机程序的语言。
    程序设计语言又分为以下几种:
      机器语言 (由二进制 0、1组成)
      汇编语言 (机器指令的符号化,类似于英语单词标记某些字符)
      高级语言 (面向过程C、面向对象C++、Java、Visual Basic)
      非过程化语言

1.2 C程序设计语言(高级语言)

 (原型)A语言(ALGOL 60语言)
      1963年剑桥大学将ALGOL 60语言发展为CPL
      1967年剑桥大学 Matin Richards对CPL进行简化产生 BCPL
      1970年美国贝尔实验室Ken Thompson 将 BCPL 进行修改,取名为B语言
      1973年美国贝尔实验室Dennis M.Ritchie 以B语言为基础创造出C语言
      1990年,ISO接受了C为ISO C的标准( ISO9899-1990 )

 C语言的特点:
      高效、便捷、灵活、功能丰富、表达力强、移植性好
      不需要了解CPU型号,也可以进行程序编制

1.3 C语言程序结构
    #include<stdio.h>               // #include< >表示预处理指令; stdio.h表示头文件
    int main( )                     // int main( ){ } 表示;main(主)函数,程序总是从main开始执行
    {/* ... */                            用于注释说明。
​          printf("Hello , C program! \n");           // { 函数 return 0返回语句 // 体 } 
          return 0;
     }
1.4 C语言程序的运行过程与运行环境

      编辑: 源文件 1.c
      编译: 源文件 转换 目标文件 1.obj
      链接: 链接目标文件 转换 可执行文件 1.exe
      运行: 可执行文件 执行
      调试: 可执行文件 调试
   .cpp 是 C++语言的源文件,而 .c 是 C语言的源文件,
   因为C++兼容C语言,所有可以用.cpp代替.c(不可逆)

1.5 C语言程序设计过程
     程序设计组成部分:①确定数据结构;
                                ②确定算法;
                                ③编码;
                                ④重新调试;
                                ⑤整理并提交报告。

 算法:为解决特定问题,采取的确定且有限的步骤。
 算法具有以下特点:
                  ①有穷性; //步骤有限
                  ②确定性;//指令含义确切,有唯一确定含义
                  ③可行性; //操作可以依次有限次执行实现
                  ④有零个或多个输入; //scanf 输入次数大于等于再0
                  ⑤有一个或多个输出; //printf 输出次数大于等于1

第二节 C语言基础语法概念

2.1 数据类型

在这里插入图片描述
----基本类型:不可再分为其他类型。(包含数值型、字符型)
----构造类型:由若干基本类型组成的新类型,可分解还原为若干基本类型(包含数组型、结构体型、共同体型、)
----指针类型:表述变量地址
----空 类型:void 标识返回值为空
----布尔类型:标识正确和错误,一般0标识错误,非0为正确

2.2 常量/变量

      常量:在程序的运行过程中,其值不允许改变的数据对象,称为常量。
      整型常量:
            十进制整数:以正负号开头,后接0~9。
            八进制整数:以正负号开头,第一位数字为0,后接0~7。
            十六进制整数:以正负号开头,前两位接0x,后接09以及af(10~15)
      实型常量:
            小数形式:有小数点。
            指数形:科学计数法表示,分为指数部分(E或e后接一个整数)和位数部分(整数或者小数)
      字符型常量:
            符常量:‘a’ ‘A’ (字符常量占一个字节,’’,不属于字符的一部分,A,a不同,,区分大小写 'a’对应一个ascii值)
            字符串常量:“hello” (长度为5(n),占6(n+1)个字节,最后一个字节存放NULL字符,称为空字符。)
      变量:在程序的运行过程中,其值均允许改变的数据对象,称为变量。
            变量值:存储单元存放的数据。(变量值可以是整数、实数、字符)
            变量名:给变量值分配内存地址时的地址符号,一般取合法标识符作为变量名,两者在一定程度上可以替代。
            标识符:由AZ、az、0~9、_ 组成,必须以字母和下滑线开头,数字不能开头,也不能有空格,不能包含运算符或者关键字。
            变量的使用:变量名一般取合法标识符作为变量名。定义变量可以在main函数或函数外或者形参定义。且定义是要求说明数据类型。
            变量初始化在C语言中很有必要,可以是在定义后,赋个变量一个值 。

32个关键字:
      auto break case char const continue default
      do double else enum extern float for
      goto if int long register return short
      signed static sizof struct switch typedef union
      unsigned void volatile while

2.3 基本运算

 优先级:
      其他运算符()、[ ]、. 、->
      逻辑运算符 &&、|| 、!
      算数运算符 +、- 、* 、/ 、%、++ 、–
      关系运算符 > 、< 、== 、>= 、<= 、!=
      赋值运算符 = 、+= 、-= 、*= 、%= 、&= 、|= 、^= 、>>= 、<<=

2.3.1关系运算
      关系运算符:>、>=、<、<=、==、!=(前4中同优先级,后两种同优先级)
2.3.2逻辑运算
      逻辑运算符:&&、|| 、!
2.3.3位运算
      位操作运算符:& 、| 、~ 、^ 、<< 、>>
2.3.4赋值运算
      赋值运算符: = 、+= 、-= 、= 、%= 、&= 、|= 、^= 、>>= 、<<=
2.3.5算数运算符
      算数运算符: +、- 、
、/ 、%、++ 、–
2…3.6其他运算
      其他运算符:()、[ ]、. 、->
2.3.7条件运算
      条件运算符:?、 :
2.3.8三目运算
      三目运算符:?: eg:x= a>b? a:b( ); (比较a和b谁大,如果a大 ,执行 把a 给到x ,否则,把b给到x)
2.3.9特殊运算
      特殊运算符:sizeof //计算数据大小
      ?: //三目运算符
      , //逗号运算符,多个变量使用
      & 取址符 * 取值符 解引用 //地址运算符
      -> . 结构体使用 -> 访问结构体里的数据 . 访问结构体数据的地址

2.4 数据转换

2.4.1自动数据转换
            将占空间少的数据(整型)转换 成占空间多的数据(实型)(简单顺畅,无冲突)
2.4.2强制数据转换
            将占空间多的数据(实型)转换 成占空间少的数据(整型)(只保留整数小数弃掉,不是四舍五入)
            整型和整型运算结果取整型
            整型和实型运算结果一般为实型
            实型和实型运算,结果也为实型

第三节 C语言的基础语法和算法基础

3.1 C语言基础语法

      预处理指令 #include< >
      头文件 stdio.h (库文件)
      主函数 main( )
      输入语句 scanf(" %d,%d “,&a,&b);
      输出语句 printf(”%d+%d=%d",a,b,sum);
      返回语句 return 0;
      连续输入需要加英文逗号隔开。

3.2 C语言库函数

            C语言库函数是把自定义函数放到库里,是别人把一些常用到的函数编完放到一个文件
里,供程序员使用。程序员用的时候把它所在的文件名用#include<>加到里面就可以了(尖括号内填写文件名),例如#include<math.h>。

3.3 数据的输入

            输入:这里的输入指的是从键盘等外部设备输入,C语言本身没有输入功能,需要借用C语言标准库函数来实现。调用:#include<stdio.h>或#include"stdio.h"

scanf("%d",&number); 
  1. 控制串中的非空白符; 
  2. 格式串中可以修改控制域宽; 
  3. 可以输入实型数据; 
  4. scanf格式串中的其他用法。
  5. 如果一次性输入多个同种类型的数据,要注意使用符号分隔开
  6. scanf("%d, %d",&x,&y);  scanf("可用逗号或者空格",必须用逗号);   分号内是啥就是啥
  7. printf("%d, %d",x,y);        printf("可用逗号或者空格",必须用逗号);   分号内是啥就是啥

      格式转换说明符用法
            %d或%i 输出十进制整数
            %o 输出八进制整数
            %x 输出十六进制整数
            %c 输出一个字符,空白字符(包含空格、回车、制表符)也作为有效字符输出
            %s 输出字符串,遇到的第一个空白字符(包含空格、回车、制表符)时结束
            %f或%e 输出浮点数,或科学计数法,以小数或指数形式输入均可
            %% 输入一个白分号%
            %p 输入指针(当前指针变量里面储存地址)

3.4 数据的输出

            输出:这里的输出指的是从显示屏等外部设备输出,C语言本身没有输出功能,需要借用C语言标准库函数来实现。调用:#include<stdio.h>或#include"stdio.h"

printf("*******%d",number); 
1. 字符宽度控制; 
2. 精度控制; 
3. L或者h; 
4. 显示位置默认为右看齐,若加上符号(-),则认为左对齐。

      格式转换说明符用法
            %d或%i 输出十进制整数
            %o 输出八进制整数
            %x 输出十六进制整数
            %c 输出一个字符,空白字符(包含空格、回车、制表符)也作为有效字符输出
            %s 输出字符串,遇到的第一个空白字符(包含空格、回车、制表符)时结束
            %f或%e 输出浮点数,或科学计数法,以小数或指数形式输入均可
            %% 输入一个白分号%
            %p 输入指针(当前指针变量里面储存地址)

3.5 宏定义

            在 C 语言中,允许用一个标识符来表示一个字符串,称为:”宏“。
            宏分为 有参数和无参数两种。
            无参宏的宏名后不带参数,其定义的一般形式为:
            #define 标识符 字符串 (用“标识符”替代“字符串”)
​ #define M (xyyz) (定义宏定义后,程序中所有的xyz都可以用M代替)
            #表示这是一条预处理命令(在C语言中凡是以#开头的均为预处理命令)

  1. 宏定义用宏名代替字符串,展开时又以字符串代替宏名,字符串可以是任何字符、常熟、表达式,预处理不会检查。
  2. 不是说明或者语句,不用加分号,且应该在函数外。
  3. 宏定义命令起到源程序结束,如要终止其作用域可使用#undef命令。
  4. 程序中的宏若被引号(" ")包裹,着不做宏替换。
3.6 返回语句
return 0

第四节 章存储形式

1.C 语言最大的特点,是可以直接操作内存

            1.数据需要一定的内存空间来保存,位置随机性
            2.所有使用到的内存空间,必须得经过申请,如果使用未经申请的内存就会出现内存错误 ,段错误。

数据的 原码 反码 补码
char a = 5;//0000 0101 原码
a = -5;//1000 0101 原码
反码(正数 反码 = 原码)
5 0000 0101
-5 1111 1010

 补码(正数  补码 = 原码)
   5       0000 0101
  -5       1111 1011

数据存储时,就是以补码形式存储,方便对于负数操作
-128 ---- 127















第二章 程序结构



2.1 结构化程序:
  1. 顺序结构

  2. 选择结构

  3. 循环结构

    ——————————————————————————

2.2 顺序结构:

          顺序结构: 从上往下依次循环执行。

2.3 选择结构:
2.3.1 if 选择结构
单分支选择
    if()
    {
        语句;
    }


双分支选择
    if()
    {
        语句1;
    }
    else
    {
        语句2;
    }


多分支(嵌套)选择
    if()
    {
        语句1;
    }
    else if()
         {
             语句2;
         }
         else
         {
             语句3;
         }
2.3.2 switch 多分支语句结构

//switch语句允许嵌套

switch(表达式)                              //switch表达式类型只能是整型或字符型
{
        case  常量表达式1:  语句1; break;    //case后面必须接常量或者常量表达式,且唯一,要加:号
        case  常量表达式2:  语句2; break;
        case  常量表达式3:  语句3; break;
        case  常量表达式4:  语句4; break;    //break跳出switch语句,不是跳出case,可要可不要
        default :    语句5;                 //最多只能有一个default,一般放在末尾
 } 
2.4 循环结构while do-while for(计数控制循环)
while(表达式)
{
   语句;
}

do
{
    语句;
}while(表达式);
    
for(表达式1;表达式2;表达式3)
{
    语句序列;
}
2.5 流程转移控制语句
goto语句                   //无条件转向语句              goto   语句标号;>>>语句标号:  语句;        
break语句                 //switch 中跳出语句           while    do  while    for    提前终止循环  
continue语句             //结束“本次”循环,只适用于switch     do-while     for    ,注意区分break   
return语句                //返回值
2.6 小结
模块化结构:将一个大型程序分成若干个独立功能模块(函数),来减轻程序设计的困难程度。

第三章 数组

第四章 函数

第五章 模块化程序设计

第六章 指针

第七章 结构体和共用体

第八章 文件

第九章 U b u n t u 和Linux 基础

第十章 小结

  • 19
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值