C语言基础知识(上)

#C语言基础知识

一、简单程序的的一般形式  #include//标准输入输出文件,让当前文件有文件的功能

//main函数是程序的入口,一个程序有且只有一个main函数

二、基本数据类型

1、整型

(1)short 短整数类型,占两个字节,取值范围,五位数

1)无符号类型(不包含负整数)

2)有符号类型(包含负整数)

(2)int 整数类型,占四个字节,取值范围,十位数

(3)long 长整型,32位的系统占四个字节,64位的系统占八个字节,取值范围,超过十位数

2、浮点型

(1)float 单精度浮点数类型,占四个字节,6位有效数字

(2)double 双精度浮点类型,占八个字节,15位有效数字

注:系统默认类型是double类型,在使用float类型时,需要在数字后面加f

3、字符型

(1)char占一个字节,单引号括起来

(2)用以存储字符或标点等字符

(3)字符在计算机中采用二进制的ASCII码存储,字符可以通过对应的ASCII码值来比较大小

4、总结

(1)整型有四种类型,short两个字节,五位数 int四个字节,十位数 long超过十位数

(2)浮点型有两种,float四个字节,6位有效数字 double8个字节,15位有效数字(系统默认的是double类型)

(3)char用于存储字符及标点

三、常量、变量

1. 常量:程序运行期间值不能被改变的值

比如:

3

5

2.3

'R'

2. 变量:程序运行期间值能被改变的值

1) 变量代表一个存储区域

2) 存储区域内存储的内容就是变量的值

3) 变量的值可以在程序运行期间改变

3. 变量的定义

1) 变量定义

格式

数据类型 变量名 = 初始值;

int age = 25;

int 指整数类型

age 指变量名

=  指将后面的初始值赋给变量

25  指初始值

;  指语句结束

2) 变量、常量命名规则

1. 只能由数字、字母、下划线组成,并且不能以数字开头

2. 不可以与系统保留字同名

3. 见名知意

4. 不能使用重复的变量名

5. 驼峰命名法(myTom)

四、运算符

1. 赋值运算符

用于给变量赋值,将等号右边的值赋给等号左边的变量

练习:如何交换两个int型变量的值

int a=1,b=2,c;

c=a;

a=b;

b=c;

2. 算术运算符

+  -  *  /  %

1) 除号右边的数字不能为0

2) 取余运算符两边必须都是整数

3) 两个整数相除,得到的是整数

4) 小数和整数相除,得到的小数

++  --

1) ++或--在前,先执行++或--,后运算(先加后用)

2) --或++在后,先运算,后执行++或--(先用后加)

3. 复合运算符

+=  -=  *=  /=  %=

1) a += b; ==> a = a+b;

2) a -= b; ==> a = a-b;

....

4. 条件运算符

格式: 条件表达式 ? 真结果表达式 : 假结果表达式

比如:

int a = 3;

int b = 5;

int c = 0;

c = a > b ? a : b;

附加:

int a=1; (char result;)

(char)result =a == 1 ? 'b' : 'c';

printf("%c\n",result+a);

5. 总结:必须掌握的内容

1) =    +=

2) ++  --

3) 条件运算符

4) == 两个等号是判断

五. 表达式

1. 常量、变量、运算符的组合

2. 每个表达式都会有运算结果

3. 例如: 3+5, a+b

4. 语句,用结束处的一个分号表示,语句是程序执行的最小单位

六. 输入、输出函数

1. 输出函数 printf()

1) printf函数被设计用于显示格式串,并在该串中的指定位置插入可能的值

2) 格式:

printf("格式串",表达式1,表达式2,...);

3) 格式串中包含普通字符和转换说明

1. 转换说明以字符%开头。是用来表示打印过程中待填充的占位符,如果后面跟的是d,表明打印时要在这个位置打印出一个整形数据。

2. 普通字符,会将普通字符完整的打印出来

4) 转换说明符

%d 整型

%hd 短整型

%ld 长整形

%f 单、双精度浮点数

%c 字符

5) 格式转换控制

printf("%04d",12) 最小字段占四个位置,不足用0补齐,如果不加0试试效果

