c语言第二章总结

1
2
3
4
5
6
#include <stdio.h>
int main(void)
{
printf(“HelloWorld!”);
return 0;
}
#include <stdio.h>:stdio.h为系统文件,内部定义了printf()等方法,在程序最开始可以使用include将头文件引入进来
int main(void):在一个C程序中有且仅有一个main()函数,他是程序运行的入口,main函数前面表示的是程序的返回值类型,后面表示的是传入参数,这里传入参数为void,也就是为空(可省略),返回参数是int类型
printf(“HelloWorld!”);:此处调用了标准输出函数,会将引号中的内容输出到屏幕上,语句后的分号表示该语句的结束
return() 语句可以就结束程序,一般返回0表示程序运行正常,返回其他值则表示不同的错误情况
代码2:
1
2
3
4
5
6
7
#include <stdio.h>
int main(void)
{
printf(“Programming is fun.\n”);
printf(“And Programming in C is even more fun!”);
return 0;
}
\n:换行符,表示在输出“Programming is fun.”后换行,\n是转义字符,在本章节会介绍
代码3:输入半径,分别计算球体积和球表面积
设球半径为r、球体积为v、球表面积为f,球体积和球表面积的计算公式如下:

1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
#define PI 3.14159
void main()
{
int r;
float v,f;
r=2;
v=4.0PIrrr/3.0;
f=4.0PIr*r;
printf(“体积为:%f,表面积为:%f\n”,v,f);
}
#define PI 3.14159:定义一个符号常量PI,这样程序中凡是需要使用3.14159的地方都可以用PI代替
void main():main函数前面表示的是程序的返回值类型,后面表示的是传入参数,这里传入参数为空被省略了,返回参数也是空,也可以被省略
%f:会将printf引号内除了%f之外的内容原样输出,并在第一个%f上输出v的值,在第二个%f上输出f的值
C语言的数据类型

C语言的常量

常量是指在程序运行的过程中值不能被改变的量
直接常量

  1. 整数常量
    十进制表示:由数字0~9,正、负号组成
    八进制表示:以0(数字0)为前缀,其后由数字0~7组成;八进制数一般是无符号数
    十六进制表示:以0x或0X为前缀,其后由数字0~9和字母A~F(字母大小写均可)组成,十六进制数一般是无符号数
  2. 实型常量
    实型常量即实数,又称为浮点数。
    C语言中,实数只能用十进制形式表示,实数的表示方法有两种:小数形式和指数形式。
    小数形式:如12.345,3.,-.123。
    指数形式:由尾数部分、字母E或e和指数部分组成,格式为:±尾数E指数
    TIPS:
    (1) 以小数形式表示实数时,必须有小数点,并且小数点的前、后至少一边要有数字。
    (2) 以指数形式表示实数时,字母E (或e)的前后必须有数字,并且指数部分只能是整数。如12.-E3、1.5E、E6都是不正确的实数。
  3. 字符型常量
    (1) 字符常量只能用单引号括起来,不能用双引号或其它括号。
    (2) 字符常量只能是单个字符,不能是多个字符组成的字符串。
    (3) 字符可以是ASCII字符集中的任意字符。按ASCII码的大小,不同的字符之间存在着次序,以字符的ASCII码值按升序连续排列。
    (4) 对于控制符(如回车、换行等)与不可见字符,在C语言中通过转义字符来表示。
    常见转义字符:
    转义字符 转义功能 ASCII码值
    \0 空字符 0
    \a 响铃 7
    \b 退格(Backspace) 8
    \t 水平制表符(横向跳格) 9
    \n 回车换行(Enter) 10
    \v 竖向跳格 11
    \f 换页 12
    \r 回车 13
    " 双引号(”) 34
    ’ 单引号(’) 39
    ? 问号(?) 63
    \ 反斜线字符(\) 92
    \ddd 1~3位八进制所代表的字符
    \xhh 1~2位十六进制所代表的字符
    转义字符的使用示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include<stdio.h>
    int main()
    {
    char b,c,d,e;
    b=’\43’;
    c=’\103’;
    d=’\x2a’;
    e=’\x41’;
    printf(“b=%c,c=%c,d=%c,e=%c\n”,b,c,d,e);
    printf("“good\0morning!\b”!\n");
    printf("\123456");
    return 0;
    }
    运行结果:
    b=#,c=C,d=*,e=A
    “good morning”!
    S456
  4. 字符串常量
    字符串常量是由一对双引号””括起来的零个或多个字符序列,如:”HelloWorld”
    字符串中可以使用空格字符、转义字符和其他字符,也可以使用汉字等文字符号
    字符串中还可以使用空字符,如:”” 表示空串,即不包含任何字符
    注意:
    系统自动在每个字符串的尾部加上’\0’作为字符串的结束标志
    n个字符组成的字符串,在内存中要占用n+1个字节空间
    可以使用sizeof运算符来计算字符串占用的内存空间大小
    字符串的长度等于该字符串中所包含的有效字符的个数
    在字符串中如遇到’\0’则认为该字符串结束
    如果字符串中有转义字符,则一个转义字符作为一个字符
    可以使用strlen()函数计算字符串的长度
    字符常量和字符串常量在内存中的存储情况是不同的
    如’6’在内存中占1个字节,存储的是其ASCII码
    “6”在内存中占2个字节,一个字节存储’6’,一个字节存储’\0’
    符号常量

