经济学第讲顺序选择结构程序设计.pptx
11.C语句概述(1)1.1 C程序的结构第1页/共47页21.C语句概述(2)1.2 C语句的分类n表达式语句一般形式:表达式;例:x=y+z;i+;n函数调用语句一般形式:函数名(实际参数表);例:printf(C Program);n复合语句n空语句n控制语句条件判断语句:if、switch循环执行语句:do while、while、for转向语句:break、goto、continue、return x=y+z;a=b+c;printf(“%d%d”,x,a);把多个语句用 括起来组成的一个语句 只有分号“;”组成的语句,什么也不执行,在程序中可做空循环体返回主菜单第2页/共47页32.赋值语句(1)一般形式:变量表达式;说明:1)赋值语句可以嵌套 如:a=b=c=5;2)在变量说明中给变量赋初值和赋值语句的区别int a=5,b,c;3)在变量说明中,不允许连续给多个变量赋初值int a=b=c=5;int a=5,b=5,c=5;4)赋值表达式和赋值语句的区别if(x=y+5;)0)z=x;if(x=y+5)0)z=x;返回主菜单第3页/共47页43.数据的输入输出在C语言中的实现(1)n所谓输入输出是以计算机为主体而言的n在语言中,所有的数据输入输出都是由库函数完成的,因此都是函数语句n在使用语言库函数时,要用预编译命令#include将有关“头文件”包括到源文件中#include#include“stdio.h”第4页/共47页53.数据的输入输出在C语言中的实现(2)3.1字符数据的输入输出nputchar函数(字符输出函数)ngetchar函数(字符输入函数)向终端输出一个字符 一般形式 putchar(字符变量)例3-1从键盘上输入一个字符 一般形式getchar()例3-2第5页/共47页63.数据的输入输出在C语言中的实现(3)3.2 格式输出nprintf函数(格式输出函数)一般形式:printf(“格式控制字符串”,输出表列);指定输出格式,由格式字符串和非格式字符串两种组成,非格式字符串照原样输出。例3-3例3-4例3-5例3-6例3-7例3-8第6页/共47页73.数据的输入输出在C语言中的实现(4)3.3 格式输入nscanf函数(格式输入函数)一般形式:scanf(“格式控制字符串”,地址表列);指定输入格式,只有格式字符串。说明例3-9返回主菜单第7页/共47页84.关系运算符和关系表达式n 关系运算符及其优先次序一般形式表达式 关系运算符 表达式 a+bc-dx3/2a+1cn 关系表达式返回主菜单第8页/共47页95.逻辑运算符和逻辑表达式n 逻辑运算符及其优先次序n 逻辑表达式返回主菜单第9页/共47页106.选择语句结构(1)6.1 if语句n if语句的三种形式n 条件运算符n if语句的嵌套第10页/共47页116.选择语句结构(2)6.2 switch语句一般形式 switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default :语句n+1;若符合常量表达式2,会执行其后所有的语句改进返回主菜单第11页/共47页12作业思考题(1)C语言中的语句有哪些类?(2)什么是算术运算、关系运算、逻辑运算?(3)C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?上机实验1第12页/共47页13第13页/共47页14例3-1 输出单个字符#includemain()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);输出:BOY第14页/共47页15例3-2 输入单个字符#includemain()char c;c=getchar();putchar(c);输出(如在键盘上输入“a”):aa第15页/共47页16输出格式字符串一般形式:标志输出最小宽度.精度长度类型 n类型:用以表示输出数据的类型n标志:标志字符为-、+、#、空格四种 n输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0。n精度:以“.”开头,后跟十进制整数。如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。n长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。第16页/共47页17输出格式字符串类型格式字符意 义d,i以十进制形式输出带符号整数(正数不输出符号)o以八进制形式输出无符号整数(不输出前缀0)x,X以十六进制形式输出无符号整数(不输出前缀Ox)u以十进制形式输出无符号整数f以小数形式输出单、双精度实数e,E以指数形式输出单、双精度实数g,G以%f或%e中较短的输出宽度输出单、双精度实数c输出单个字符s输出字符串第17页/共47页18输出格式标志标标 志志意意 义义-结果左对齐,右边填空格结果左对齐,右边填空格+输出符号输出符号(正号或负号正号或负号)空格空格输出值为正时冠以空格,为负时冠以负号输出值为正时冠以空格,为负时冠以负号#对对c,s,d,uc,s,d,u类无影响;对类无影响;对o o类类,在输出时加前缀在输出时加前缀o o;对对x x类类,在输出时加前缀在输出时加前缀0 x0 x;对;对e,g,f e,g,f 类当结果有类当结果有小数时才给出小数点小数时才给出小数点第18页/共47页19例3-3 无符号数据的输出 main()unsigned int a=65535;int b=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b);输出:a=-1,177777,ffff,65535b=-2,177776,fffe,65534第19页/共47页20例3-4 字符数据的输出main()char c=a;int i=97;printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);输出:a,97a,97第20页/共47页21例3-5 字符串的输出main()printf(%3s,%7.2s,%.4s,%-5.3sn,CHINA,CHINA,CHINA,CHINA);输出:CHINA,CH,CHIN,CHI 第21页/共47页22例3-6 输出实数时的有效位数main()float x,y;x=111111.111;y=222222.222;printf(“%f”,x+y);输出:333333.328125只有前7位是有效数字第22页/共47页23例3-7 输出双精度数时的有效位数main()double x,y;x=1111111111111.111111111;y=2222222222222.222222222;printf(“%f”,x+y);输出:3333333333333.333010只有前16位是有效数字第23页/共47页24例3-8 输出实数时指定小数位数main()float f=123.456;printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);输出:123.455994 123.455994 123.46 123.46 123.46 第24页/共47页25输入格式字符串一般形式:%*输入数据宽度长度类型n类型:表示输入数据的类型 n“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。n宽度:用十进制整数指定输入的宽度(即字符数)。n长度:长度格式符为l和h,l表示输入长整型数据(如%ld)和双精度浮点数(如%lf)。h表示输入短整型数据。第25页/共47页26输入格式字符串类型格式格式字符意义字符意义d,i输入十进制整数输入十进制整数o输入八进制整数输入八进制整数x输入十六进制整数输入十六进制整数u输入无符号十进制整数输入无符号十进制整数f或或e输入实型数输入实型数(用小数形式或指数形式用小数形式或指数形式)c输入单个字符输入单个字符s输入字符串输入字符串第26页/共47页27scanf函数的几点说明1)scanf函数中没有精度控制。2)scanf函数中要求给出变量地址,而不是变量名。3)在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据时即认为该数据结束。4)在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。scanf(“%c%c%c”,&c1,&c2,&c3);如输入 a b c则把a赋予c1,赋予c2,b赋予c3scanf(%d,a);scnaf(%d,&a);第27页/共47页28例3.9 用scanf函数输入数据main()int a,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%dn”,a,b,c);输出:3,4,5输入:3 4 5第28页/共47页29关系运算符及其优先次序 小于 大于=大于或等于 等于!不等于优先级相同 (高)优先级相同(低)低高赋值运算符关系运算符算术运算符第29页/共47页30逻辑运算符及其优先次序&逻辑与|逻辑或!逻辑非!(非)算术运算符关系运算符&和|赋值运算符低高第30页/共47页31逻辑表达式一般形式 表达式 逻辑运算符 表达式 逻辑表达式的值是“真”或“假”,以“1”和“0”代表例如:若a4,则!a为 0若a4,b5,则a&b为 1求值规则:1)与运算&:参与运算的两个量都为真时,结果才为真,否则为假。2)或运算|:参与运算的两个量只要有一个为真,结果就为真。3)非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。0|2的值为 1第31页/共47页32if语句的三种形式第一种形式 if(表达式)语句 流程图if(xy)printf(“%d”,x)第32页/共47页33if语句的三种形式第二种形式if(表达式)语句1;else 语句2;if(xy)printf(“%d”,x);elseprintf(“%d”,y);流程图第33页/共47页34if语句的三种形式第三种形式if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;else if(表达式m)语句m else 语句n;流程图说明第34页/共47页35if语句的说明1)在三种形式的if语句中,在if关键字之后均为表达式。该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。2)在if语句中,条件判断表达式必须用圆括号括起来,在语句之后必须加分号。3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用括起来组成一个复合语句。但要注意的是在之后不能再加分号。例3-10例3-11第35页/共47页36例3-10输入两个实数,按数值由小到大的次序输出这两个数 main()float a,b,t;scanf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2f,%5.2fn,a,b);输出:3.6,-3.2-3.20,3.60第36页/共47页37例3-11 输入3个数a,b,c,要求按由小到大的顺序输出main()float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf(“%5.2f,%5.2f,%5.2fn”,a,b,c);输出:3,7,11.00,3.00,7.00第37页/共47页38if语句的嵌套一般形式if()if()语句1else 语句2elseif()语句3else 语句4内嵌if内嵌ifelse总是与它前面最近的if配对例3-12第38页/共47页39例3-12比较两个数的大小关系 main()int a,b;printf(please input A,B:);scanf(“%d,%d,&a,&b);if(a!=b)if(ab)printf(ABn);else printf(ABn);else printf(A=Bn);输出:please input A,B:3,5Ab)?a:b max=ab?a:bab?a:cd?c:d ab?a:(cd?c:d)例3-13第40页/共47页41例3-13输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。main()char ch;scanf(“%c”,&ch);ch=(ch=A&ch=Z)?(ch+32):ch;printf(“%cn”,ch);输出:Ff第41页/共47页42switch语句的改进 switch(表达式)case常量表达式1:语句1;break;case常量表达式2:语句2;break;case常量表达式n:语句n;break;default :语句n+1;1)在case后的各常量表达式的值不能相同,否则会出现错误。2)在case后,允许有多个语句,可以不用括起来。3)各case和default子句的先后顺序可以变动,而不会影响程序执行结果。4)default子句可以省略不用。第42页/共47页43第43页/共47页44第44页/共47页45第45页/共47页46第46页/共47页C语言程序设计47感谢您的观看!第47页/共47页