C++之C语言基础知识

目录

一 C语言介绍

二 算法

三 数据类型

运算符与表达式

常用数据输入/输出函数

选择结构程序设计

条件运算符

Switch语句:

while语句:

Do..while语句

For循环语句

转移语句


一 C语言介绍

程序语言的发展历程: 机器语言、汇编语言、高级语言

C语言的特点:高效、灵活、功能丰富、表达力强、移植性好;

示例程序:


#include<stdio.h>  //包含头文件



int main()  //主函数入口

{

    printf("hello  C  \n");   //使用C函数

    printf("梦想还是要有的,万一实现了呢?");   //使用C函数



    return 0;  //程序返回0

}













完成的C程序:

#define _CRT_SECURE_NO_WARNINGS  //这一句是为了清除使用scanf函数的警告,否则无法使用scanf()函数

#include<stdio.h>  //包含头文件

#define Height 10 //定义常量

int calculate(int Long, int Width); //用户自定义函数calculate



int main()  //主函数入口

{



    int m_Long=0;//长度

    int m_Width=0;//宽度

    int result=0;//表示体积





    printf("长方形的高度为:%d\n",Height);   //使用C函数

    printf("请输入长度:\n");   //使用C函数

    int a=scanf("%d", &m_Long); //输入长方形的长度





    printf("请输入宽度:\n");   //使用C函数

    int b=scanf("%d", &m_Width); //输入长方形的长度





    result = calculate(m_Long, m_Width);

    printf("长方形的体积是 : %d ", result);



    return 0;  //程序返回0

}



//计算体积函数

int calculate(int Long, int Width) {

    int result = Long * Width * Height;

    return result;

}

二 算法

开发一个程序通常要解决算法、数据结构、程序设计方法、语言工具、环境4个问题,其中的算法是核心,主要解决 “做什么” 和 “如何做”的问题。

算法是为解决某一特定类型问题而制定的一个实现过程,具有如下特性:

有穷性:执行的步骤、时间必须是有穷的,不能无限地执行下去;

确定性:每一个步骤定义明确,不能有二义性;

可行性:算法可执行,并且能够得到正确的结果;

输入: 应该有零个或多个输入;

输出:应该有一个或多个输出;

算法优劣批判标准:

正确性:对任何合法的输入,均会得到正确的结果;

可读性:算法容易被理解,便于扩展和阅读;

健壮性:当输入非法时能够进行拦截,确保程序不会瘫痪;

时间复杂度与空间复杂度:算法执行的时间长短与占用的内存空间大小;

算法的描述方法:

  1. 自然语言: 人们常用的自然语言;
  2. 流程图:主要是用流程图符号来表达逻辑的一种图画形式;程序常用有三种基本结构:顺序结构、选择结构、循环结构。任何复杂的算法均可以使用这三种结构画出和表达;
  3. N-S流程图:将全部算法写在一个矩形框内;

三 数据类型

编程规范:

1,代码缩进:代码使用tab键缩进对其,便于阅读,且看起来美观;

2,命名规范:常量名全部大写,成员变量以m_开头,普通变量首字母大写且以类型的首字母开头,指针变量在名称前加p然后名称首字母大写,函数名的每个单词首字母大写。

3,注释:尽量采用行注释

关键字:

Auto

Break

Case

Char

Const

Continue

Default

Do

Double

Else

Enum

Extern

Float

For

Goto

White

Int

Long

Register

Union

Short

Signed

Sizeof

Static

Struct

Switch

Typedef

Return

Unsigned

Void

Volatile

If

标识符命名规则:

  1. 标识符必须以字母或下划线开头;
  2. 除开头外的其他字符可以由字母、下划线、数字组成;
  3. C语言区分大小写;
  4. 标识符不能是关键字;
  5. 标识符应体现一定的功能含义,便于理解;
  6. 标识符可以是任意长度,但外部名必须保证仅前6个字符就能唯一地进行区分。

数据类型:

  1. 基本类型:整型(短、基本、长整形)、字符型、实型(单、双精度型)、枚举类型;
  2. 构造类型:通过添加、设计、组合,形成新的数据类型;
  3. 指针类型:主要用于表示内存地址;
  4. 空类型:用void表示,用于对函数的返回值类型进行限定;

