C语言知识整理(基础知识,输入输出函数,表达式数据结构,函数)

目录

一. 基础知识

  1. 标识符的概念

  2. 进制的转换

二. 算数表达式和赋值表达式

  1.算数表达式 +  -  *  /  %

    2.赋值表达式

    3. 复合的赋值表达式:

    4.自加表达式:

      5.逗号表达式

三.字符

  1. 字符数据的合法形式:

  2. 转义字符

  3. 常用转义字符及其应用

 四.输入输出函数 

    1. 输出函数printf()

     2.进制例子

     3. 常用的printf转换描述

    4.数据输入scanf()

3. 表达式

  1. 关系表达式

   2. 逻辑表达式


一. 基础知识

   一个C语言有且只有一个main函数,是程序运行的起点,当C语言程序写完后,都是先编译,后链接,最后运行。编译生成的是.c文件 ,链接生成的是.opj文件,运行是.exe文件,只有.exe文件可以运行。

  1. 标识符的概念

  标识符是由字母,数字,下划线组成,并且第一个字必须为字母或下划线。

  标识符分为关键字,预定义标识符,用户标识符。 

关键字不可以作为用户标识符
预定义标识符

可以做为用户标识符

define定义 scanf输入 printf输出  include引用头文件

用户标识符用户在自己写代码时自己命名的合法标识符

  在这里关键字和预定义标识符是系统里定好的,也就是说,写一个函数,不可以命名为if,注意严格区分大小写。                                                                                                                                     尽量采用说明程序对象意义的标识符。

  2. 进制的转换

   1.十进制转化为二进制  整数部分除以二倒序,取余   小数部分乘以二正序取余   

   2.十进制转化为八进制的话,一般先把十进制转化为二进制,二进制就是01010110这些零和一组成的一串数字 。而八进制就是 二进制三个为一组,转化为一个八进制数0-7之间的,如111代表的是七,001代表的是一 ,以次类推,就可以把二进制转化为八进制了

   3.C语言只有八,十,十六进制,没有二进制;但在运行的时候,所有的进制都要转化为二进制来进行处理。

   4.C语言小数的合法写法 :C语言小数点两边有一个是零的话,可以不用写 如1.0可写成1.,0.1可写成.1。

   5.实型数据的合法形式;2.333e-1 就是合法的,且数据是2.333乘以十的负一次方。                           口诀 :e前e后必有数,e后必为整数。

   6. int整形一般是4个字节,char字符型是1个字节,double双精度型一般是8个字节

二. 算数表达式和赋值表达式

  1.算数表达式 +  -  *  /  %

   “/”  两边都是整形的话,结果就是一个整形。 3/2的结果就是1。如果有一边是小数,那么结果就是小数。3/2.0的结果就是1.5。

   “%”符号请一定要注意是余数,%符号两边要求是整数。 如8%5的运行结果是3。

    2.赋值表达式

   表达式数值是最右边的数值,a=b=5;该表达式为5,常量不可以赋值。

注意 int x=y=10; 【错误,定义时,不可以连续赋值】    赋值左边只能是一个变量。                        int  x = 7.7; 【对,x就是7】  float y=7;【对,y就是7.0】

    3. 复合的赋值表达式:

      a * = 2 + 3相当于a = a * (2+3)   算数运算符与“=”结合在一起,形成复合的赋值运算符。

      i + = 2 等价于 i = i + 2     a % + 3 等价于a = a % 3      a * = b+5 等价于 a =a  *(b+5)

    4.自加表达式:

       自加,自减表达式:假设a=5,  ++a(是为6),a++(为5)

     运行原理 :

    ++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6。

    a++是先用该表达式的数值为5,然后再把a的数值加上6,再放到变量a中。

    进行了++a和a++后   在下面的程序中再用到a的话都是变量a中的6了。

  口诀  ++在前先加后用,++在后先用后加。

      5.逗号表达式

    优先级别最低。表达式的数值是逗号最右边的那个表达式的数值。

    如:(2,3,4)的表达式的数值就是4;

     z = (2,3,4)(整个是赋值表达式) 这个时候z的值是4;

     z =2,3,4(整个是逗号表达式)这个时候z的值为2。 逗号表达式的值是4,z的值是2

     x = (a = 3,6*a)在这其中第一个元素是a = 3,第二个元素是6*a,在这其中6*a为逗号表达式的值,a本来是3,6*a就是18,那么赋值时有括号,所以是把这个6*a赋值给了x。                          所以   a = 3    x = 18

     x=(a=3*5,a*4),a+15 在这里逗号在括号外面,所以说这是一个逗号表达式,它的值就是最右边的a+15,a的值是3*5为15,而x的值和上面的一样进行赋值是把逗号里面最右边的这个元素赋给了x,a这个时候的值为15,15*4为60,所以x的值为60 但是整个表达式的值是a+15为30.                         表达式值为30,x = 60。