在C语言中,可以用一个标识符来表示一个常量,称之为符号常量
符号常量在使用之前必须先定义,其一般形式为:
#define 标识符 常量值
一个#define命令只能定义一个符号常量,若要定义多个符号常量,需使用多个#define命令
例:某程序需要使用一个代表常数3.145的符号常量名xp,则以下定义中正确的是 。
A.#define xp 3.145;
B.#define xp(3.145)
C.#define xp=3.145
D.#define xp 3.145
答案:D
例:已知某程序如下:
#define P 2.5
void main( )
{
printf(“%f”, P);
}
则main函数中标识符P代表的操作数是____。
答案:2.5
例:利用符号常量计算价格
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
#define PRICE 20
int main()
{
int num,total;
num=10;
total=num* PRICE;
printf(“总价格为:%d\n”,total);
return 0;
}
运行结果:
总价格为:200
符号常量的使用,可以为编写程序提供很多好处:
增加程序的可读性
提高程序的可维护性
简化程序代码
方便数组的定义
C语言的变量

在程序的运行过程中,其值可以被改变的量称为变量
变量用于从外部接收数据、保存一些不断变化的值、保存中间结果及最终结果,而这些都无法用常量来实现
变量的定义与使用

  1. 变量的定义
    [存储类型] 类型说明符 变量名;
    定义四个静态的整型变量a,b,c,d:static int a,b,c,d;
    定义两个字符型变量ch1,ch2:char ch1,ch2;
    定义一个单精度浮点数变量f:float f;
    TIPS:
    类型说明符必须是C语言中的有效数据类型,如int、float、double、char等,用于指定变量的类型,该类型决定了编译时分配给变量的内存单元的多少
    变量名表可以由一个或多个变量名组成,各变量名之间用“,”分隔。变量名必须是合法的C语言标识符,变量名一般使用小写字母
    变量的定义必须放在变量的使用之前,一般在函数体的开头部分进行定义
  2. 变量的初始化
    C语言允许在定义变量的同时对变量赋值,这个过程称为变量的初始化
    定义一个整型变量x并赋初值为2:int x=2;
    定义两个整型变量s和t,分别赋初值为1:int s=1,t=1;
    定义一个单精度型变量f并赋初值为3.68:float f =3.68;
    定义一个字符型变量ch并赋初值为字符x:char ch=‘x’;
    TIPS:
    对一个变量赋初值之后,该值被存储在分配给该变量的内存空间中
    不允许对多个未定义的同类型变量连续初始化
    初始化时,“=”右边表达式的数据类型和“=”左边的变量的类型如果不一致,系统会进行自动赋值转换
    没有进行初始化的变量,其值是由定义时所使用的存储类型决定的
    变量的使用
    变量应该先赋值,后引用
    例:变量使用示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include<stdio.h>
    int main()
    {
    int a,b,c;
    char ch=‘A’;
    a=10;
    b=a+ch;
    scanf("%d",&c);
    printf("%d,%d,%d,%c\n",a,b,c,ch);
    return 0;
    }
    运行结果:
    若程序运行时输入:
    10↙
    则程序的运行结果如下:
    10,75,10,A
    整形变量