printf("%-4d",112);最小字段宽度占四个位置,左对齐

printf("%4.2f",1.2345);

最小字段宽度占四个位置,保留小数点后两位

注:

\n换行 %与d之间的数字,表明打印的这个数字要占相应的位数

int a=1;    char result;

result = a == 1 ? 'b' : 'c';

printf("%-3c\n",result);

//在float类型中,%与d之间的数字,整数部分代表总共占的位数,小数点后面的代表小数所占得位数

float a = 1.6f;

printf("%4.1f\n",a);

6) 转义序列

\n  回车符

\\  打印\

%%  打印%

\‘  打印’

2. 输入函数 scanf()

1) scanf以回车确定输入结束,并且只接受大键盘的回车,不接受小键盘的回车

2) scanf("%d,%d",&num1,&num2); 输入的时候两个整型数之间必须有『,』,格式串中除了转换说明的其他字符都要从控制台输入

3) 不要在格式串后面加『\n』字符,会抵消掉人工输入的回车

#分支语句(布尔类型、关系运算符、逻辑运算符、if语句分支、switch语句、枚举)

一.布尔类型         

1.只有两种真和假    

 2.赋值true和非0的值 为真    

 3.赋值0 为假 (只有0和false为假)    

4.Xcode默认没有布尔类型,需要导入文件,需要导入头文件

例:

//    bool k = false;

//    printf("k = %d\n",k);

二.关系运算符

> >= < <= == !=

他们最终结果一般使用布尔类型的变量来接收

例:

//    bool result = 5==6;

//    printf("result = %d\n",result);

三.逻辑运算符

逻辑与 && (全真为真)

逻辑或 || (一真为真)

逻辑非 !  (取反值)

例:

//    bool result = 8>6 && 6>3;

//    printf("result = %d\n",result);

//

//    bool result1 = true;

//    result1 = !result1;

//    printf("result1 = %d\n",result1);

四.if语句分支

if(判断条件){

执行语句;(条件为真时执行语句)

}

else if(判断条件){

执行语句;

}

else

执行语句;

例:

char a = ' ';

printf("输入一个字符:");

scanf("%c",&a);

if (48 <= a && a <= 57) {

printf("This is a number\n");

}

else if (97 <= a && a <= 122) {

printf("This is a lower\n");

}

else if (65 <= a && a <= 90) {

printf("This is a upper\n");

}

else{

printf("no know\n");

}

switch语句