注意

1. 空语句不可以随意执行,会导致逻辑错误。

2.注释不是c语言,不占运行时间,没有分号,不可以嵌套!

3.强制类型转换:

  一定是(int)a不是int(a),注意类型上一定有括号的。(一定要在强制类型的上面加一个括号才表示强制的类型转换,它是在int,float,double型 这些类型说明上面加括号)

注意(int)(a+b)和(int)a+b的区别;  前是把a+b转型,后是把a转型再加b

4.三种取整丢小数的情况;1.int a=1.6;    2.b=(int)a;    3.1/2; 3/2

三.字符

  1. 字符数据的合法形式:

单引号‘1’是字符占一个字节,双引号“1”是字符串占两个字节(含有一个结束符号)。

‘0’的ASCLL数值表达为48,‘a’的ASCLL数值是97,‘A’的ASCLL数值是65

一般考试表达单个字符错误的形式;‘65’   “1”

字符是可以进行算数运算的,记住: '0'-0=48

大写字母和小写字母转换的方法:‘A’+32=‘a’  相互之间一般是相差32

     ‘A’65
   “A”65\0

  2. 转义字符

转义字符分为一般转义字符,八进制转义字符,十六进制转义字符

1.一般转义字符,常用 \t 空格  ,     \n换行   , \' 单引号  ,   \"双引号  ,  \\斜杠;

2.八进制转义字符:‘\141‘  是合法的,前导的0是不能写的;、

3.十六进制转义字符:’\x6d‘ 才是合法的,前导的0不能写,并且x是小写

  3. 常用转义字符及其应用

                    字符形式     含义AsCLL

\n

换行10
\t水平制表 (下一个Tab) 9                  
\b退格8
\r回车13
\f换页12
\\反斜杠\92
\'单引号(撇)39
\''双引号34
\ddd1到3位八进制代表的字符
\xbb1到3位十六进制代表的字符

               字符型和整形是近亲;两个具有很大的相似之处

                                                  char a = 65;

                printf("%c", a);   //结果为A            printf("%d", a);   //结果为65

                                    /*功能:使用转义字符控制数据的输出*/

#include<stdio.h>
void main()
{
  char cl = 'A',cl2 = 'N';
  printf("a\tbc\tABC\n");
  printf("xye\t%c%c",cl, cl2);
}
输出结果为 a       bc      ABC
          xye     AN

 四.输入输出函数 

    1. 输出函数printf()

   1,使用printf和scanf函数时,要在最前面加上#include<stdio.h>

   2,printf可以使用一个参数,也可以使用两个参数。

   3.printf("第一部分",第二部分); 把第二部分的变量,表达式,常量以第一部分展现出来!

   4.printf("a=%d, b=%d", 12,34); !!!重点

    一定要记住是将12和34以第一部分的形式现在在终端也就是黑色的屏幕上。

    在黑色屏幕上显示为 a=12,b=34

    printf("a=%d, \n b=%d", 12, 34);     结果为: a=12,                                                                                                                                                b=34

     2.进制例子

                     int x=017;     

             printf("%d", x);       15       十进制

             printf("%o", x);        17       八进制

             printf("%#o", x);      017     带前导的八进制

             printf("%x", x);          f         十六进制

             printf("%#x", x);       0xf       带前导的十六进展

     3. 常用的printf转换描述

格式说明表示内容格式说明表示内容
%d整形  int %c字符 char
%ld长整型long int %s字符串
%f浮点数float%o八进制
%lfdouble%#o带前导的八进制
%%输出一个百分号%x十六进制
%5d输出一个整形数据长度为5%#x带前导的十六进制

   

转换描述对应参数类型实现的转换
%md    int

            输出十进制,m为输出最小宽度