常量:

  1. 整型常量: 有十进制、八进制、十六进制三种表示方式;
  2. 实型常量:也称为浮点型常量,表示实型的方式有小数和指数两种;

    double sum = 12.22222;  //小数表示法

     double sum2 = 1.23e5;   //指数表示法
  1. 字符型常量:主要指字符常量和字符串常量,字符使用符号 ‘ ’ 包围起来,字符串使用“” 包裹起来;
  2. 转义字符:

 \n  ---回车换行

 \t  ----横向跳至下一制表位置

\v----竖向跳格

\b---退格

\r ---回车

\f----走纸换页

\\ ---反斜杠“\”

\’ ----单引号

\a---鸣铃

\ddd---1~3位八进制数所代表的字符

\xhh---1~2位十六进制数所代表的字符

  1. 符号常量: 主要是指使用 #define 定义的符号常量,如 #define PI 3.14

变量:

变量就是在程序运行过程中可以变化的量。变量的定义格式为:变量类型 变量名=初始值 ;

  1. 变量类型修饰符分类:

类型

关键字

类型

关键字

有符号基本整型

int

无符号短整型

Unsigned short

无符号基本整型

Unsigned

有符号长整型

Long

有符号短整型

short

无符号长整型

Unsigned long

单精度类型

Float

双精度类型

Double

长双精度类型

Long double

字符型

Char

变量的存储类型:

  1. 自动变量 auto:变量存储在内存的动态存储区,变量一般默认使用auto,如 auto int a=20;

每次执行到该变量定义语句时,都会产生一个新的变量,并且重新对其初始化;

  1. 静态变量 static:存储在内存的静态存储区,static修饰的变量在第一次执行初始化完毕后,在随后的执行中将一直是第一次使用的值;

  1. 寄存器变量 register:申请把变量放在寄存器中,但是实际不一定会有作用。

  1. 外部变量 extern:外部存储变量,就是说当前要使用的变量是存储在外部的。

文件A代码:

#include<stdio.h>

int iExtern = 12;



文件B代码并访问外部变量:

#include<stdio.h>  

int main()

{

    extern int iExtern;

    printf("%d", iExtern);

    return 0;

}

混合运算:

不同类型数据之间在进行运算前,需要转换为同一种类型,转换的规律如下:

Char、short---》int--->unsigned---》long、float---》double

如下示例:

  

  char c = 'a';

    float f = 2.3f;

    long s = 123222;

    double sum = c + f + s;

    printf("%d\n", sum);

运算符与表达式

运算符分类:

  1. 赋值运算符:=
  2. 算数运算符:+ ,-, * , / , % ,+, - (后面两个代表正、负,前面两个代表加减),++,--
  3. 关系运算符:>,   >=,   <,   <=,  ==,   !=
  4. 逻辑运算符:&&(逻辑与),  ||(逻辑或) ,!(逻辑非)
  5. 位逻辑运算符:<< ,>>,&, ^, |
  6. 逗号运算符: ,(逗号用于将多个表达式分隔开)
  7. 复合赋值运算符:+= ,-=, *= , /= , % =,

表达式:由操作符和操作数组成,表达式可出现在赋值语句的右侧或函数的参数中。

#include<stdio.h>  

#define PI 3.1415



int main()

{

    extern int iExtern;

    int b = 20;

    int c = 0;



    printf("%d\n", iExtern + b);



    c = b + 22;

    printf("%d\n", c);





    printf("%d\n", iExtern);

    printf("%d\n", b);

    printf("%d\n", c);



    



    

    getchar();



    return 0;

}





自动类型转换:低字节类型向高字节类型转换系统会自动完成,但是会损失精度,如小数点截断等。

    float f = 12.4f;

    int a = f; //会截断小数部分,只取整数部分



强制类型转换:不同变量类型之间的强制转换,由开发人员自行决定。

    float d = 12.45;

    int c = (int)d; //强制转换为int型





自增与自减运算在变量前后位置的区别:

    int c = 123;

    c++; //先使用变量c的值,然后在自增1

    ++c; //先自增变量c的值,然后载使用变量

常用数据输入/输出函数

输入函数有:

  1. 字符数据输入 getchar();
  2. 字符串数据输入 gets
  3. 格式化数据输入 scanf

