计算机二级C语言1文档格式.docx
《计算机二级C语言1文档格式.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言1文档格式.docx(44页珍藏版)》请在冰豆网上搜索。
②shortintx(shortx)------称为短整型,它规定的X的取值范围和intx基本一样,只不过取的数要比intx要小而已,因为它是用两个字节来存放X的(-32768~+32767)。
而上面的是用四个字节来存放X的。
③longintx(longx)-----称为长整型,其规定的X取值范围和intx一样,也是用四个字节来存放X的(输入时要用%ld、%Ld)。
④unsignedintx(unsignedx)------称为无符号整型,它规定了X只能取正整数,也是用四个字节来存放X的。
⑤unsignedshortintx------称为无符号短整形,其十进制的取值范围喂0~65535
⑥charx------称为字符型,用一对单引号‘’括起来的任意字符,包括字母字符、数字字符、转义字符等
如:
’a’、’3’、’\n’等
分析:
’a’、’A’、‘2’、2、‘ab’、‘\123’
⑦floatx------单精度浮点型,小数点后默认保留6位小数
如:
0.123、.123、123.等
1.23e+2、1.23e2、1.23E2、.123e-2等(指数形式)
用指数形式表示浮点数要注意三点:
ⅰ、e或E前后必须有数ⅱ、e或E后面必须是整数ⅲ、e或E的前后以及数字之间不得插入空格
⑧doublex------双精度浮点型(输入时要用%lf或%Lf,输出可用%f、%lf、%Lf)
(2)关于常量(整数、小数、字符型数据)
5------可以认为是int型、shortint、unsignedint都可以
5L或5l------是longint型
5h或5H------是shortint型
1.23------是double型
‘a’-----97
‘A’-----65
‘2’------50
‘\123’---
(3)关于类型的强制转换问题------即把一个类型强制转换成其他类型
#include”stdio.h”
{intx=5;
/*给变量X初始化*/
floaty,z;
z=2.56;
/*给变量Z赋值*/
y=(float)x;
/*对变量X的值进行强制转换,而X的类型和值都不改变*/
printf(“%d,%f\n”,x,y);
/*5,5.000000*/
x=(int)z;
(或写成x=z)/*对变量Z的值进行强制转换,且不进行四舍五入*/
printf(“%d”,x);
/*2*/
a=(float)b+c;
和a=(float)(b+c);
有什么区别?
关于强制转换要注意两点:
一是待转换的类型一定要用小括号括起来;
二是对后面变量的值进行转换,不改变原来变量的类型和值,并且不进行四舍五入。
5常用的算术运算符
+、-、*、/、%、+=、-=、*=、/=、++、--、,等
下面把需要特殊注意的运算符加以说明:
①/------除号,ⅰ若分子和分母都是整型,其结果也是整型(不进行四舍五入)ⅱ若分子或分母至少有一个是浮点型,其结果就是浮点型。
%------取余,注意%的前后都必须是整型的,且结果的符号与被除数相同.
举例:
把两个两位的正整数按要求组成一个新数
a=45,b=32,要求组成一个新数C=4325
{inta=45,b=32,c;
c=a/10*1000+b/10*100+b%10*10+a%10;
如何取出1234的每个位上的数?
(使用算术符%和/)
②+=、-=、*=、/=------称为复合运算符(注意:
两个符号不能分开)
a=a+b;
可以写成a+=b;
a+=b-c和a-=b+c可以写成什么呢?
(由学生来回答)
a+=a-=a+a(假设a=9),最后a=?
(-18)(由老师来讲解)
③++、--称为自增自减运算符(单目的),很重要
a++先用a,然后再把a加1
++a先把a加1,然后再用a
a--先用a,然后再把a减1
--a先把a减1,然后再用a
见如下程序
{inta=3,b=6,c,d,e,f;
c=b+a++;
d=a+(--b);
e=-a++;
f=a+b+c;
printf(“a=%d,b=%d,c=%d,d=%d,e=%d,f=%d\n”,a,b,c,d,e,f);
答案:
a=5,b=5,c=9,d=9,e=-4,f=19
④,逗号---称为逗号运算符,由逗号运算符构成逗号表达式,逗号表达式最后一项的值就是逗号表达式的值,逗号运算符的优先级最低。
a=3,b=4,c=5;
x=(a,b,c);
问:
x=?
(5),逗号表达式的值=?
(5)
x=a,b,c;
(3),逗号表达式的值=?
x=(a++,--b,a+b);
(7),逗号表达式的值=?
(7)
x=a++,--b,a+b;
x=(a++,--b,a+b+c++);
(12),逗号表达式的值=?
(12)
6关于数据溢出问题,看下面例子:
inta=-3;
unsignedshortx;
x=a;
(65533)
7分析:
inta=b=c=1;
对不?
领学生做书后的习题
第三章顺序结构程序设计
1关于输出函数的使用
使用的格式:
ⅰprintf(“各种字符及汉字等”);
/*printf要小写*/
这种使用就是在屏幕上显示双引号中的内容
ⅱprintf(“输出格式控制”,待输出的变量列表);
这种使用就是在屏幕上以何种形式输出变量的值
要重点掌握输出格式控制都有哪些?
1格式符:
%d以普通整型输出(不可以写成%D)
%md以普通整型输出,数据占m位,右对齐
%+md以普通整型输出,数据占m位,右对齐(正数的前面有+号)
%-md以普通整型输出,数据占m位,左对齐
%hd以短整型输出
%ld(或%Ld)以长整型输出
%u以无符号整型输出
%o以八进制形势输出
%x(或%X)以十六进制形势输出
%f以单精度小数形势输出,点后6位小数
%lf(或%Lf或%f)以双精度小数形势输出,
%±
m.nf以单精度小数形势输出,点后n位小数,且进行四舍五入
%.nf以单精度小数形势输出,点后n位小数,且进行四舍五入
%c以字符形式输出
%s以字符串形式输出
说明:
以上的常用格式符必须和后面的变量一一对应,并且后面的变量是什么类型前面就必须用相应的格式符
例:
inta=-2;
unsignedintb=30;
floatc=3.1456;
printf(“%d%u%5.2f”,a,b,c);
输出结果是什么?
(-2303.15)
②普通字符
普通字符原样输出,它不控制变量的输出。
printf(“a=%d,b=%u,c=%5.2f”,a,b,c);
③转义字符
\n回车且换行
\r回车但不换行
\b退一个字符
\t走一个制表位(8个字符)
\\转译成\
\’转译成’
\”转译成”
%%转译成%
\ddd转译成1~3位八进制所对应的ascii码值所代表的字符
\xdd转译成1~2位十六进制所对应的ascii码值所代表的字符
老师举例子说明
printf(“a=%d,b=%u,c=%5.2f\n”,a,b,c);
printf(“%c\n%c\n”,’\56’,’\x2a’);
问:
以上输出结果是什么?
inta=1,b=3;
printf(“%d”,a,b);
(1)
printf(“%d”,(a,b));
输出结果是什么?
(3)
2关于输入函数的使用
格式:
scanf(“输入格式控制”,变量地址列表);
重点掌握都有哪些输入格式?
(有格式符和普通字符,没有转义字符)
%d以普通整型输入
%ld(%Ld)以长整型输入
%hd以短整形输入
%md取整型的m位
%u以无符号型输入
%o以八进制输入
%x(%X)以十六进制输入
%f以单精度小数输入
%lf(%Lf)以双精度小数输入
%mf以单精度小数输入
(但是不能规定它的精度。
%5.2f)
%c以字符型输入
%s以字符串型输入
inta;
floatb;
doublec;
longd;
scanf(“%d%f%lf%ld”,&
a,&
b,&
c,&
d);
假设让a=23,b=2.6,c=12.66,d=12345
在键盘上应如何输入?
普通字符不影响输入,只是在输入时原样打上就行
把上例改为:
scanf(a=%d,b=%f,c=%lf,d=%ld);
那么应该如何输入?
③关于混合输入问题
假设让a=23,b=’k’,c=12.5,d=’p’
scanf(“%d%c%f%c”,&
如何输入?
(23k12.5p或23k12.5p)
④关于跳过某个输入项的问题
scanf(“%d%*d%f”,&
x,&
y);
假设输入如下:
20302.5回车
(20)y=?
(2.5)
⑤按照给定的长度输入
scanf(“%3d%2d”,&
2345678回车
(234)y=?
(56)
下面举三个综合的例子:
(让学生自己写写看行不?
?
)
例1:
从键盘输入两个两位的正整数,第一个数的十位作为千位,个位作为十位;
第二个数的十位作为百位,个位作为个位,组成一个新的数输出。
scanf(“%d%d”,&
b);
c=a/10*1000+b/10*100+a%10*10+b%10;
printf(“\nc=%d”,c);
例2:
从键盘输入两个数,然后把这两个数交换并输出
{inta,b,t;
t=a;
a=b;
b=t;
;
printf(“\n%d,%d”,a,b);
例3:
输入一个double型数,保留两位小数,第三位小数进行四舍五入,然后输出。
{doublex,y;
scanf(“%lf”,&
x);
y=(int)(x*100+0.5)/100.0;
printf(“\ny=%.2f”,y);
最后领学生做做书后习题
第四章选择(分支)结构程序设计
1在C语言中真和假的概念
真-----若一个表达式成立则称为真;
若值为非0也称为真。
2关系运算符和关系表达式
C语言提供六种关系运算符:
>
<
>
=<
=
==(等于)!
=(不等于)
注意几点:
●由两个符号组成的关系运算符不能分开
●前四个运算符优先级相同且高于后两个
●关系符低于算术运算符,但高于赋值运算符(=)
如:
a+b==c相当于(a+b)==c
●关系表达式的值:
一个是真(用1来表示);
另一个是假(用0来表示)
●注意“=“和”==“的区别
●0<
x<
10代表什么含义?
3逻辑运算符和逻辑表达式
C语言提供三种逻辑运算符:
(逻辑非)&
&
(并且)||(或者)
他们之间的优先级由高到底是:
&
||
●!
高于算术运算符,!
、&
、||都高于赋值运算符。
●逻辑表达式值的问题:
真和假
●逻辑表达式的短路问题:
a=0,b=0
问下列逻辑表达式的值是什么?
a=?
b=?
a++&
b++
答案:
逻辑表达式的值为假(也就是0),a=1,b=0
若改为:
a++||b++呢?
情况会如何呢?
总结:
六个关系符和三个逻辑符的优先级都高于赋值(=);
除了!
之外都低于算术运算符
4用C语言程序来完成下列的分段函数
y=
{intx,y;
/*定义两个整型变量*/
scanf(“%d”,&
/*从键盘输入一个整数X*/
if(x>
-5&
0)
y=x;
if(x==0)/*注意x==0与x=0的区别*/
y=x-1;
0&
10)
y=x+1;
printf(“y=%d\n”,y);
/*把结果输出到屏幕上*/
在C语言中可以用if语句和switch语句来实现程序的分支。
(1)用if语句实现分支
①if(条件)
{语句1}
即:
条件为真,执行语句1、
②if(条件)/*if和else是关键字,要小写*/
else{语句2}
条件为真,执行语句1,否则执行语句2
注意以下几点:
①if后面的条件可以是如下类型:
●关系表达式,如x>
y
●逻辑表达式,如x>
y&
y>
z
●算术表达式,如x+y
●赋值表达式,如x=y
●变量,如x
●常量,如-5
●++或—出现在条件里,如x++>
②如果语句1或语句2是一条语句,则{}一对花括号可以省略
③if….else是一条语句,else不能单独出现,要注意else与if的搭配问题(既:
else与其上面最近的且没使用的if搭配)
下面举几个例子来说明:
从键盘输入一个整数,判断其是奇数还是偶数?
if(x%2==0)
printf(“偶数”);
elseprintf(“奇数”);
下面程序的输出结果是什么?
{inta=2,b=-1,c=2;
if(a<
b)
if(b<
0)c=0;
elsec+=1;
2
{if(b<
3
例4:
if(a++<
printf(“%d,%d”,c,a);
2,3
可以把条件a++<
b分成三个步骤来执行:
第一步:
先判断a<
b是真?
还是假?
第二步:
把a加1,既a=a+1
第三步:
根据第一步的判断情况来决定程序的执行方向
请同学们考虑:
若改为++a<
b呢?
例5:
if(a=b)
⑵关于三目运算符
表达式1?
表达式2:
表达式3
既:
如果表达式1为真,则取表达式2的值,否则取表达式3的值
看下面例子:
inta=1,b=2,c=3,y;
y=a>
b?
a:
b;
y=?
(2)
a>
c?
c:
a;
⑶用switch开关语句来实现程序的分支
switch()
{case常量表达式1:
语句;
case常量表达式2:
case常量表达式3:
。
default:
语句
}
◆switch和case是关键字,要小写
◆switch后面括号里可以是以下内容:
整型常量或变量、字符常量或变量、关系表达式、
逻辑表达式、整型的算术表达式,总之是整数
◆case要和后面的常量表达式用空格分开,且这个常量表达式必须是整型常量或字符常量,不是变量。
◆default可以放在任何位置,不一定在最后,也可以没有
◆可以用break语句跳出switch
举几个例子:
程序输出结果是什么?
{intx=0,y=2,z=3;
switch(x)
{case0:
printf(“*”);
case1:
printf(“#”);
break;
default:
printf(“!
”);
*#
switch(y==2)
{case1:
printf(“*”);
break
case2:
printf(“%”);
领学生做书后习题
第五章循环结构程序设计
如何计算1+2+3+4+。
。
+100?
这就需要用到循环,C语言有三种循环结构,
while()、do{}while;
、for()
{inti,sum=0;
/*定义所需的变量,并给变量sum初始化为0*/
i=1;
while(i<
=100)
{sum+=i;
i++;
printf(“%d”,sum);
(1)while()循环
while(循环条件)
{
循环体
若循环条件为真,则执行循环体中的语句,执行完后再去判断循环条件,若还为真,则继续执行循环体,否则退出循环。
①while是关键字,要小写
②while后面的循环条件和if后面的条件一样
③对于任何循环,只要掌握两点内容:
一是循环条件是什么?
二是循环体是谁?
④若循环体只是一条语句,则一对花括号{}可以省略
⑤如何结束循环,一般是两种方式:
一是正常结束(既不满足循环条件了)
二是中途结束(用break语句)
现在再返回上面的程序看一看,能否找到循环条件是什么?
循环体是谁?
while(x>
;
或写成while(x>
0);
请说出循环条件和循环体?
(2)do…while()循环
do{
循环体
}while(循环条件);
先执行循环体中的语句,执行完后再去判断循环条件,若为真,则继续执行循环体,否则退出循环。
①do和while是关键字,都要小写
②循环至少执行一次
③while()后面要有分号;
(3)for循环
for(表达式1;
表达式2;
表达式3)
执行过程:
先执行表达式1,然后判断表达式2是否为真?
,若为假则退出循环;
若为真则执行循环,再执行表达式3,然后再去判断表达式2是否为真?
,若为真则继续执行循环体,再执行表达式3……,直到表达式2为假
①三个表达式可有可无,但分号;
必须有
②三个表达式的含义如下:
表达式1:
一般是给变量赋值的
是循环条件
表达式3:
是变量的变化
③重点弄明白循环条件是什么?
④如何结束循环,两种方式:
用do…while()循环和for()循环来改写上面的例子:
1用do…while()循环
do{sum+=i;
100);
/*注意后面的分号一定要有*/
2用for()循环
for(i=1;
i<
=100;
i+