(如果数据的位数小于m,则左端扑空,若数据位数大于m,则按实际长度输出)

%m.nffloat,double

      按照小数形式输出实数,m为输出最小宽度,n为小数点后位数。

(如果数据的位数小于m,则左端补空;若数据位数大于m,按实际长度输出。小数位数被截断时四舍五入输出)

    例子    int x =12,y = 34;

               char z='a';

               printf("%d",x,y);     一个格式说明,两个输出变量,后面的y不能输出

               printf("%c",  z);       结果为:12a  因为两个printf之间没有换行

     printf("%2d",123);    第二部分有三位,大于指定的两位,原样输出123

     printf("5d",123);     第二部分有三位,小于指定的五位,左边补两个空格  123

     printf("%10.6f",12.5); 小数要求补足六位的,没有六位的补0.结果为  1.250000(左边加上两个空格)

     printf("%5.3f", 1,25);   小数三位,整个五位,结果为1.250(小数点算一位)

     printf("%3.1f",1.25);     小数一位,整个三位,结果位1.3(要进行四舍五入)

    4.数据输入scanf()

   1. scanf("a=%d, b =%d", &a, &b);

         一定要记住是以第一部分格式在终端输入数据。

         在黑色屏幕上输入的为 a=12, b=34才可以把12和34正确给a和b。有一点不同都不行

    2.scanf("%d,%d"x,y); 这种写法绝对错误scanf的第二个部分一定要是地址!

        scanf("%d,%d", &x, &y); 注意写成这样才可以!

    3.特别注意指针再scanf的考察

例如:int x= 2;int*p;(加*号是取数值)//我们把x所在的地址赋值给了p,这样时候*p就表示的是指向x所在的那个房子

                  p=&x; 加=是取地址

   scanf("%d",x); 错误 (第二部分一定要是一个地址的形式才行)     

   scanf("%d", p);正确

   scanf("%d".p);  错误(p本来代表的就是地址)           

   scanf("%d", *p); 错误(加了*号表示是这个地址里的数值是多少)

    4.指定输入的长度

     终端输入:1234567

   scanf("%2d%4d%d", &x, &y, &z);  x为12,y为3456,z为7

    终端输入:1 234567   由于1和2中间有空格,所以只有1位给x

   scanf("%2d%4d%d",  &x, &y, &z); x为1, y为2345,z为67

    5. 字符和整形是近亲

              int x = 97;

        printf("%d", x);  结果为97

        printf("%c", x);  结果为 a

    6.输入时候和整形的区别(重点)

          scanf("%d", &x);      这个时候输入1,特别注意的是整形1

          scanf("%d", &x);      这个时候输入1,特别注意的是字符’1‘ASCLL为整数49

   补充说明:

    1.scanf函数的考察格式:

         注意该函数的 第二部分是&a 这样的地址,不是a;

         scanf("%d%d*d%d",&a,&b,&c); 跳过输入的第三个数据

      2.putchar ,getcha r函数的考查

          char  a - getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。

          putcchar('y')把字符y输入到屏幕中

      3. 如何实现两个变量x,y中数值的互换

    不可以把 x = y,y = x;要用中间变量 t = x;x=y;y = t

五. 表达式

  1. 关系表达式

  a,关系表达式的数值只能为1(表示为真),或0(表示假)。

    如 9>8这个关系表达式时真的,所以9>8这个表达式的数值就是1.

    如 7>6这个关系表达式是假的,所以7>6这个表达式的数值就是0;

  b,考试最容易错的:就是int x=1,y=0.z=2;

    x<y<z 是真还是假? 带入为1<0<2,从数学的角度出发肯定是错的,但如果是c语言那么就是正确的!因为要1<0为假得到0,表达式就变成了0<2那么运算就是1.

  c,等号和赋值的区别!一定记住“=”就是赋值,“= =”才是等号

   2. 逻辑表达式

  核心:表达式的数值只能为1(表示为真),或0(表示假)。

  a,共有& &且  || 或  !非三种逻辑运算符号。

  b,!> && > ||   优先的级别。

  c,表示 x大于10的方法。

        0<x<10是不行的(一定记住)。是先计算0<x 得到的结果为1或则0;再用0,或1与10进行比较得到的总为真(为1).所以一定要用(0<x)&&(0<10)表示比0大比10小。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值