输出函数有:

  1. 字符数据输出 putchar()
  2. 字符串数据输出 puts()
  3. 格式化数据输出 printf()


   

 //字符输出函数

    putchar('q'); //输出一个字符,也可以填入转义码

    char c = getchar();//输入一个字符,并用变量获取

    putchar(c);//输出一个字符,这里直接使用字符变量c作为参数输入

puts("打印一段字符串"); //在屏幕上面打印一段字符串





    //字符串输入函数

    char ch[20];//用于保存输入的字符串

    gets(ch); //原来的gets函数已弃用,这个函数在vs中使用不了

puts(ch);//输出数据





    char c = 'a';

    int a = 0;

    //格式输出函数

    printf("%c",c); // %c 代表需要转换为char型输出, c为需要转义的char变量,若有多个变量转义则需要转义的字符的位置和变量的位置一一对应。



//格式输入函数

scanf("%d",&a); //两个参数含义为: 转义类型 和 参数地址,当有多个转义及地址时也需要一一对应;

    printf("%d", a);//把输入的额变量值输出



选择结构程序设计

if语句:

格式为 if(表达式){  条件为true时的执行逻辑  }

if (5>4)

{

printf("大于....");

}

If else 语句:

格式为 if (表达式) {条件为true时执行代码 } else{条件为false时执行代码 }

if (5>4)

{

printf("大于....");

}

else

{

printf("小于.....");

}

Else if语句:

语法为 if (表达式) { }  else if(表达式){ } ..... else{ }

if (5>4)

{

printf("大于....");

}

else if (4>3)

{

printf("大于.....");

}

else

{

printf("小于.....");

}

条件运算符

语法为: 表达式1 ? 表达式2 : 表达式3

int a = 2000332;

int b = 7833 * 12;



int c = a > b ? 1 : 0;

if (c==1)

{

printf("a大于b");

}

else

{

printf("a小于b");

}

Switch语句:

语法 :

switch(表达式) {

Case 情景1 :

语句块

Break;

......

}

int a = 2000332;

int b = 7833 * 12;

switch (a>b)

{

case true:

printf("大于");

break;



case false:

printf("小于");

break;



}

while语句:

语法: while(表达式){ 语句块(循环体) }

int i = 0;

while (i<10)

{

printf("%d \n", i);

i++;

}



死循环:while表达式的值永远为true的时候,那么while将无限循环下去。

Do..while语句

语法为 do{ 执行语句 }while(  条件表达式 );

int i = 0;

do

{

printf("%d \n", i);

i++;

} while (i < 10);

For循环语句

语法为 for(循环变量初值;循环条件;循环变量改变){ 循环体 }

for (int i = 0; i < 10; i++)

{

printf("%d \n",i);

}



For循环的其他几种写法:

int i = 0

for (; i < 10; i++) //预先定义初始变量,直接省略不写

{

printf("%d \n",i);

}





for (int i = 0; ; i++) //省略第二个判断表达示不写,程序陷入死循环

{

printf("%d \n",i);

}



for (int i = 0;i < 10 ; ) //省略第三个判断表达示不写,把自增表达式写在循环体里面

{

printf("%d \n",i);

         i++;

}



Int i,j;

for ( i = 0,j=0; i < 10; i++,j++) //在表达式1和3处可以用逗号分割写多个表达式

{

printf("%d \n",i);

}

循环可以嵌套使用,上述三种类型的循环可以任意嵌套使用。

转移语句

转移语句包括goto语句、break语句、continue语句;

Goto语句为无条件语句,可以使程序跳转到函数内部的任意一条可以执行语句处。同时也可以用于跳出循环或跳入循环。

int main()

{

int a = 14;

//跳转到标签的代码处

goto print;

printf("a的值为:%d", a);

//定义要跳转的标签名称

print:

printf("hello");



    return 0;

}

Break语句: 用于终止当前循环,然后继续执行后面的代码。

int main()

{

int a = 0;

for (a = 0; a < 10; a++)

{

if (a==5)

{

break; //如果条件满足,便结束当前循环

}

}

printf("hello");

    return 0;

}

Continue语句:结束本次循环剩余未执行的代码,继续下一次循环,

猜你喜欢

转载自blog.csdn.net/XiaoWang_csdn/article/details/131019196