C语言程序设计(第二章)
1、常量的分类及表示形式
在程序运行的过程中,其值不能被改变的量称为常量
(1)整型常量
? 如1000,123854,0.213,-123等都是整型常量
(2)实型常量
①十进制小数形式,由数字和小数点组成
? 如123.456,0.345,-596.2,0.0,12.0等
②指数形式
? 如12.34e3(代表12.34×103),-345.54e-25(代表-346.54×10-25),0.123E-23(代表0.123×10^-23),以字母e或者E表示以10为底的指数,需要注意的是:e或E后面必须为整数
(3)字符常量
①普通字符
? 用单撇号括起来的一个字符,如’a’,‘Z’,‘3’,’#’,’?’。字符常量存储在计算机存储单元中时,并不是存储字符(‘a’,‘Z’),而是以其代码存储的(一般采用ASCII代码),例如字符a的ASCII代码为97,因此,在存储单元中存放的是97(以二进制形式存放)。
②转义字符
转义字符 | 字符值 | 输出结果 |
---|
\’ | 一个单撇号(’) | 输出单撇号字符 ’ | \" | 一个双撇号(”) | 输出双撇号字符 ‘’ | \? | 一个问号(?) | 输出问号字符 ? | \\ | 一个反斜杠(\) | 输出反斜杠字符 \ | \a | 警告(alert) | 传声声音或视觉信号 | \b | 退格(backspace) | 将光标当前位置后退一个字符 | \f | 换页(form feed) | 将光标当前位置移到下一页开头 | \n | 换行 | 将光标当前位置移到下一行开头 | \r | 回车(carriage return) | 将光标当前位置移到本行开头 | \t | 水平制表符 | 将光标当前位置移到下一个Tab位置 | \v | 垂直制表符 | 将光标当前位置移到下一个垂直制表对齐点 | \o、\oo、\ooo 其中o代表一个八进制数字 | 与该八进制码对应的ASCII字符 | 与该八进制码对应的字符 | \xh[h···] 其中h代表一个十六进制数字 | 与该十六进制码对应的ASCII字符 | 与该十六进制码对应的字符 |
(4)字符串常量
? 如"boy","123"等,用双撇号把若干个字符括起来。
(5)符号常量
? 用#define指令,指定用一个符号名代表一个常量。如:
#define PI 3.1416
2、变量
变量需要先定义再使用
#include<stdio.h>
int main()
{
int a=1,b=2,c,d,sum; //变量a和变量b在定义时就已经赋值
c=3;
d=4; //变量c和d,则是先定义,后赋值
sum=a+b; //a变量与b变量的值相加,再赋值给变量sum
printf("a+b=%d",sum);
return 0;
}
3、常变量
C99允许使用常变量,方法是在定义变量时,前面加上const,如:
const int a=3;
4、标识符
在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字母序列统称为标识符。简单地说,标识符就是一个对象的名字。
C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或者下划线。
5、数据类型
5.1、整形数据常见的存储空间和值的范围
类型 | 字节数 | 取值范围 |
---|
int(基本整型) | 4 | -21474836482147458647,即-2^31(2^31-1) | unsigned int(无符号基本整型) | 4 | 04294967295,即0(2^32-1) | short(短整型) | 2 | -3276832767,即-2^15(2^15-1) | unsigned short(无符号短整型) | 2 | 065535,即0(2^16-1) | long(长整型) | 4 | -21474836482147458647,即-2^31(2^31-1) | unsigned long(无符号长整形) | 4 | 04294967295,即0(2^32-1) | long long(双长整型) | 8 | -92233720368547758089223372036854775807,即-2^63(2^63-1) | unsigned long long(无符号双长整型) | 8 | 018446744073709551615,即0(2^64-1) |
6、运算符和表达式
C语言提供以下运算符:
运算符 | 符号 |
---|
算术运算符 | (+、-、*、/、%、++、–) | 关系运算符 | (>、<、==、>=、<=、!=) | 逻辑运算符 | (!、&&、||) | 位运算符 | (<<、>>、~、|、^、&) | 赋值运算符 | (=,及其扩展赋值运算符) | 条件运算符 | (?:) | 逗号运算符 | (,) | 指针运算符 | (*和&) | 求字节数运算符 | (sizeof) | 强制类型转换运算符 | ((类型)) | 成员运算符 | ( . 、—>) | 下标运算符 | ( [ ] ) | 其他 | (如函数调用运算符()) |
6.1、不同类型数据间的混合运算
(1)+、-、*、/ 运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后在进行运算。
(2)如果int型与float型或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型。
(3)字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。如:
6.2、强制类型转换运算符
可以利用强制类型转换运算符将一个表达式转换成所需类型。(类型名)(表达式)
例如:
(double)a;
(int)(x+y);
(float)(5%2);
7、C语句的作用和分类
一个函数包含声明部分和执行部分,执行部分是由语句组成的,语句的作用是向计算机系统发出指令,要求执行相应的操作。
C语句可分为五类:
(1)控制语句
语句 | 属性 |
---|
if()···else··· | 条件语句 | for()··· | 循环语句 | while()··· | 循环语句 | do···while··· | 循环语句 | continue | 结束本次循环语句 | break | 中止执行switch或循环语句 | switch | 多分支选择语句 | return | 从函数返回语句 | goto | 转向语句,在结构化程序中基本不用goto语句 |
上面9种语句的()中是一个判别条件,“···”表示内嵌的语句,比如:
if(x>y) z=x; else z=y;
if(x>y)
{
z=x;
}
else
{
z=y;
}
(2)函数调用语句
函数调用语句由一个函数调用加一个分号构成,例如:
printf("printf是一个输出函数。");
(3)表达式语句
表达式语句由一个表达式加一个分号构成,最典型的就是由赋值表达式构成的一个赋值语句。例如:
a=3;
一个表达式的最后加上了一个分号就成了一个语句
(4)空语句
;
(5)复合语句
可以用{}把一些语句和声明括起来成为复合语句(又称语句块),例如:
{
float pi=3.14159,r=2,area;
area=pi*r*r;
printf("area=%f",area);
}
复合语句常用在if语句和循环中
7.1、赋值语句
着重了解复合的赋值运算符
复合的赋值运算符
a+=3;
a*=8;
a%=3
赋值表达式
a=b=c=5;
a=5+(c=6)
a=(b=10)/(c=2)
8、数据的输入和输出
首先看一个例题:
求ax2+bx+c=0方程的根,a,b,c由键盘输入,设b2-4ac>=0。
由数学知识可知:如果b^2-4ac>=0,则有两个实根。
#include<stdio.h>
#include<math.h>
int main(){
double x1,x2,a,b,c,s;
printf("请输入a、b、c的值:");
scanf("%lf%lf%lf",&a,&b,&c);
s=sqrt(b*b-4*a*c);
x1=(-b+s)/(2*a);
x2=(-b-s)/(2*a);
printf("x1=%5.2f\n",x1);
printf("x2=%5.2f\n",x2);
return 0;
}
运行结果:
请输入a、b、c的值:1 3 2
x1=-1.00
x2=-2.00
除了printf和scanf,输出和输入函数外,还有一批标准输出输入函数:
printf(格式输出) | printf(格式控制,输出表列) | scanf(格式输入) | scanf(格式控制,地址表列) |
---|
putchar(输出字符) | putchar(c) | getchar(输入字符) | getchar() | puts(输出字符串) | puts(c) | gets(输入字符串) | gets(c) |
printf函数中用到的格式字符:
格式字符 | 说 明 |
---|
d,i | 以带符号的十进制形式输出整数(正数不输出符号) | o | 以八进制无符号形式输出整数(不输出前导符0) | x,X | 以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制 数的a~f时以小写形式输出,用X时,则以大写字母输出 | u | 以无符号十进制形式输出整数 | c | 以字符形式输出,只输出一个字符 | s | 输出字符串 | f | 以小数形式输出单、双精度数,隐含输出6位小数 | e,E | 以指数形式输出实数,用e时指数以“e”表示(如1.2e+02),用E时指数以 “E”表示(如1.2E+02) | g,G | 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G 时,若以指数形式输出,则指数以大写表示 |
scanf函数中用到的格式字符与printf函数中基本一致
8.1、有关数据输入输出的概念
(1)输入输出是以计算机主机位主体而言的
(2)C语言本身不提供输入输出语句,printf和scanf不是C语言的关键字,而只是库函数的名字
(3)要在程序文件的开头用预处理指令#include把有关头文件放在程序中,如:
#include<stdio.h>
|