技能高考c语言复习资料.docx
《技能高考c语言复习资料.docx》由会员分享,可在线阅读,更多相关《技能高考c语言复习资料.docx(55页珍藏版)》请在冰豆网上搜索。
技能高考c语言复习资料
C语言二级考试资料
编著:
黄雨晨
一、C语言基础知识
1.标实符,常量,变量
(1)标识符
定义:
由字母、数字、下划线组成,并且第一个字母必须为字母或下划线的。
这样的组成就是标识符。
注意:
在C中大写字母及小写字母被认为是两个不同的字符。
分类:
1)关键字:
在C中已经定义好了的。
不能用作它的。
(ifdoubleint)。
2)预定义标识符:
如printfscanf.
3)用户标识符:
用户根据自己的需要来定义的。
(2)常量:
定义:
是指在程序的执行过程中,其指不会被改变的量、
分类:
1)整型常量:
没有小数的常量
39123
2)实型常量:
有小数点的常量
3.93.0
3)字符常量:
由单个字符组成的量
'a''b''5'(内存中占1个存储单元)
4)字符串常量:
至少有一个字符组成的量
"a""abc""fgbrhbg"(内存中以-0结束,占两个存储单元)
5)符号常量:
符号常量的值到底是多少,这是由在来定义符号常量时来决定的。
#definepi3.14(宏定义)
以下选项中,能用作数据常量的是:
A)o115B)0118C)1.5e1.5D)115l
以下选项中不能作为c语言合法常量的是:
A
A)'cd'B)0.1e+6C)"\a"D)'\011'
以下选项中不属于字符常量的是:
B
A)'C'B)"C"C)'\xCC0'D)'\072'
(3)整型常量及实型常量
整型常量的表示方法
***十进制数:
0-9
***八进制数:
以0开头的数字,由0-7组成。
下列合法的八进制数是:
A)0B)028C)-077D)01.0
***十六进制数:
以OX开头,由0-9和A-F组成。
A)oxffB)OxabcC)Ox11D)Ox19
实型常量的表示方法:
134.2
小数形式:
134.2
指数形式:
1.342e2
***字母e和E之前必须要偷
***字母e和E之后的数字必须是整数
***字母e和E之间不能有空格
2.90E-10.425E3-444.5424E-20.1e+61.23E1.3
2.变量的定义
1)定义:
在程序的运行过程中其值可以被改变的量,就叫变量。
2)原则:
变量必须先定义后再使用。
(变量定义的过程就是给变量开品存储单元的过程。
)
3)分类:
***整型变量:
用关键字int来表示
shortint短整型
longint长整型(在内存中占4个单元,如123l)
unsigned无符号如有-200u这就是错的。
(全部是正数)
变量的定义:
inta这是定义了一个整型变量a。
***float单精度在内存中占4个字节。
***double双精度在内存中占8个字节。
3.算术表达式
(1)基本的算术运算符
+、-、*、/、%这些都是双目运算符(有两个操作对象)
注意:
除%外,其他的运算符的运算对象可以是整型也可以是实型。
%操作对象只能是整型。
如:
10%3=110.7%554.64%643.3
说明:
1)如果双目运算符两边云算数的类型一致,则所得的结果的类型及运算数的类型一致。
如1.0/2.0=0.51/2=0
2)双目运算符两边运算数的类型不一致,则系统会自动进行类型转换,使两边的类型一致后,再进行运算。
1.0/2=0.5
3)所有的单精度数据,在运算过程中都以双精度进行计算。
(一般定义变量为实型类型的时候,可以直接定义为double型)
(2)优先级
()+-*/%+-
由高─────低
如:
5+1/2=5
4.强制类型转换
格式:
(类型名)(表达式)
***类型名后面的括号内表达式为单个表达式时,可省略括号,当后面的为多个表达式时,括号不可省略。
例如:
(int)3.525=3
(double)10%3=?
例如:
表达式:
(int)((double)9/2)-(9)%2的值是:
A)0B)3C)4D)5
设变量已正确定义并赋值,以下正确的表达式是:
A)X=Y*5=X+Z
B)int(15.8%5)
C)x=y+z+5,++y
D)x=25%5.0
5.赋值表达式
格式:
变量名=表达式
注:
1.不可以颠倒(左边必须是变量名,右边必须是C语言中合法的表达式)
2.功能是先求出右边变大事的值,然后把次赋值给赋值号左边的变量。
确切的说是把数据存入以该变量为标识的存储单元中去。
a=4a=b+7
3.结合性的优先级仅高于逗号表达式。
顺序是自右向左的。
如a=2+7/3
4."="是一个赋值号,不是一个等号。
5.x=y,变量的值也是可以传递和赋值的。
它的意思是将变量y中的赋值到x中去。
同样N=N+1也成立。
6.赋值运算符左侧只能是变量,不能是常量或表达式a+b=c是违法的。
7.赋值号的右边也可以是一个赋值表达式。
如a=b=7+1.
补充:
表达式和语句的区别:
表达式后面加一个分好就是语句。
6.复合赋值表达式
如:
1)a+=3-----a=a+3
同理可得
a*=3/=-=
a+=a=a+aa的初值为9
a+=a-=18
a+=(a=a-18)
a+=(a=-9)
a+=a
-18
2)若有定义语句:
intx=10;则表达式x-=x+x的值为:
A)-20B)-10C)0D)10
3)设有定义:
int=2;以下表达式中,值不为6的是:
A)X*=X+1X=X*(X+1)
B)X++.2*X
C)X*=(1+X)
D)2*X,X+=2
4)若变量均已正确定义并赋值,以下合法的C语言赋值语句是:
A)x=y==5;
B)X=n%2.5;
C)x+n=I
D)x=5=4+1;
7.++--运算符
++自身加1
--自身减1
如:
i=3i++_______I=i+1i=4
***单目运算
***i++++i
1)#include
intmain()
{
inti=3;
printf("%d\n",i);
}
结果为:
3
2)#include
intmain()
{
inti=3;
printf("%d\n",++i);
}
结果为:
4
***当++在前,先自身加1,然后再干别人干的事
3)#include
intmain()
{
inti=3;
printf("%d\n",i++);
}
结果为:
3
***当++在后,先干别人干的事然后再自身加1
4)inta,i=3;
a=i++;a=3;
a=++1;a=4
8.逗号表达式
(1)定义:
用逗号将表达式连接起来的式子称为逗号表达式
(2)格式:
表达式1,表达式2,表达式3……,表达式N
(3)说明:
1)逗号运算符的结合性为从左到右进行计算,逗号表达式的值是最后一个表达式的值。
2)在所有运算符中,逗号表达式的优先级最低。
例题:
inti=5;
inta,b,c;
a=(i+8,6,i+7);a=12,i=5
b=(i++,++i);a=7,i=7
c=(i+7,i++);a=5,i=6
9.课后习题;
(1)选择题:
1)以下选项中正确的整型常量是:
A.12.B.-20C.1,000D.256
2)以下选项中正确的实型常量是:
A.0B.3.4344C.0.345*122D..875
3)以下选项中不正确的实型常量是:
A.2.50E-1B.0.78646e2C.-55.55D.566E-2
4)以下选项中不正确的用户标识符是:
A.ABC.CB.fileC)MainD.PRINTF
5)以下选项中不正确的用户标识符是:
A._123B.printfC)A$D.Dim
6)C语言中运算对象必须是整型的运算符是:
A.%B./C.!
D.**
7)可在C语言中用作用户标识符的一组标识符是:
A.voiddefineWORD
B.as_b3_123IF
C.For-abccase
D.2cDOSIG
8)若变量已正确定义并赋值,复合C语言语法的表达式是:
A.a=a+7;B.a=7+b+c,a++C.int(12.3%3)D.a=a+7=c+b
9)以下叙述中正确的是:
A.a是实型变量,c允许进行赋值a=10,但不可以这样说:
实型变量中允许存放整型值。
B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式。
C.执行表达式a=b后,在内存中a和b的存储单元中原有值将被改变,a的值已由原来的值变为改变后的值,b的值有原来的改变为0.
D.已有a=3,b=5,当执行了表达式a=b,b=a之后。
使a中的值变为5,b中的值变为3.
10)以下叙述正确的是:
A.在C语言中无论是整数还是实数,只要在允许的范围内都能无误的表示。
B.C程序由主函数组成
C.C程序由若干函数组成
D.C程序中只允许包含一个函数
11)VC6.0中int类型变量所占字节数是:
A.1B.2C.3D.4
12)合法的八进制数是:
A.0B.028C.-033D.01.0
13)不合法的十六进制数是:
A.oxffB.0XabcC.0x11D.0x19
(2)填空题:
1)若K为INT型变量。
请写出运算K++后表达式的值()和变量K的值()
2)若X为DOUBLE型变量,请写出运算X=3.2,++X后表达式的值()和变量X的值()
3)函数体由({)开始,由(})结束。
函数体内的前面是(定义说明)部分,后面是(语句)部分。
4)C语言中的标识符可以分为(关键字)、(用户标识符)和预定义标识符。
5)在C语言中,用关键字()定义基本整型变量,用关键字()定义单精度实型变量。
用()定义双精度实型变量
6)把a1,a2定义成双精度实型变量,并赋初值1的定义语句是()
7)C语言程序中定义的变量,代表内存中的一个()
8)表达式3.5+1/2的计算结果是()
二、基本输入、输出语句
1.printf函数的一般调用形式
格式:
printf(格式控制,输出项1,输出项2,输出项3……);
在printf函数的最后面加上;号就是输出语句。
1)给输出项白提供输出格式说明
格式说明符:
作用:
就是使数据按格式说明符的要求进行输出。
组成:
由%号和紧跟在其后的格式描述符组成。
***int————%d
***float或double————%f或%e(科学计数法)
***char————%c
2)提供原样输出的文字或字符
***在“”中除了格式说明符之外的内容要全部原样输出。
***各个输出项之间要用逗号隔开。
***输出项可以使任意合法的常量,变量或表达式。
2.printf中常用的格式说明:
在格式说明符中,每一个格式说明符都必须以%号开头由相应的类型标识字母结束。
但在他们之间可以有其他的一个内容:
(1)%c:
输出一个字符
(2)%d:
输出一个十进制的数据
(3)%o:
以八进制格式输出
(4)%x:
以十六进制输出
(5)%u:
无符号十进制输出
(6)%f:
以带小数点的数字输出
(7)%e:
以指数形式输出
(8)%s:
输出一个字符串
(9)%%:
输出一个%
(10)%4d:
输出的数据长度是4个长度,当原来的长度大于4时会自动突破。
小于4时会自动填充空格。
(11)%x.yf:
x代表数制的宽度(包括小数点);y代表小数点后面的小数位数。
3.注意事项
1)输出比较自由一些,输出有的各个数之到底是什么,取决于格式说明符之间的内容。
2)格式说明符要及输出项一一对应。
3)输出语句中还可以有\n\r\t\a
4)尽量不要在输出语句中改变输出变量的值。
***inta=2;
printf("%d%d",a++,a);
结果:
2,2
5)输出的数据中如果存在变量,一定要是定义过的。
4.输出语句例题:
1)#include
main()
{
inta=1,b=0;
printf("%d,",b=a+b);
printf("%d\n",a=2*b);
}
程序运行后的输出结果是:
A.0,0B.1,0C.3,2D.1,2
2)doubley=3.141593;printf("%d%8.6f",x,y);输出结果是:
A.123.141593
B.12
3.141593
C.12,3.141593
D.123.141593
3)#include
main()
{
doublea=123.456;
printf("%6.2f",a);
}
输出结果为:
5.输入语句:
格式:
scanf(格式控制,输入项1.输入项2,……);
例如:
想通过键盘输入三个是分别给变量a,b,c。
并且他们分别为整型,浮点型,双精度型。
输入语句为scanf("%d%f%lf",&k,&a,&y);
说明:
(1)格式说明符及输出语句一样。
(2)在格式串中,必须含有及输入项——对应的格式转换说明符。
(3)在VC6.0的环境下,要收输入的double型数据的格式说明符一定要用%lf,否则数据不能正确的输入。
(4)由于输入时一个字符流,所以当输入的数据少于输入项时,程序会等待用户输入,直到满足要求。
当输入得分数据多余输入项时,多余的数据会自动作废。
(5)%*d:
跳过输入
6.练习题及复合语句、空语句:
(1)复合语句:
多个语句被{}括起来,当成一条语句来执行。
(2)空语句:
最后的表示只有一个“;”(用于计数)
练习题:
(1)选择题
1)intx;
x=11/3;
inty=5;
printf("%%d,%%%d\n",x,y);
输出结果为:
%d,%3
2)若变量已正确说明为int类型,要给a,b,c输入数据,以下正确的语句是:
A.read(a,b,c);B.scanf("%d%d%d",a,b,c);
C.scanf("%D%D%D",&a,&b,&c);D.scanf("%d%d%d",&a,&b,&c);
3)若变量已正确说明为float类型,要通过以下赋值语句给a赋予10、b赋予22、c赋予33,以下不正确的输入形式是:
B
A.10B.10.0,22.0,33.0C.10.0D.1022
2222.0,33.033
33
scanf("%f%f%f",&a,&b,&c);
(2)编程题
4)编写一个程序,从键盘上输入两个数字,然后让他们互换一下。
#include
intmain()
{
inta,b,c;
printf("请输入两个数:
\n");
scanf("%d%d",&a,&b);
a=b;b=c;c=a;
printf("两数交换后的结果为:
%d%d",a,b);
}
5)编写一个程序,从键盘上输入一个数字,进行四舍五入计算,要求保留两位小数。
#include
intmain()
{
doublea;
printf("请输入一个要进行四舍五入的数:
\n");
scanf("%lf",&a);
a=a*100+0.5;
a=(int)(a);
a=a/100;
printf("四舍五入的结果为:
%lf",a);
}
6)编写程序,使从键盘上输入的三个数倒着输出:
#include
intmain()
{
inta,b,c,d;
scanf("%d",&a);
if(a>=1000)
{
printf("输入有误,请重新输入:
\n");
scanf("%d",&a);
}
b=a/100;
c=(a%100)/10;
d=a%10;
a=d*100+c*10+b;
printf("%d\n",a);
}
三:
c语言的程序结构
1.关系运算及逻辑运算:
(1)简介:
关系表达式及逻辑表达式的运算结果都会得到一个逻辑值。
就是“真”,“假”
在c语言钟0表示“假”,非0(无论是负数还是正数都是真。
更多时候用1来代替)表示“真”。
(2)几个简单的关系运算符:
<<=>>===!
=
注意:
1)由两个字符组成的运算符,中间不能有空格。
2)它们都是双目运算符,具有自左向右的结合型。
3)上面的6个运算符中,前4个的优先级要比后面2个的优先级要高。
4)先计算,后判断,然后进行赋值计算。
(3)几个简单的逻辑运算符
&&及一假则假
||或一真则真
!
非非假则真,非真则假
例:
1)1&&0=1,0&&6=0
2)inta=4,b=7;
a&&b=1;
3)intx=0,y=7;
x++&&y++=?
x=?
y=?
++x&&y++=?
x=?
y=?
2.if语句:
(1)定义:
只有两种结果。
要么执行这条语句,要么执行那条语句。
if(条件表达式)
上述条件成立执行(花括号【符合语句】、离ifz最近的一条句子、空语句)的句子
else
上述条件不成立执行的句子
(2)分类:
1)不含有else的语句
if(条件)
{
语句
}
2)含有else的语句
if(条件)
语句1;
else
语句2;
语句3;(语句3不受控制)
例:
#include
intmain()
{
inta,b,c,t;
printf("input3numbers:
\n");
scanf("a=%db=%dc=%d",&a,&b,&c);
if(a>b)
{t=a;a=b;b=t};
if(a>c)
{t=c;c=a;a=t};
if(b>c)
{a=b;b=c;c=t};
printf("%d%d%d\n",a,b,c);
}
3.if的嵌套:
(1)讲解
#include
intmain()
{
inta;
scanf("%d",&a);
if(a>60)
{
if(a>90)
printf("you");
else
printf("liang");
}
else
printf("cha");
}
输入一个学生的成绩,评定他的成绩。
每十分一个等级
#include
main()
{
inta;
printf("inputanumber:
\n");
scanf("a=%d",&a);
if(a>=90)printf("A");
elseif(a>=80)printf("B");
elseif(a>=70)printf("C");
elseif(a>=60)printf("D")
elseprintf("E");
}
(3)例题:
1)
设有定义:
inta=1,b=2,c=3;以下语句中执行效果及其他三个不同德是:
A.if(a>b)c=a,a=b,b=c;
B.if(a>b){c=a;a=b;b=c;}
C.if(a>b)c=a;a=b;b=c;
D.if(a>b){c=a,a=b,b=c;}
2)
有以下程序,程序运行时,输入的值在哪个范围内会有输出结果:
#include
main()
{
intx;
scanf("%d",&x);
if(x<=3);else
if(x!
=10)
printf("%d\n",x);
}
A.不等于10的整数
B.大于3且不等于10的整数
C.大于3或等于10的整数
D.小于3的整数
3)有以下程序,程序的输出结果为:
#include
main()
{
inta=1,b=2,c=3,d=0;
if(a==1&&b++==2)(b++一次,b=3)
if(b!
=2||c--!
=3)(由于b!
=2成立,后面的c--不会执行,因此c的结果不变)
printf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);
}
A.1,2,3B.1,3,2C.1,3,3D.3,2,1
4.条件表达式
1)是c语言中唯一的一个三目运算
2)格式:
表达式1?
表达式2:
表达式3
当表达式1成立(非零时),表达式的值是表达式2的值,否则就是3的值。
如:
1)1<2?
4:
5
2)printf("%d",x<0?
(-1)*++x:
x++);(假定X的值为-3)
3)x++>3?
(x<3?
a,b):
b
5.switch语句:
switch(表达式)
{
case常量表达式1:
语句1;break;
case常量表达式2:
语句2;break;
case常量表达式3:
语句3;break;
case常量表达式4:
语句4;break;
case常量表达式5:
语句5;break;
case常量表达式6:
语句6;
……
default:
语句n;
}
(1)switch后面无分号
(2)通常常量表达式为整型类型
(3)default用于最后系统自动判断的剩余值
(4)break用于返回,退出循环(最后一条语句不用加break,因为执行完后只有最后一个返回值了)
(5)case后面有一定要加一个空格,关键字后面不能及其他字符连在一起。
6.习题
(1)选择题
1)下列运算符中优先级最高的运算符是:
A.!
B.%C.-=D.&&
2)下列运算符中优先级最低的运算符是:
A.||B.!
=C.<=D.+
3)设a、b、c都是int型变量,且a=3,b=4,c=5;则以下表达式中,值为0的表达式为:
A.a&&bB.a<=bC.a||b+c&&b-cD!
((a
c||1)
4)以下程序的输出结果为:
A.0B.1C.2D.3
main()
{
inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec+=1;
printf("%d\n",c);
}
(else及最近的if配对,若第一个if不成立,则继续执行下一条语句。
)
5)以下程序的输出结果为:
A.1B.2C.3D.4
main()
{
intw=4,x=3,y=2,z=1;
printf("%d\n",(ww:
zz:
x));
}
6)若执行以下程序时从键盘山输入3和4,则输出结果为:
A.14B.16C.18D.20
main()
{
inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a
s*=s;
printf("%d\n",s);
}
7)以下是if语句的基本形式:
D
if(表达式)
语句;
其中“表达式”
A.必须是逻辑表达式
B.必须的关系表达式
C.必须是逻辑表达式或关系表达