admin 管理员组文章数量: 1086019
2023年12月16日发(作者:直方图怎么看偏态)
第二章 C语言基础知识
2.1 常量和变量
【学习目标】
(1) 掌握常用标识符的命名规则
(2) 掌握常量和变量的定义与引用方法
实例5 常量和变量——输出常量与变量的值
【实例任务】
定义不同类型的几个变量,然后对应输出相应的常量值和变量值。程序的运行结果如图2-1所示。
图2-1 程序运行结果
【程序代码】
#include "stdio.h"
#define A 10 /*定义一个整型常量A*/
#define B 0.1 /*定义一个单精度类型常量B*/
#define C 'x' /*定义一个字符型常量C*/
#define D 3.14E20 /*定义一个双精度类型常量D*/
#define E "false" /*定义一个字符串常量E*/
main()
{ int a=10;/*定义整型变量,同时为变量赋初值*/
float b;/*先定义单精度型变量,然后再赋初值*/
b=10.5;
char c='x';/*定义字符型变量,同时赋初值*/
double d=3.14e15;/*定义双精度类型变量*/
/*输出常量和变量值*/
printf("输出整型常量值为:%d,输出变量a的十进制值为:%dn",10,a);
printf("输出变量a的八进制值为:%o,输出变量a的十六进制值为:%xn",a,a);
printf("输出单精度型常量值为:%f,输出变量b的值为:%fn",10.5,b);
printf("输出字符型常量值为:%c,输出变量c的值为:%cn",'x',c);
printf("输出双精度型常量值为:%lf,n输出变量d的值为:%lfnnn",3.14e15,d);
/*输出符号常量的值*/
printf("符号常量A的值为:%dn",A);
printf("符号常量B的值为:%fn",B);
printf("符号常量C的值为:%cn",C);
printf("符号常量D的值为:%lfn",D);
printf("符号常量E的值为:%sn",E);
getch (); }
【相关知识】
1. 标识符
标识符是用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等,其基本构成元素源自字符集。C语言的字符集包括英文字母、数字字符和一些特殊字符。用这些基本元素单位命名标识符时,一定要遵循以下四个原则:
(1)必须由字母(a~z,A~Z)或下画线(_)开头;
(2)由字母、数字或下画线组成的长度不超过32个字符;
(3)标识符中的大小写字母有区别;
(4)不能与关键字同名。
下面是不合法的标识符和变量名:
M.d.,John,y 123,#33,3d64
2.常量
常量是数据在内存中一种表示形式,在程序运行过程中值永远保持不变,常用的类型有5种,包括整型常量、实型常量、字符型常量、字符串常量、符号常量。
整型常量就是整型,常用的表示形式有十进制,如10、30等。八进制常量表示形式要以0开头,如013、012等。十六进制常量表示形式要以0x或0X开头,如0x13、0X12等。
实型常量就是指的是一些带小数点的数,包括指数。如3.14、-1.2、1.2e6、10.5E8等。68其中,1.2e6表示数学上1.2×10,10.5E8表示数学上10.5×10。
字符型常量是单引号引起来的单个字符,这些字符为ASCII字符,对应各有其ASCII码值。字符常量包括一些转义字符,字符形式和输出结果对照如表2-1所示。
表2-1 转义字符
转义字符
n
t
v
b
r
f
ooo
输出
换行
水平制表符
垂直制表符
退回一格
退格
换页符
八进制数
转义字符
a
?
'
"
0
xhhh
输出
报警(铃声)
反斜丝
问号
单引号
双引号
空字符
十六进制
字符串常量是用双引号引起来的0个或多个字符。字符串常量形式给出的是字符串在存
储空间中的起始地址。如“Hello World!”就是一个字符串常量。
符号常量,是指以标识符来代替一个值,这个标识符的值在程序运行过程中不能再改变。它是在编译预处理阶段使用#define来进行定义,也就是程序的开头来定义。常量名的类型由所给的常量值的类型来定,不再单独指明。符号常量的定义形式为:
#define 常量名 常量值
如实例中的定义语句“#define C 'x'”定义了一个符号常量,常量名为C。
3.变量
变量是指在程序运行过程中其值可以被改变的量,C语言变量遵循先定义后引用的原则。变量的定义形式为:
数据类型 <变量名列表>
变量在定义时,可以先定后,后赋值,也可以定义的同时赋初值。如实例中合法的定义形式:
int a=10; /*定义整型变量,同时为变量赋初值*/
float b; /*先定义单精度型变量,然后再赋初值*/
b=10.5;
char c='x'; /*定义字符型变量,同时赋初值*/
double d=3.14e15; /*定义双精度类型变量*/
变量定义时很灵活,允许在定义的同时对部分变量赋初值,如下列合法的定义语句:
int a,b,c=6;
但不允许同时对几个变量赋同一个值,如下定义语句是错误的:
int a=b=c=13;/*这是错误的语句*/
【课堂精练】
1.已知频率求波长。光的速度为3×108米/秒,已知频率为50HZ,求此频率光波的波长。程序的运行结果如图2-2所示。
图2-2 程序的运行结果
根据程序的运行结果,请将下面程序补充完整并调试。
#include "stdio.h"
main()
{ _________________________________
float f=50.0;
x=c/f;
printf("此光波的波长为:%.2lf米",x);
getch(); }
2.摄氏温度和华氏温度的转换。已知摄氏温度与华氏温度的转换公式为:C=5(F-32)/9,输入摄氏温度的值,请输出华氏温度的值,程序的运行结果如图2-3所示。
图2-3 程序的运行结果
根据程序的运行结果,请将下面程序补充完整并调试。
#include "stdio.h"
main()
{ float F,C; /*F为摄氏温度,C为华氏温度*/
printf("请输入摄氏温度的值:n");
___________________________________
getchar();
C=5*(F-32)/9;
printf("摄氏温度%.1f所对应的华氏温度为:%.1f",F,C);
getch(); }
2.2 数据类型
【学习目标】
(1) 掌握几种常用的数据类型
(2) 理解不同数据类型间的转换
实例6 基本数据类型——输出不同数据类型的值
【实例任务】
定义不同类型的变量,并进行一定的简单运算,要求输出不同类型表达式的值。程序的运行结果如图2-4所示。
图2-4 程序运行结果
【程序代码】
#include "stdio.h"
main()
{ int a=32767,b=1; /*定义a,b为整型变量*/
long c=2147483647,d=1; /*定义c,d为长整型变量*/
unsigned e=65535,f=1; /*定义e,f为无符号整型变量*/
int x=123,y=0123,z=0x123; /*定义整型变量,并赋不同进制的值*/
float m=5.4,n=2.2,sum,sep; /*定义单精度类型变量*/
char ch1='a',ch2='b'; /*定义字符型变量*/
char c1='A',c2='B';
char *p="C language"; /*定义指向字符串的指针变量*/
printf("int:%d, %dn",a,a+b);
printf("long:%ld, %ldn",c,c+d);
printf("unsigned:%u, %unn",e,e+f);
printf("%d %d %dn",x,y,z);/*十进制格式输出*/
printf("%o %o %on",x,y,z);/*八进制格式输出*/
printf("%x %x %xnn",x,y,z); /*十六进制格式输出*/
sum=m+n;
sep=m/n;
printf("%.2f+%.2f=%.2fn",m,n,sum);
printf("%.2f/%.2f=%fnn",m,n,sep);
printf("ch1=%c,ch2=%cn",ch1,ch2);
printf("ch1=%d,ch2=%dnn",ch1,ch2);
c1=c1+32;
c2=c2+32;
printf("%c,%dn",c1,c1);
printf("%c,%dn",c2,c2);
printf("%sn",p);
getch();
}
【相关知识】
1.整型数据
根据占用内存字节数的不同,整型变量又分为4类:
(1)基本整型(类型关键字为int)。
(2)短整型(类型关键字为short [int])。
(3)长整型(类型关键字为long [int])。
(4)无符号整型。无符号型又分为无符号基本整型(unsigned [int])、无符号短整型(unsigned short)和无符号长整型(unsigned long)三种,只能用来存储无符号整数。
整型数据或变量占用的内存字节数,随系统而异。在16位操作系统中,一般用2字节表示一个int型变量,且long型(4字节)≥int型(2字节)≥short型(2字节)。显然,不同类型的整型变量,其值域不同。占用内存字节数为n的(有符号)整型变量,其值15151 6域为:-2~(2-1);无符号整型变量的值域为:0~(2-1)。不同整型变量的长度和取值范围如表2-2所示。
表2-2 整常数类型的字节长度和取值范围
数据类型
int
short
long
unsigned int
字节长度
2
2
4
2
取值范围
-32768~32767 即-2~(2-1)
-32768~32767 即-2~(2-1)
-2147483648~2147483647 即-2~(2-1)
0~65535 即0~(2-1)
0~65535 即0~(2-1)
0~4294967295 即0~(2-1)
3251515 unsigned short 2
unsigned long
4
2.实型数据
C语言的实型变量,分为两种:
(1)单精度型:类型关键字为float,一般占4字节、提供7位有效数字。
(2)双精度型:类型关键字为double,一般占8个字节、提供15~16位有效数字。
实型常量即实数,在C语言中又称浮点数,其值有两种表达形式:
(1)十进制形式:例如3.14、10.5等。
-7(2)指数形式:它靠字母e或E连接两边的数字组成,如2.3e-7代表2.3x10。e的两边必须有数值,且e后的指数部分必须是整型数,6.1e、.e+5、e-3、1.3e4.8都是非法
的。
3.字符型数据
字符型数据是用一对单引号括起来的单个字符,如'A'、'+'、'5'等。另外,还有一类转义字符,也属字符型数据。这在上一节已经讲解过。
字符变量的类型关键字为char,一般占用1字节内存单元。字符变量通常也分为两类:一般字符类型(char)和无符号字符类型(unsigned char)。字符型数据的字节长度和取值范围见表2-3。
表2-3 字符数据的字节长度和取值范围
数据类型
char
unsigned char
字节长度
1
1
取值范围
-128~127的整常数
O~255的整常数
对于字符型数据,既可以字符形式输出,也可以整数形式输出。实例中,输出变量c1、c2的值,采用两种格式,读者可以对比一下。
4.字符串数据
字符串常量是用一对双引号括起来的若干字符序列。字符串中字符的个数称为字符串长度。长度为0的字符串(即一个字符都没有的字符串)称为空串。
C语言规定,在存储字符串常量时,由系统在字符串的末尾自动加‘0’作为字符串的结束标志。如果有一个字符串为“CHINA”,则它在内存中的实际存储为6个字符,最后一个字符'0'是系统自动加上的,它占用6字节而非5字节内存空间。
对于字符型指针变量可按下列形式定义:
char *p="C language";
语句中符号*是指针运算符,表示p为指针变量,整个语句表示指针a指向这个字符串。
printf()函数中,可以用%s这一格式控制符进行字符串输出。
实例7 不同数据类型间的转换——不同类型数据身份的转换
【实例任务】
定义一些不同类型的变量,并进行简单运算。根据不同要求将运算结果强制类型转换。程序的运行结果如图2-5所示。
图2-5 程序运行结果
【程序代码】
#include "stdio.h"
main()
{ int a1,a2;
float b1,b2,c;
b1=15.5;b2=6.6;
a1=(int)(b1+b2);
a2=(int)b1/(int)b2;
c=(float)(a1+a2);
printf("请输出:a1=%dn",a1);
printf("请输出:a2=%dn",a2);
printf("请输出:c=%.2fn",c);
getch(); }
【相关知识】
1.数据类型的自动转换
不同类型数据间进行混合运算时,数据类型要一致后才能参与相应的运算,这种转换属自动完成的,称为类型的自动转换,转换时遵循如下原则:
(1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
(2) 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。
(3) 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
(4) char型和short型参与运算时,必须先转换成int型。
(5) 在赋值运算中,赋值号两边量的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。 如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。
2.数据类型的强制转换
强制类型转换是根据程序的需要,通过类型定义符来完成的,其形式如下:
(类型说明符) (表达式)
其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。如实例中:(int)b1,把b1转换为整型,把a1+a2的结果转换为单精度型赋值给变量c。
在强制类型转换时,一定要注意要将类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(float)(a1+a2) 写成(float)a1+a2,相当于把a1转换成float型之后再与a2相加了。
【课堂精练】
1.定义两个字符型变量,输出相应的字符及对应的ASCII值。程序运行结果如图2-6所示。
图2-6 程序运行结果
根据以上程序运行结果,请将程序填充完整并调试。
#include "stdio.h"
main()
{char cl,c2;
c1='a' c2='b';
printf("%c %cn",cl,c2);
___________________________________
getchar();}
2.定义不同类型的变量,然后进行输出。程序的运行结果如图2-7所示。
图2-7 程序的运行结果
根据程序的运行结果,请将程序补充完整并调试。
main()
{ int a,b; unsigned c,d;
_____________________________________
a=100; b=100; e=50000; f=32767;
c=a; d=b;
printf("%d,%dn",a,b);
printf("%u,%un",a,b);
printf("%u,%un",c,d);
c=a=e; d=b=f;
printf("%d,%dn",a,b); printf("%u,%un",c,d);
getch(); }
2.3 常用的运算符和表达式
【学习目标】
(1) 掌握几种常用运算符
(2) 掌握由运算符和数据构成的表达式的运算过程
(3) 熟练掌握常用运算符的优先级别关系
实例8 运算符及表达式——输出各表达式的结果
【实例任务】
定义一些变量,并用运算符构成各种不同类型的表达式,输出各个表达式的运行结果如图2-8所示。
图2-8 程序运行结果
【程序代码】
#include "stdio.h"
main()
{ int x1=32,x2=23;
float y1=32.0,y2=23.0;
int i=10;
int a1,a2,a3,a4,a5,a6;
int b1=2,b2=4,b3=6,m,n;
a1=a2=a3=a4=a5=a6=20;
printf("加减乘除运算各表达式输出的结果:n");
printf("输出:x1+x2=%dn",x1+x2);
printf("输出:x1-x2=%dn",x1-x2);
printf("输出:x1*x2=%dn",x1*x2);
printf("输出x1/x2=%dn",x1/x2);
printf("输出y1/y2=%.2fnn",y1/y2); /*注意观察和上一条语句输出结果有何异同*/
printf("自加自减运算各表达式输出的结果:n");
printf("%dn",++i);/*i自加1后输出i的值*/
printf("%dn",--i);/*i自减1后输出i的值*/
printf("%dn",i++);/*i的值先输出,然后i自加1*/
printf("%dn",i--);/*先输出i的值,然后i自减1*/
printf("%dn",-i++);/*从右向左结合,先输出i的值取反,然后i自身加1*/
printf("%dnn",-i--);/*从右向左结合,先输出i的值取反,然后i自身减1*/
printf("复合运算各表达式输出的结果:n");
printf("a1+4=%dn",a1+=4);
printf("a2-4=%dn",a2-=4);
printf("a3*4=%dn",a3*=4);
printf("a4/4=%dn",a4/=4);
printf("a5%4=%dn",a5%=4);
printf("a6/4.0=%fn",a6/4.0);
printf("%d, %d, %d, %d, %d, %dnn",a1,a2,a3,a4,a5,a6);
printf("逗号运算表达式输出的结果:n");
m=b1+b2,n=b2+b3;
/*依次执行各个子表达式,最后一个表达式的值为该整个表达式的值*/
printf("m=%d,n=%d",m,n);
getchar(); }
【相关知识】
1. 算术运算符和算术运算表达式
常用的算术运算符有以下几种:
(1)加法运算符“+”,加法运算符为双目运算符,即应有两个量参与加法运算。如x1+x1,4+8等,具有右结合性。
(2)减法运算符“-”,减法运算符为双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等,它具有左结合性。
(3)乘法运算符“*”,乘法运算符为双目运算符,如表达式x1*x2,具有左结合性。
(4) 除法运算符“/”,除法运算符为双目运算符,具有左结合性。参与运算量均为整型时,结果为两数整除的商,为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型,运算结果为数学上相除的实型结果。
(5) 取余运算符(求模运算符)“%”,取余运算符为双目运算符,具有左结合性。要求参与运算的量均为整型。求余运算的结果等于两数整除后的余数。
由算术运算符和数据一起构成的式子,是算术表达式。在数学上的一些表达式,C语言中书写时,都要符合一定的书写规范。如:
要写成表达式sqrt(abs(x))/2
2.自加自减运算
自增1运算符记为“++”,其功能是使变量的值自增1。自减1运算符记为“--”,其功能是使变量值自减1。自增1、自减1运算符均为单目运算,都具有右结合性。可有以下几种形式:
(1)++i i 自增1后再参与其它运算。
(2)--i i自减1后再参与其它运算。
(3)i++ i参与运算后,i的值再自增1。
(4)i-- i参与运算后,i的值再自减1。
但是++和--仅能适用于变量,不能用于常量或表达式。如(i+j)--或6++、(-i)++、(-i)--是不合法的。
++和--运算符自右向左结合。如i的原值为5,那么-i--应相当于-(i--),整个表达式如果输出结果值为-5,i的值再自减1为4。
当遇到如a+++b这样的表达式时, C编译处理原则是尽可能多地(自左而右)将若干个字符组成一个运算符,因此a+++b等价于(a++)+b。
3.赋值运算符与赋值运算表达式
赋值运算符号为“=”,它的作用是将一个数据或表达式的值赋给一个变量。由“= ”连接的式子称为赋值表达式,其一般形式为:
变量=表达式
需要说明的是,有时“=”两侧的类型不一致,在赋值时要进行类型转换。具体处理过程如下:
(1) 实型赋予整型变量时,舍去小数部分。
(2) 整型值赋予实型变量,数值不变,但将以浮点形式存放, 即增加小数部分(小数部分的值为0)。
(3) 字符型赋予整型,由于字符型为一个字节, 而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。
(4) 整型赋予字符型,只把低八位赋予字符量。
4.复合运算符
在赋值符“=”之前加上其它双目运算符可构成复合赋值符。如+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=,如实例中
a1+=4 等价于a1=a1+4
赋值运算符都是自右向左执行的。C采用复合赋值运算符,一是为了简化程序,使程序精炼,二是为了提高编译效率。
5.逗号运算符
C语言提供一种用逗号运算符“,”连接起来的式子,称为逗号表达式。它的构成形式为:
表达式1, 表达式2, „, 表达式n
执行时,依次从表达式1运算,然后运算表达式2,„„表达式n,最后“表达式n”的值即为整个逗号表达式的值。
逗号表达式 “a = 3 * 5, a * 4”的值为60
先求解a = 3 * 5,得a=15;再求a * 4 = 60,所以逗号表达式的值为60。
实例9 关系、逻辑运算符和表达式——关系运算和逻辑运算的结果
【实例任务】
定义变量,并对其进行关系和逻辑运算,输出运算结果。程序运行结果如图2-9所示。
图2-9 程序运行结果
【程序代码】
#include "stdio.h"
main()
{ int a=0,b=1,c=-15;
/*关系运算表达式*/
printf("输出表达式a>b的结果为:%dn",a>b);/*大于运算*/
printf("输出表达式a>=b的结果为:%dn",a>=b);/*大于等于运算*/
printf("输出表达式a
printf("输出表达式a!=b的结果为:%dn",a!=b);/*不等于运算*/
printf("输出表达式a==b的结果为:%dnn",a==b);/*等于运算*/
/*逻辑运算表达式*/
printf("输出表达式(a>b)&&(b>c)的结果为:%dn",(a>b)&&(b>c)); /*与运算*/
printf("输出表达式(a>b)||(b>c)的结果为:%dn",(a>b)||(b>c)); /*或运算*/
printf("输出表达式!(b>c)的结果为:%dn",!(b>c)); /*非运算*/
getch(); }
【相关知识】
1. 关系运算符和关系运算表达式
关系运算符,又称为比较运算符,其作用是对操作数之间进行比较运算,以判断给定的两个操作数之间是否符合给定的关系。如符合,结果为1,不符合,结果为0。
由关系运算符连接起来的式子,称为关系表达式。在程序设计过程中,关系表达式主要用在程序中的判断语句。C语言中的6种关系运算符、表达式及运算规则如表2-4所示。
表2-4 关系运算符、表达式及运算规则
关系运算符
>
>=
<
<=
!=
==
功能说明
大于
大于等于
小于
小于等于
不等于
等于
运算规则(假设a=0,b=1)
a>b的结果为0
a>=b的结果为0
a
a<=b的结果为1
a!=b的结果为1
a==b的结果为0
2.逻辑运算符及逻辑运算表达式
关系运算只能对单一条件进行判断,如a>b等。如果要在一条语句中对多个条件进行判断,就需要用逻辑运算。常用的逻辑运算有与、或、非,对应的运算符号是&&、||、!。其中非运算为单目运算符,用于对符号后的值进行取反操作。
由逻辑运算符连接起来的式子称为逻辑运算表达式,它的运算结果为真时,值为1,运算结果为假时,值为0。C语言中,常用的3种逻辑运算符、表达式、运算规则如表2-5所示。
表2-5 逻辑运算符、表达式及运算规则
关系运算符
&&
||
!
功能说明
逻辑与
逻辑或
逻辑非
运算规则(假设a=0,b=1,c=-15)
(a>b)&&(b>c)的结果为0
(a>b)||(b>c)的结果为0
!(b>c)的结果为1
优先级
中
低
高
实例10 运算符的优先级——复杂表达式的运算结果
【实例任务】
定义三个变量,然后组合成复杂表达式,要求输出各表达式的值。程序运行结果如图2-10所示。
图2-10 程序运行结果
【程序代码】
#include "stdio.h"
main()
{ int a=10,b=20,c=30;
printf("输出表达式a+b*c的值:%dn",a+b*c); /*乘除取余运算优先于加减运算*/
printf("输出表达式a+b==c的值:%dn",a+b==c); /*算术运算优先于关系运算*/
printf("输出表达式a
/*关系运算优先于逻辑运算(除非运算外)*/
printf("输出表达式a+3,b+c,c*3的值:%dn",(a+3,b+c,c*3)); /*逗号运算符级别最低*/
printf("输出表达式!a+c的值:%dn",!a+c); /*逻辑非运算优先于基本算术运算*/
getch(); }
【相关知识】
1.运算符的优先级与结合性
C语言规定了运算符的优先级和结合性。优先级,是指当一个表达式中有多个运算符并存时,并非从左至右依次执行,而是按各运算符的优先级的顺序执行。
所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运算符(第三章学习)是右结合性外,其它运算符都是左结合性。
2.常用运行符的分类及结合性
C语言的运算符比较丰富,常用的运算符的优先级及结合性如表2-6所示。
表2-6运算符的优先级和结合性
运算符
()[]→.
! ~ ++ -- -
(type) * & sizeof
* / %
+ -
<< >>
< <= > >=
== !=
&
|
&&
||
? :
=、+=、-=、*=、/=、%=
>>=、<<=、&=、^=、|=
,
分类
结合性
从左至右
优先级
高
低
单目运算符 从右至左
双目运算符 从左至右
条件运算符 从右至左
赋值运算符 从右至左
逗号运算符 从左至右
【课堂精练】
1.定义变量,要求输出一些表达式的结果。程序运行结果如图2-11所示。
图2-11 程序的运行结果
根据程序的运行结果,请将下面程序补充完整并调试。
#include "stdio.h"
main()
{ int x=1,y,z;
x*=3+2;
printf("输出x的值为:%dn",x);
__________=y=z=5;
printf("输出x的值为:%dn",x);
x=y*=z;
printf("输出x的值为:%dn",x);
getch(); }
2. 定义变量,并进行自加自减运算。程序运行结果如图2-12所示。
图2-12 程序的运行结果
根据程序的运行结果,请将下列程序代码补充完整并调试。
#include "stdio.h"
main()
{________________________________________
int m=0,n=0;
i=10; j=20;
m+=i++; n-=--j;
printf("i=%d,j=%d,m=%d,n=%d",i,j,m,n);
getch(); }
2.4 课后习题
2.4.1 项目练习
一.练习目的
1. 进一步掌握数据类型的分类及不同数据类型间的转换;
2. 进一步熟悉常用的运算符和表达式的运算过程;
3. 进一步练习运算符的优先经和结合性。
二.练习内容
1.定义一个双精度类型的变量,分别将其转换为整型、长整型、单精度型输出。
2.利用关系和逻辑表达式,分析闰年的计算方法。
2.4.2 练习题
一.选择题
1.C语言中的标识符只能由字母、数字、下划线三种字符组成,且第一个字符_________。
(A)必须是字母
(B)必须是下划线
(C)必须是字母或下划线
(D)可以是字母、下划线和数字中的任一字符。
2.下列说法中有错误的是_________。
(A)用户所定义的标识符允许使用关键字
(B)用户所定义的标识符必须以字母或下划线开头
(C)用户所定义的标识符应尽量做到“见名知意”
(D)用户所定义的标识符中,大小写字母代表不同的标识
3.在C语言中的合法的字符常量是_________。
(A)’084’ (B)”a”
(C)’ab’ (D)’0’
4.在C语言中,下列哪个是合法的实型变量_________。
(A).e2 (B)1.5E0.5
(C)1.3145e2 (D)e3
5.printf (“%c,%d”,’b’,’b’);的输出结果是_________。
(A)b,98 (B)b 98 (C)98,b (D)98 b
6.在C语言中,下列变量定义中合法的是_________。
(A)short _a=1-.1e-1 (B)double b=1+5e2.5
(C)long do = 0xfdaL; (D)float 2_and=1-e-3;
7.算术运算符、赋值运算符和关系运算符的运算优先级按从高到低依次是_________。
(A)算术运算符、赋值运算符、关系运算符
(B)算术运算符、关系运算符、赋值运算符
(C)关系运算符、赋值运算符、算术运算符
(D)关系运算符、算术运算符、赋值运算符
8.逻辑运算符中,运算优先级按高到低的依次是( )
(A)&& ! || (B)|| && ! (C)&& || ! (D)! && ||
9.以下符合C语言语法的赋值表达式是_________。
(A)d=9+e+f=d+9 (B)d=(9+e ,f=d+9)
(C)d=9+e,e++,d+9 (D)d=9+e++=d+9
10.数学中的式子x≥y≥z,在C语言中的表达式为_________。
(A)(x>=y)&&(y>=z) (B)(x>=y)and(y>=z)
(C)(x>=y>=z) (D)(x>=y)&(y>=z)
11.在C语言中,若定义x和y为double类型,则表达式x=1,y=x+3/2的值是_________。
(A)1 (B)2 (C)2.0 (D)2.5
12.设a=12,则表达式a+=a-=a*=a的值是_________。
(A)12 (B)144 (C)0 (D)132
13.设整型变量i ,j 值均为4,则下列语句j=i++,j++,++i执行后,i,j的值分别是_________。
(A)3,3 (B)6,5 (C)4,5 (D)6,6
14.设有int i ; char c ; float f ; 以下结果为整型的表达式是_________。
(A)i + f (B)i * c
(C)c + f (D)i + c + f
15.设 int n ; float f=13.8;执行n=((int)f)%3后,n的值是_________。
(A)1 (B)4 (C)4.333333 (D)4.6
16.设 a=1,b=2,c=3,d=4,则执行表达式:a
(A)4 (B)3 (C)2 (D)1
17.为表示“a和b都不等于0”,应使用的C语言表达式是_________。
(A)(a!=0)||(b!=0) (B)a || b (C)a && b (D)!(a=0)&&(b!=0)
18.执行下列程序段时输出结果是_________。
int x=13,y=3;
printf(“%d”,x%=(y/=2));
(A)3 (B)2 (C)1 (D)0
19.执行下列程序段时输出结果是_________。
#include
main()
{
int x=0245;
printf(“%d”,--x);
}
(A)244 (B)164 (C)245 (D)247
20.执行下列程序段时输出结果是_________。
#include
main()
{
int x=6,y;
y=2+(x+=x++,x+8,++x);
printf(“%d”,y);
}
(A)13 (B)14 (C)15 (D)16
二.填空题
1. C语言的基本数据类型分为________________、________________和_________________。
2. C语言的标识符只能由___________________,________________和________________三种字符组成,而且第一个字符必须为__________________________。
3. C语言中,用关键字__________定义基本整型变量,用关键字__________定义单精度实型变量,用关键字__________定义字符型变量。
4.C语言中字符变量在内存中占________个字节。
5. 字符变量使用一对_________界定单个字符,而字符串常量使用一对__________来界定若干个字符的序列。
6.运算符%,||,<<,<=,*= 中,优先级最高的是___________,最低是____________。
7. 表达式a=5*3,a*9的值是___________,表达式5.8 – 5/2 + 2.2 + 9 % 5的值是____________。
8. 表达式5%(- 3)的值是_____________,表达式 -5 % 3的值是______________。
9. 设a为int型变量,则运算表达式a=36 / 5 % 3 后,a的值为______________。
10. 设x=5.6 ,y=4.6 ,b=12 ;则表达式x + b % 4 *(int)(x + y)% 3 / 5 的值为____________。
11. 设x,y,z均为int 型变量,请用C 语言描述下列命题:
① x 和y 中有一个小于z __________________________________
② y 是偶数 _____________________________________________
③ 三个数中有两个为非负数 _________________________________
版权声明:本文标题:第2章 C语言基础知识 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1702706330a427525.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论