c语言(基础概念)

1.什么是数据类型

基本类型数据

整数

      整型      int                          4

      短整型      short  int              2

      长整型    long  int                    8

浮点数

            单精度浮点数    float    4

            双精度浮点数    doblue    8

字符

          char          1

复合型类型数据

                结构体

                枚举

              共用体

2.什么是变量

变量的本质就是内存中的一段存储空间

3.变量为什么必须初始化

所谓初始化就是赋值的意思

4.如何定义变量

数据类型  变量名=要附的值

5.进制

十进制就是逢十进一

二进制就是逢二进一

6. 常量在c语言中如何表示的

整数:

          十进制:传统的写法

          十六进制:前面加OX或Ox

          八进制:前面加0(注意是数字零而不是字母o)

浮点型:

      传统的写法

                  float  x=3.2;

        科学计数法

                  float x=3.2e3;    //x的值为3200

                  float  x=123.45e–2;//x的值为1.2345

字符

          单个字符用单引号括起来

          字符串用双引号括起来

      "A"  正确,因为"A"代表了‘A'  '\0'组合

7.常量以什么样的二进制代码存储在计算器中

整数是以补码的形式转化为二进制代码存储在计算器中

实数是以IEEE754标准转化为二进制代码存储在计算器中

字符与整数的存储方式相同

8.代码规范化

9.什么是字节

字节就是存储数据的单位,并且是硬件上所能访问的最小单位

一个字节=8位

1K=1024字节

1M=1024K

1G=1024M

10.不同类型数据之间的相互赋值的问题

暂不考虑

11.什么是ASCII

ASCII不是一个值 ,而是一个规定,

ASCII规定了不同的字符是使用哪个整数值去表示