Visual C++ 2010环境下,各种整型的关键字及占用内存字节数和取值范围如下表:
关键字 类型 占用字节数 取值范围
short int 短整型 2 -32768~32767
int 整型 4 -2147483648~2147483647
long int 长整型 4 -2147483648~2147483647
unsigned short 无符号短整型 2 0~65535
unsigned int 无符号整型 4 0~4294964295
unsigned long 无符号长整型 4 0~4294964295
TIPS:
各种无符号整数所占的字节数与相应的有符号整数相同。但由于省去了符号位,故不能表示负数。
有符号整数以二进制补码形式存储。最左边第1位表示符号,该位为0,表示正数,该位为1,表示负数。
无符号整数以二进制原码形式存储。
例:不同类型整型变量的定义与使用示例
1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
int main()
{
int a,b,c,d;
unsigned long e;
a=5;b=6;e=10;
c=a+e;
d=b+e;
printf(“c=%d,d=%d\n”,c,d);
return 0;
}
运行结果:
c=15,d=16
例:短整型变量的溢出
1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main()
{
short int a, b;
a = 32767;
b = a + 10;
printf(“a=%d, b=%d\n”, a, b);
return 0;
}
运行结果:
a=32767,b=-32768
实型变量

实型的关键字及占用内存字节数和取值范围如表所示:
关键字 类型 占用字节数 取值范围
float 单精度型 4 3.4E-38~3.4E+38
double 双精度型 8 1.7E-308~1.7E+308
单精度型数据能保留7位有效数字
双精度型数据能保留16位有效数字
例:实型变量的使用示例
1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
float a=1234.56789;
double b=1234.567895678;
printf(“a=%f,b=%f\n”,a,b);
return 0;
}
运行结果:
a=1234.567871,b=1234.567896
字符型变量

字符型变量的值是字符常量,即用单引号引起来的单个字符
字符型变量的类型说明符是char,其类型说明的格式和命名规则与整型变量相同
TIPS:
由于字符常量在内存中占用一个字节,用于存储它的ASCII码值
所以C语言中的字符具有数值特征,可以像整数一样参加运算
允许对整型变量赋以字符值,也允许对字符变量赋以整型值。
举个例子:
例:字符变量的使用示例
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
char c1,c2;
c1=‘A’;
c2=65;
printf("%c,%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
return 0;
}
运行结果:
A,A
65,65
例:字符变量的使用示例
1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
int main()
{
char c1,c2;
c1=‘A’;
c2=‘B’;
c1=c1+32;
c2=c2+32;
printf("%c,%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
return 0;
}
运行结果:
a,b
97,98                                                                                                                                                   
赋值运算符和赋值表达式

赋值运算符有“=”、“+=”、“-=”、“*=”、“/=”和“%=”等
用赋值运算符将运算对象连接而成的表达式称为赋值表达式
简单赋值运算符

将“=”右边表达式的值赋给左边的变量
例如: a=8;、 s=a*2+b;
先计算出右边表达式的值,再赋给左边的变量。如果“=”左右两边类型不同,系统会按照赋值类型转换的原则将右边的类型转换成左边的类型
复合赋值运算符

在简单赋值运算符前面加上算术运算符就构成复合算术赋值运算符,如下表所示:
运算符 应用举例 等价形式
+= a+=x a=a+(x)
-= a-=x a=a-(x)
= a=x a=a*(x)
/= a/=x a=a/(x)
%= a%=x a=a%(x)
赋值表达式

由赋值运算符将一个变量和一个表达式连接起来的式子所组成。一般形式为:变量 = 表达式
下面是赋值表达式的例子:
1
2
3
v=4.0PIrrr/3.0
a=15+(i=6)
b=(x=3)+(y=4)
而 3=x 和 a+b=4 都是错误的赋值表达式
赋值表达式的执行过程是:
计算赋值运算符右侧表达式的值;
将所计算出的值赋给赋值运算符左侧的变量
TIPS:
赋值运算符的左边只能是变量,不能是常量或表达式
赋值表达式的值就是赋值运算符左边变量的值
赋值表达式的右边也可以是一个赋值表达式
如下例题:
例:若有定义“int x=15,a,b;”,则表达式“x%=(a=3)+(b=4)”的值是 ?
答案:
x%=(a=3)+(b=4)
x%=3+4
x%=7
x=x%7
x=15代入得:
x=15%7=1
例:已有声明“int x=15, y; float z=12;”,下列表达式中语法正确的是 。
A.y=x%z
B.y=x+=z*=4
C.y=x/2=z
D.(y=x+3)=z/2
答案:B
算数运算符和算数表达式

基本的算术运算符

运算符 + - * / %
名称 加 减 乘 除 取余
TIPS:
两个整型数据做除法运算时,结果一定是整数
求余运算的结果是两个整型数据相除的余数。求余运算只能用于整型数据的运算
算数运算符两边的数据类型应相同,若不同时,编译系统会先转换为同一数据类型,然后再进行运算
单目运算符

- 负号:负数
++ 自增运算符:使变量的值自加1
– 自减运算符:使变量的值自减1
有两种使用形式:
前缀方式:用于变量前面,它是 “先计算,后使用”
后缀方式:用于变量后面,它是 “先使用,后计算”
例:设有定义如下:
#define d 2
int x=5;
float y=3.83;
char c=’d’;
分析以下各表达式使用正确与否:
A.(-x)++
B.y++
C.c++
D.d++
答案:A错 B对 C对 D错
算术运算符的优先级和结合性

单目运算符的优先级高于双目运算符
双目算术运算符中*、/、%的优先级高于+、-
在优先级相同的情况下,按规定的“结合方向”进行处理
算术表达式

算术表达式是由算术运算符、运算对象和括号连接起来的式子
所有的数学表达式均可写成C语言的算术表达式,但是有些数学表达式无法直接用C语言的算术表达式写出,此时需要调用C语言中的数学函数来实现
TIPS:
表达式中的乘号不能省略,且表达式中的所有字符均应写在同一行上
在表达式中还可以使用多层圆括号(不能使用中括号[]和花括号{}),但是要注意括号的配对
在数学中,5×6÷4的运算结果与6÷4×5的结果相同,都是 7.5,但是C语言中表达式56/4的结果却与6/45的结果不一样
还需注意 8/(8/10)之类的表达式,因为(8/10)的结果为 0,用0做除数将会出现运算溢出的错误,为了不使 8/10 的结果为 0,应将整型常量改为实型常量8.0/10
举个例子:
例:输入一个三位正整数,输出其反序数
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
int number = 456;
int a = number / 100; /* 计算百位数 /
int b = (number - a * 100) / 10; /
计算十位数 /
int c = number % 10; /
计算个位数 /
printf(“反序数是:%d%d%d\n”, c, b, a); /
输出*/
return 0;
}
运行结果:反序数是:321
逗号运算符和逗号表达式

