《计算机二级C语言考试C语言学习第2讲.ppt》由会员分享,可在线阅读,更多相关《计算机二级C语言考试C语言学习第2讲.ppt(30页珍藏版)》请在三一办公上搜索。
1、C语言程序设计,第二讲,一、C语句概述,C语句:以“;”作分隔符,编译后产生机器指令.C语句分类:(4类)1、表达式语句:表达式加分号构成。,2、空语句:;,3、程序控制语句(9种):,如 total=total+limit;a=3;func();printf(“Hello,world!n”);,4、复合语句:用 括起来的一组语句一般形式:数据说明部分;执行语句部分;说明:“”后不加分号语法上和单一语句相同复合语句可嵌套,二、数据的输出,数据输入与输出C语言无I/O语句,I/O操作由函数实现#include#include“stdio.h”,格式:printf(“格式控制串”,输出表)功能:按
2、指定格式向显示器输出数据,格式输出函数,输出表:要输出的数据(注:此项可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%修饰符格式字符,用于指定输出格式普通字符或转义序列:原样输出格式字符,int a=567;printf(“%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%e”,a);,float a=567.789;
3、printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.677890e+02,567.789000,567.789,%,说明 1、格式字符要用小写2、格式字符与输出项个数应相同,按先后顺序一一对应(如果不同则)3、输出转换:格式字符与输出项类型不一致,自动按指定格式输出,例 main()unsigned int u=65535;printf(”u=%dn,u);输出结果:u=-1,例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn
4、”,a,b);,例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果:3 4 a=3,b=4,附加格式说明符(修饰符),例 int a=1234;float f=123.456;char ch=a;printf(“%8d,%2dn”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2en”,f,f,f,f,f);printf(“%3cn”,ch);,运行 1234,1234结果:123.456000,123.456000,123.5,123.46,1.23e+02 a,例 static char a=“
5、Hello,world!”printf(“%sn%15sn%10.5sn%2.5sn%.3sn”,a,a,a,a,a);,运行结果:Hello,world!Hello,world!Hello Hello Hel,例 m.n,例 int a=1234;float f=123.456;static char c=“Hello,world!”;printf(“%8d,%-8dn”,a,a);printf(“%10.2f,%-10.1fn”,f,f);printf(“%10.5s,%-10.3sn”,c,c);,运行结果:1234,1234 123.46,123.5 Hello,Hel,例-,例 in
6、t a=1234;float f=123.456;printf(“%08dn”,a);printf(“%010.2fn”,f);printf(“%0+8dn”,a);printf(“0+10.2fn”,f);,例 0、+,例 int a=123;printf(“%o,%#o,%X,%#Xn”,a,a,a,a);,例#,例 long a=65536;printf(“%d,%8ldn”,a,a);,例 l,/00001234,/0000123.46,/000+1234,/000+123.56,/173,0173,7B,0X7B,/0,65536,本节例题:,1.有以下程序main()int a=6
7、66,b=888;printf(“%dn”,a,b);程序的运行结果是_.2.若有以下程序段 int m=32767,n=032767;printf(“%d,%on”,m,n);执行后输出结果是_.3.若有以下程序段int m=0 xabc,n=0 xabc;m-=n;printf(“%Xn”,m);执行后输出结果是_.4.若变量a,b已定义为int类型并赋值21和55,要求用函数以a=21,b=55的形式输出,则输出语句为_.5.若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=9请完成输入语句:printf(“【7】”,a,b);(08年9月7题填空),格式输入函
8、数,格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束返值:正常,返回输入数据个数,地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e,例 scanf(“%d”,输入:10 则 a=10,例 scanf(“%x”,输入:11 则 a=17,三、数据的输入,附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”,输入 19991015 则1999yy,10 mm,15 dd,例 scanf(“%3d%*4d%f”,输入 12345678765.43 则123k,8765.43f,例 sc
9、anf(“%2d%*3d%2d”,输入 1234567 则12a,67b,例 scanf(“%3c%2c”,输入 abcde 则ac1,d c2,输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d%o%x”,输入 123 123 123 输出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”,输入 12:30:45 则12 h,30 m,45 s,例 scanf(“%d,%d”,&a,&b)输入 3,4 则3a,4 b,例 scanf(“a=%d,b=%d,c=%d”,输入 a=12,b=24,c=36,
10、说明:用“%c”格式符时,空格和转义字符作为有效字符输入,如 scanf(“%c%c%c”,若输入abc 则ac1,c2,b c3,输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入,如 scanf(“%d%c%f”,若输入1234a123o.26 则 1234 a,a b,123 c,(08年9月19题)若变量已正确定义为int型,要通过语句scanf(“%d,%d,%d”,给a赋值1,给b赋值2,给c赋值3,以下输入形式中错误的是(代表一个空格符)()A)1,2,3 B)123C)1,2,3 D)1,2,3,(11年3月)有以下程序(说明:字符0的ASCII码
11、值为48)#include main()char c1,c2;scanf(%d,当执行上述程序段,并从键盘输入:name=Lili num=1001后,name的值为A)LiliB)name=LiliC)Lili num=D)name=Lili num=1001,关系运算符和表达式关系运算符种类:=!=结合方向:自左向右优先级别:,例 ca+b/c(a+b)ab!=c/(ab)!=c a=bc/a=(bc),关系表达式的值:是逻辑值“真”或“假”,用1和0表示,例 int a=3,b=2,c=1,d,f;ab(ab)=c b+cb f=abc,/表达式值1,/表达式值1,/表达式值0,/d=1
12、,/f=0,关系运算注意:,例 注意区分“=”与“=”int a=0,b=1;if(a=b)printf(“a equal to b”);else printf(“a not equal to b”);,例 应避免对实数作相等或不等的判断如 1.0/3.0*3.0=1.0 结果为可改写为:fabs(1.0/3.0*3.0-1.0)1e-6,0,例 若a=0;b=0.5;x=0.3;则 a=x=b的值为,例 a0 结果为 A100 结果为,逻辑运算符和表达式逻辑运算符种类:&|!逻辑运算真值表,C语言中,运算量:0表示“假”,非0表示“真”,运算结果:0表示“假”,1表示“真”,例(优先级)ab
13、&xy a=b|x=y!a|ab,优先级:,结合方向:,/(a=x)&(x=b),/(ab)&(xy),/(a=b)|(x=y),/(!a)|(ab),优先级:,结合方向:,例 a=4;b=5;!a a&b a|b!a|b 4&0|2 53&2|84-!0 c&d,值为1,值为0,值为1,值为1,值为1,值为1,/(53)&2|(8(4-(!0)值为1,优先级:,结合方向:,短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符,例 a(m=ab)&(n=cd),/结果m=0,n=1,例1设有定义:int a=2,b=3,c
14、=4;则以下选项中值为0的表达式是_.A)(!a=1)程序运行后输出结果是_.A)1 2 3 B)2 3 4 C)2 2 3 D)2 3 3例3(10/3)若a是数值类型,则逻辑表达式(a=1)|(a!=1)的值是:A、1 B、0 C、2 D、不知道a的值,不能确定,学考结合:,3.3 选择型程序设计if语句(条件选择语句)if语句的三种形式形式一:格式:if(expression)statement执行过程:,例:if(xy)printf(“%d”,x);,形式二:格式:if(expression)statement1 else statement2执行过程:,例:if(xy)max=x;e
15、lse max=y;,形式三:格式:,if(expr1)statement1else if(expr2)statement2else if(expr3)statement3.else statementn,执行过程:,例:if(salary10000)index=0.4;else if(salary8000)index=0.3;else if(salary4500)index=0.15;else if(salary3000)index=0.05;else index=0;,如:if(a=b 程序运行后的输出结果是A)3 B)2 C)1 D)0(10年9月)若变量已正确定义,在if(W)prin
16、tf(“%dn,k”);中,以下不可替代W的是A)ab+cB)ch=getchar()C)a=b+cD)a+,说明:if后面的表达式类型任意,语句可以是复合语句 if(x)if(x!=0)if(!x)if(x=0),例 考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,Compile Error!,例1.若有以下程序main()int a=4,b=3,c=5,t=0;if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;printf(“%d%d%dn”);执行后输出结果是_.例2.若有以下程序main()int n=0,m=1,
17、x=2;if(!n)x-=1;if(m)x-=2;if(x)x-=3;printf(“%dn”,x);执行后输出结果是_.,学考结合:,例(11年3月)有以下程序main()int x;scanf(%d,若程序运行时从键盘输入12,则输出结果为【7】。,if语句嵌套:一般形式:,if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对,例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);,修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);,实现if else 正确配对方法:加,有以下程序(08年9月28题)#include main()int x=1,y=2,z=3;if(xy)if(yz)printf(“%d”,+z);else printf(“%d”,+y);printf(“%dn”,x+);程序运行结果是A)331 B)41 C)2 D)1,学考结合:,