12.字符的存储(字符本质存储是与整数存储方式相同)

  浮点数不能准确存储

   例子:

        float   i=99.9;

         printf("'%f\n',i);  //最终输出值为99.900002



基本的输入和输出函数用法

printf()四种用法:

        1.printf(“字符串”);

        2.printf(“输出控制符”,输出参数);

          3. printf(“输出控制符1  输出控制符2,,,,”,输出参数1,输出参数2,,,,)

              输出控制符必须和输出参数一一对应

          4.printf(“输出控制符1 非输出控制符”,输出参数)

            输出控制符有:    %d    int

                                          %id  long  int

                                          %c    char

                                          %f    float 

                                          %if    dobule

                                        (%x  = %#x =%X)  int  , long  int  ,  short  int

                                          %o  int ,long  int  ,short  int

                                            %s      字符串


scanf()两种用法:

            用法 1.  scanf(“输入控制符”,输入参数);

                  功能:将键盘输入的字符转化为输入控制符所规定格式的数据,然后以存入以输入参数的值为地址的变量中

              用法  2.scanf(“非输入控制符 输入控制符”,输入参数)

                    功能:将键盘输入的字符转化为输入控制符所规定格式的数据,然后以存入以输入参数的值为地址的变量。  将非输入控制符必须原样输入

        如何使用scanf编写出高质量代码

                (1).使用scanf之前最好加个printf来提示用户以什么样的方式输入

                  (2).scanf中尽量不要使用非输入控制符,尤其不要使用\n


运算符

    (1)  算术运算符:

                    *(乘)  /(除)  +(加)  -(减) %(取余数)

    (2) 关系运算符 :   

                        <      >      <=    >=      !=(不等于)    ==(等于)

    (3) 逻辑运算符:   

                        &&(并且)    II(或)    !(非)

            :          !真      是假

                        !假      是真

                      &&  (  有假则假 )

                          真&&真            真

                            真&&假            假

                            假&&真            假

                            假&&假            假

                        II(有真则真)

                          真II真            真

                          真II假            真

                          假II真            真

                          假II假            假

  c语言对真假的处理

            非零为真      零为假   

              真用1表示    假用0表示 

        &&左边表达式为假  ,右边表达式肯定不执行

          II左边表达式为真时  ,右边表达式肯定不执行

    (4)  赋值运算符:

                          =    +=  *=    /=      -=

                      例如:a+=3相当于a=a+3

                                  a*=3相当于a=a*3

      (5)条件运算符

                  格式:表达式1?表达式2:表达式3

        执行过程中先求解表达式1的值,当值为真时,表达式2的值就是整个条件表达式的值;否则表达式3的值就是整个条件表达式的值。

      优先关系:  算数 > 关系 >  逻辑  > 赋值

自增,自减,三目运算符,逗号运算符

1.    自增【或者自减】

       分类:

     前自增      ++i

     后自增       i++

前自增和后自增的异同

相同:最终都使i的值加一

不同:

          前自增整体表达式的值是i加一后的值

          后自增整体表达式的值是i加一前的值

2.三目运算符

A?B:C

等价于   if(A)

                  B;

              else

                   C;

3.逗号表达式

   格式(A,B,C,D)

    功能:从左向右执行

                  最终表达式的值是最后一项的值

流程控制


1.什么是流程控制

      程序代码实行的顺序

  2.流程控制的分类

      顺序

        选择

                定义 :某些代码有可能执行 ,有可能不执行,有选择的执行某些代码。

   分类:

          if:

           1.  if最简单的用法:

                      格式:  if(表达式)

                                        语句

                  功能:

                             如果表达式为真,执行语句;如果表达式为假,不执行语句


            2.  if的范围问题

                        1.  if(表达式)

                                 语句A

                                 语句B

解释:if默认只控制语句A的执行或不执行,

  if无法控制语句B的执行或不执行。 或者说:语句B 一定会执行

                2.if(表达式)

                 {

                        语句A

                         语句B

                     }

                此时if可以控制语句A和语句B

         由此可见:if只能控制一个语句的执行或不执行,如果想控制多个的 执行和不执行就用{ }括起来                                                                                           

        3.if..... else......的用法

        4.if....else if.....else.....的用法      if()

           A;

    else  if()

    B;

        else ()

      C;

   5.c语言对真假的处理  :非零是真,零就是假

                                       真用1表示,假用0表示

     6.if举例    求分数的等级

      7.if的常见问题分析

      switch: 格式:         

                                                          switch(表达式)

                                                          {

                                                            case常量表达式1:语句1;

                                                                                              break;

                                                              case 常量表达式2:语句2;

                                                                                                break;

                                                              default:语句 n+1;


                                                                }


          循环

              定义:

                  某些代码会被重复执行

                分类:

                          for:

                                    1.格式:

                                                for(1;2;3)

                                                          语句A;

                                        2.执行的流程

                                                单个for循环的使用

                                               多个for循环的嵌套使用

                                                             for(1,;2;3)

                                                                     for(4;5;6)

                                                                            语句A;

                                                                             语句B;

                                 (1-2(成立)-4-5(成立)-A-6-5(不成立)-3-2(不成立)-B

                                        3.取值范围

                                        4.举例:

          while

                  1.执行顺序

                     格式:  while(表达式)

                                         语句;

         2.与for的比较:for和while可以相互转化

        例如: for(1;2;3)

                           A;

          等价于:

                          1;

                   while(2)

                    {

                              A;

                              3;

                          }

while和for可以相互转化,但for的逻辑性更强,更不容易出错,应多使用for

do......while

     格式:

do

{

.........

}while(表达式);

do、、、while   并不等价于for也不等价于while

主要用于人机交互

break和continue

   break如果用于循环是用来终止循环的

  break如果用于switch就用来终止switch

   break不能直接用于if,除非if用于循环内部的一个子句

   在多层循环中,break只能终止离它最近的循环

    在多层switch嵌套中,break只能终止离它最近的switch语句

continue

     用于跳过本次循环余下的语句,转去判断是否需要执行下次循环

例子:

1.

   for(1;2;3)

     {    A;

           B;

           continue;//如果执行该语句则执行完该语句后,会执行语句3,C和D都会被跳过,C和D都不会执行

            C;

             D;

          }

     2.

   while(表达式)

{    A;

B;

continue;//如果执行该语句则执行完该语句后,会执行表达式,C和D都会被跳过,C和D都不会执行

C;

D;

}

数组

1.    为什么需要数组

为了解决大量同类型的存储和使用问题

为了模拟现实世界

2.   数组的分类

一维数组

怎样定义一维数组

为n个变量连续分配存储空间

所有的变量数据类型必须相同

所有变量所占的字节大小必须相等

例子:  int  a[5];

有关一维数组的操作

初始化:

完全初始化

int  a【5】={1,2,3,4,5};

不完全初始化,未被初始化的元素自动为零

int a【5】={1,2,3};

不初始化,所有元素是垃圾值

int  a【5】;

清零

int   a【5】={0};

错误写法:

int  a【5】;

a【5】={1,2,3,4,5}  //错误

只有在定义数组的同时才可以赋值,其他情况下整体赋值都是错误的

int  a【5】={1,2,3,4,5};

int  a【5】=100;  //错误  因为没有a【5】这个元素,最大值为4

int  a【5】={1,2,3,4,5};

int  b【5】;

如果要把a数组中的数全部复制给b数组

错误写法:b=a;//错误

正确的写法:for(i=0;i<5;i++)

b【i】=a【i】;

二维数组

int   a【3】【4】;

总共12个元素,可以当做三行四列看待,这12各元素的名字依次为;

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】;

a【i】【j】;表示第i+1行第j+1列的元素

int  a【m】【n】;该二维数组右下角位置的元素只能是a【m-1】【n-1】

初始化

int   a【3】【4】={1,2,3,4,5,6,7,8,9,10,11,12};

int   a【3】【4】={

{1,2,3,4}

{5,6,7,8}

{9,10,11,12}

};

操作:

输出二维数组内容:

int   a【3】【4】={

{1,2,3,4}

{5,6,7,8}

{9,10,11,12}

};

int i,j;

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

printf(“%d”,a【i】【j】);

printf(“\n”);

}

多维数组

是否存在多维数组

不存在

因为内存是线性一维的

n维数组可以当做每个元素是n-1维数组的一维数组

比如:

int   a【3】【4】;

该数组是含3个元素一维数组

只不过每个元素都可以再分成4个小元素

int   a【3】【4】【5】;

该数组是含3个元素一维数组

只不过每个元素都是4行5列的二维数组

函数

》为什么需要函数

         避免了重复性操作

          有利于程序的模块化

》什么叫函数

  逻辑上:能够完成特定功能的独立的代码块

   物理上:能够接受数据(也可以不接受数据)

                   能够对接收的数据进行处理

                    能够将数据处理的结果返回(当然也可以不返回任何值)可以当做一个黑匣子

    总结:函数是个工具,它是为了解决大量类似问题而设计的函数

 》如何去定义函数

     函数的返回值  函数的名字(函数的形参列表)

    {

       函数的执行体

    }

 1. 函数的定义本质是详细描述函数之所以能实现某个特定功能的具体方法

  2.return表达式;的含义

       1>  终止被调函数,向主调函数返回表达式的值

       2>  如果表达式为空,则只终止函数,不向被调函数返回任何值

        3>  break是用来终止switch语句和循环语句的,return是用来终止函数的。

例子:

            a.void   f()

                  {

                     return;//return只用来终止函数,不向被调函数返回任何值

                    }

               b. int   f()

                    {

                            return  10;//第一:终止函数,第二:向主调函数返回10

                      }

  3.函数返回的类型也称为函数的类型,因为如果 函数名前的返回值类型和函数执行体中的return表达式中:表      达式的类型不同的话,则最终函数的返回值类型,以函数名前的返回值类型为准

     例子:

              int  f()

                {

                     return  10.5;//因为函数的返回值类型是int,所以最终int返回的是10而不是10.5

                   }  

》函数的分类

    有参函数和无参函数

    有返回值和无函数值

    库函数和用户自定义函数

    普通函数和自定义(main函数)

           一个程序必须有且只有一个主函数

           主函数可以调用普通函数  普通函数不能调用主函数

          普通函数可以相互调用

            主函数是程序的入口,也是程序的出口

注意的问题

    函数调用和函数定义的顺序

               如果函数调用写在了函数定义的前面,则必须加函数前置声明

  》 函数前置声明:

                 1. 告诉编译器即将出现的若干个字母代表的是一个函数

                  2.告诉编译器即将出现的若干个字母所代表的函数的形参和返回值的具体情况

                   3.函数声明是一个语句,末尾必须加分号

                    4.对库函数的声明是通过   #include<库函数所在的文件的名字.h>  来实现

      形参和实参

                 个数相同     位置一一对应   数据类型必须相互兼容

       如何在软件开发中合理的设计来解决实际问题

》常用的系统函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 第1章 第一个C程序第2章 C语言基础第3章 变量和数据类型第4章 顺序结构程序设计第5章 条件结构程序设计第6章...
    小狮子365阅读 10,608评论 3 71
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,423评论 3 44
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,577评论 18 399
  • 继承是面向对象中一个比较核心的概念。其他正统面向对象语言都会用两种方式实现继承:一个是接口实现,一个是继承。而EC...
    lovelydong阅读 368评论 0 2
  • 宝贝,刚刚是不是你淘气啦?是不是在妈妈的肚子里翻跟斗呢?其实我也不知道你到底动没动,只是肚子有点点小疼,一会...
    小陈太阅读 176评论 0 0