逗号运算符(,):功能是把多个表达式连接起来组成一个表达式,称为逗号表达式
逗号表达式的一般形式为:
表达式1,表达式2,…,表达式n
逗号表达式的执行顺序:从左到右依次执行每个表达式
逗号表达式的值为“表达式n”的值
逗号运算符是双目运算符,其优先级最低,是左结合的
并非所有出现逗号的地方都可以作为逗号表达式,如printf("%d%d",&a,&b),其中的 “%d%d”,&a,&b 并不是一个逗号表达式,而是printf函数的参数
例:逗号表达式应用示例
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
int i,j=7;
float k=5;
i=(j=j+2,j/k);
printf(“i=%d\n”,i);
return 0;
}
运行结果:i=1
求字节数运算符

sizeof(…):是一个单目运算符,用于计算数据类型所占的字节数,其一般格式为:
sizeof(表达式)或sizeof 表达式
sizeof(数据类型名)
例:不同数据类型字节数示例
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
printf(“char类型占%d字节\n”,sizeof(char));
printf(“short int类型占%d字节\n”,sizeof(short int));
printf(“int类型占%d字节\n”,sizeof(int));
printf(“float类型占%d字节\n”,sizeof(float));
printf(“double类型占%d字节\n”,sizeof(double));
return 0;
}
运行结果:
char类型占1字节
short int类型占2字节
int类型占4字节
float类型占4字节
double类型占8字节
例:求字节数运算符示例
1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main()
{
int a,b;
a=sizeof(3+5.0);
b=sizeof 3+5.0;
printf("%d,%d,%d\n",a,b,sizeof(“china”));
return 0;
}
运行结果:8,9,6                                                                                                                                  数据类型转换
自动类型转换;自动的规则是把占用内存空间少类型向空间多的类型转换,以保证运算的精
强制类型转换;强制类型转换是采用强制类型转换运算符将某种数据类型强制转换成指定的数据类型,其一般形式为
功能:把表达式的运算结果强制转换成类型说明符指定的类型。

c++
发布于2021-10-30
著作权归作者所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值