/*

多重选择,比if-else判断条件多

格式:switch(表达式){

case 可能的值:{

执行语句:

}break;

case 可能的值:{

执行语句:

}break;

default:{

}break;

}

五.switch语句

多重选择,比if-else判断条件多

格式:switch(表达式){

case 可能的值:{

执行语句:

}break;

case 可能的值:{

执行语句:

}break;

default:{

}break;

}

六.枚举

1.枚举目的:提高程序的可读性

2.枚举一般放在头文件下面,属于全局常量

3.enum 枚举名{ 枚举值 = 0/a,枚举值(默认1或b),枚举值(默认2或c),枚举值(默认3或d),}

例:

enum season{ sp=1, su, au, wi};

int a = 0;

printf("输入一个数字:");

scanf("%d",&a);

switch (a) {

case sp :

printf("spring 春天\n");

break;

case su :

printf("summer 夏天\n");

break;

case au :

printf("autumn 秋天\n");

break;

case wi :

printf("winter 冬天\n");

break;

default:

printf("不知道是哪天\n");

break;

#.循环语句(while循环、do...while循环、break,continue、for循环)

循环:满足条件时,反复执行的某一动作

while(较常用)

do..while (不常用)

for (最常用)

1.while循环

格式:

while(判断条件){

循环语句;

}

只要条件成立,循环体会一直执行

循环体执行结束,会重新判断条件是否成立

例:

int a = 0;

scanf("%d",&a);

while (a > 6) {

printf("never give up");

}

2.do...while循环 (直到型循环)

先执行一次循环体,再进行判断,成立会继续执行

格式:

do{

循环体;

}while(判断条件);

例:

输出1到100

int i = 1;

do {

printf("%3d",i);

i++;

} while (i<=100);

3.break,continue

break: 跳出while循环 (结束的是整个循环,不再往下执行)

continue: 结束本次循环 (结束的是这次循环,continue下面未执行的循环语句也结束,重新判断条件)

例:

int i = 0;

while (1) {

if (i==100) {

break;//结束整个循环

} i++;

if (i==9) {

continue;//结束的是本次循环,及i=9时这次循环

}

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

}

4.for循环

for(初始值;判断条件;让初始值自加或自减)

{

循环语句;

}

1.首先确定初始值,确定循环的起始点

2.看判断条件,条件成立,执行循环体;不成立,直接跳出for循环

3.循环体结束后,看自加或自减

4.自加或自减后,判断条件是否成立;成立,执行循环体,不成立,跳出循环

例:

打印9x9乘法表

外层循环i表示要打印多少行,内层循环j表示每行要打印多少个

for (int i = 1; i<10; i++) {

for (int j = 1; j<=i; j++) {

printf("%d*%d=%-3d ",j,i,i*j);

}

printf("\n");

}

例:S(n)=a+aa+aaa+aaaa+...+aaaa..(n个a)

int  a = 0, n = 0,S = 0,b = 0;

printf("输入n和a的值:");

scanf("%d,%d",&n,&a);

for (int i = 1; i <=n;i++)

{

b = 10*b + a;

S +=b;

}

printf("%d",S);

printf("\n");

#一维数组,随机数,宏定义,冒泡排序

1.一维数组

数组:能够存放多个同类型的数值,相当于一个存放数值的容器

格式:int list[4] = {1,2,3,4};

数据类型 数组名 [数组容量] = {赋初值};

例:

通过for循环改变下标,从而有顺序的输出数组中的值

  int ageOfAll[6] = {1,2,3,4,5,6};

// int ageOfAll002 = ageOfAll[1];

ageOfAll[1] = 9;

//  printf("年龄是:%d\n",ageOfAll[1]);

for (int i =0; i<6; i++) {

int temp =ageOfAll[i];

printf("%d",temp);

}

例:

//创建一个数组,存放班里所有人的工号

   int number[12]={0};

printf("工号是:");

for (int i=0;i<12;i++) {

number [i]=i+1;

}

for (int i=0;i<12;i++) {

printf("%03d ",number[i]);

}

printf("\n");

2.宏定义

编译时,系统会将宏定义的新值给宏定义的名字

格式:

#define 宏定义名字 宏定义要替代的内容

例:

#define NUMBER 9 (NUMBER 指代的内容就是9)

无参数的宏定义:

#define NUMBER 9

有参数的宏定义:

#define ADD(A,B) A+B

例:

#define TEST 90

#define  ADD(A,B) A+B

int a = TEST;

int sum = ADD(1,2);

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

3.随机数        

#define A 3    

int a[A] = {};    

printf("输入数组a中的第一个值:");    

scanf("%d",&a[0]);    

printf("数组a中的第一个值是%d\n",a[0]);            

printf("输入数组a中的第二个值:");    

scanf("%d",&a[1]);    

printf("数组a中的第二个值是%d\n",a[1]);        

printf("输入数组a中的第三个值:");    

scanf("%d",&a[2]);    

printf("数组a中的第三个值是%d\n",a[2]); 


//通过for循环改变下标,往数组里面依次输入值          

#define A 3  //(宏定义)

int a[A] ={};

for (int index =0; index

printf("输入第%d个值:",index+1);

scanf("%d",&a[index]);

}

//依次输出数组里面的值

for (int index =0; index

printf("第%d个值是:%d\n",index+1,a[index]);

}

#include//随机数头文件

例:

在数组a中放10个0-9的随机数

产生10随机数,并打印出最大值

#define A 10  //(宏定义)

int a[A] ={};

//往数组里面放随机值

for (int i=0; i

a[i] = arc4random()%10;

}

//找到数组中的最大值

int max =0;   

 for (int i =0; i

if (a[i]>max){

max=a[i];

}

}

//打印出数组

for (int i =0; i

printf("%4d",a[i]);

}

printf("\n最大值是:%d\n",max);

你可能感兴趣的:(C语言基础知识(上))