版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C C 程程 序序 设设 计计陕西师范大学陕西师范大学 数学与信息科学学院数学与信息科学学院鲁鲁 来来 凤凤2一、结构化程序设计一、结构化程序设计二、二、C C 语句概述语句概述 三、赋值语句三、赋值语句四、字符的输入和输出四、字符的输入和输出 五、格式输入与输出五、格式输入与输出六、程序举例六、程序举例3一、结构化程序设计一、结构化程序设计强调程序设计风格和程序结构的规范化强调程序设计风格和程序结构的规范化,提倡清晰的结构提倡清晰的结构.(1)自顶向下)自顶向下(2)逐步细化)逐步细化(3)模块化设计)模块化设计(4)结构化编码)结构化编码4顺序结构选择结构循环结构已经证明,由以上基本结构组
2、成的程序能处理任何复杂的问题。已经证明,由以上基本结构组成的程序能处理任何复杂的问题。有三种基本结构:有三种基本结构:顺顺 序序 结结 构构先执行先执行A操作,再执行操作,再执行B操作,两者是顺序执行的关系。操作,两者是顺序执行的关系。AB例:例:main ( ) int a,b,c,d; a = 8; b = 9; c = + +a; d = + +b; printf(“%d,%d,%d,%d”,a,b,c,d);); 选选 择择 结结 构构其中其中p代表一个条件,当条件成立则执行代表一个条件,当条件成立则执行a,否则执行,否则执行b;且只能执行;且只能执行a、b之一。之一。pab假假真真例
3、:例: if (x y) z = x;else z = y;例:例:if (x 0) i+ +;sum = sum + x ; else j+ +;sub = sub + x;循循 环环 结结 构构如:如:while ( i= 10) i+ +; a = a + c ; PAPA有两种循环结构:当型结构和直到型结构有两种循环结构:当型结构和直到型结构如:如: do i+ +; a = a + c ; while (i = 0) ;else y = x ; while ( x = = 1) ;如:如: ;14(5)复合语句复合语句用用 把一些语句括起来成为复合语句把一些语句括起来成为复合语句如:
4、如: if (x 0) i+ +; sum = sum + x ; else j+ +; sub = sub + x;又如:又如:while (x= = 1) i+ +; a = b + c ; 15三、赋值语句三、赋值语句注意:注意: “=”是赋值运算符,不是是赋值运算符,不是“等号等号”。如:。如: x=x+1; 区分:区分: a=1与与a = = 1赋值语句是由赋值表达式加上一个分号构成的。赋值语句是由赋值表达式加上一个分号构成的。16赋值运算符左端只能是变量,具有赋值运算符左端只能是变量,具有“右结合性右结合性”, 例:判断正误例:判断正误 a=2; x=b; 2=a; b=x; a=
5、b=c=3;17赋值表达式可以被包含在其它表达式中,而赋值语句不行。赋值表达式可以被包含在其它表达式中,而赋值语句不行。 例:判断正误例:判断正误 if (x 0) t = a; if ((a = b) 0) t = a; if ((a = b ;) 0) t = a;18四、字符数据的输入和输出四、字符数据的输入和输出l输入和输出是以计算机主机为主体而言。输入和输出是以计算机主机为主体而言。 输出设备:显示屏,打印机,磁盘等输出设备:显示屏,打印机,磁盘等 输入设备:输入设备: 键盘,磁盘,光盘,扫描仪等键盘,磁盘,光盘,扫描仪等 默认输入设备是默认输入设备是键盘键盘,输出设备是,输出设备是
6、显示器。显示器。1、数据输入输出的概念及在、数据输入输出的概念及在C语言中的实现语言中的实现19l要用要用预编译命令预编译命令将库函数文件包括到用户源文件中。如:将库函数文件包括到用户源文件中。如: #include 只有只有printf和和scanf时例外。时例外。l C 语言不提供输入输出语句语言不提供输入输出语句,输入输出操作是由函数来完成的。输入输出操作是由函数来完成的。 如如printf和和scanf,它们是函数名不是,它们是函数名不是C 语言的关键字。语言的关键字。其作用是向终端输出一个字符其作用是向终端输出一个字符 putchar(c););输出输出c的值,其中的值,其中c 可以
7、是字符型变量、字符型常量或整型变量可以是字符型变量、字符型常量或整型变量2、 putchar函数函数(字符输出函数)字符输出函数)例:例:(4-1.c)#include main ( ) char a ,b ,c ; a =B ; b =O ; c =Y ; putchar(a) ; putchar(b) ; putchar( c);若改为若改为: (4-2.c)putchar(a) ; putchar(n) ; putchar(b); putchar(n) ; putchar(c) ; putchar (n);BOYBOY21也可以输出其它转义字符也可以输出其它转义字符putchar(101
8、) ; 等效等效 putchar(A);和;和putchar(65);putchar(0156);等效);等效 putchar(n);223、 getchar()函数函数(字符输入函数)字符输入函数) 从键盘读入一个字符,从键盘读入一个字符, getchar() 函数的返回值为字符的值。函数的返回值为字符的值。例例 (4-3.c)#include main()char c;c=getchar();putchar(c); 说明:说明:putchar (getchar();不要忘记不要忘记#include 可以用可以用getchar() 暂停程序执行执行;暂停程序执行执行;aa23五、五、 格式输
9、入与输出格式输入与输出(一)(一)printf 函数(格式输出函数)函数(格式输出函数) (二)(二) scanf 函数(格式输入函数)函数(格式输入函数)24(一)(一)printf 函数(格式输出函数函数(格式输出函数) 作用作用:向终端向终端(或系统隐含指定的输出设备或系统隐含指定的输出设备)输出输出 若干个任意类型的数据若干个任意类型的数据。 printf(格式控制,输出列表)(格式控制,输出列表)例:例: printf(“%d%d”,a,b);); 格式控制格式控制 输出列表输出列表例:例:printf(“a=%d b=%d”,a,b) 格式说明格式说明 普通字符普通字符 输出列表输
10、出列表说明说明:格式字符与输出项个数应相同,按先后顺序一一对应格式字符与输出项个数应相同,按先后顺序一一对应输出转换输出转换:格式字符与输出项类型不一致格式字符与输出项类型不一致,自动按指定格式输出自动按指定格式输出25表表1 printf格式字符格式字符 d,ix,Xoucse,Efg%十六进制无符号整数十六进制无符号整数不带符号十进制整数不带符号十进制整数十进制整数十进制整数指数形式浮点小数指数形式浮点小数单一字符单一字符字符串字符串八进制无符号整数八进制无符号整数小数形式浮点小数小数形式浮点小数e和和f中较短一种中较短一种百分号本身百分号本身26.n对实数,指定小数点后位数(四舍五入)修
11、饰符功 能m输出数据域宽,数据长度m,左补空格;否则按实际输出输出数据在域内左对齐(缺省右对齐)-指定在有符号数的正数前显示正号(+)+输出数值时指定左面不使用的空位置自动填00在八进制和十六进制数前显示前导0,0 x#在d,o,x,u前,指定输出精度为long型在e,f,g前,指定输出精度为double型l表表2 附加格式说明符(修饰符)附加格式说明符(修饰符)对字符串,指定实际输出位数27%d 按整型数据的实际长度输出。按整型数据的实际长度输出。 printf(“%d,%d”,a,b););%md m为指定的输出字段的宽度。如果数据的位数小于为指定的输出字段的宽度。如果数据的位数小于m,则
12、左端补,则左端补以空格,若大于,则按实际位数输出。以空格,若大于,则按实际位数输出。 printf(“%4d,%4d”,a,b);若若a= 123; b=12345; 则输出为则输出为 123,12345%ld 输出长整型数输出长整型数 long a=135790; printf(%ld,a); 对长整型数据也可以指定字段宽度对长整型数据也可以指定字段宽度 printf (“%10ld”,a) ; 如:如:a=1234 则:则: 1234 1)d格式符。用来输出十进制整数。格式符。用来输出十进制整数。28%o int a = -1; printf(“%d,%o”,a,a););结果:结果:-
13、1 ,177777 由于是将内存单元中的各位的值由于是将内存单元中的各位的值(0或或1)按八进制形式输出,因此输出按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制数的一部分输出。的数值不带符号,即将符号位也一起作为八进制数的一部分输出。%mo%lo 2) o格式符。用来输出格式符。用来输出8进制整数。进制整数。29%x: 同样不会出现负的十六进制数。同样不会出现负的十六进制数。 int a=-1; printf(“%d,%o,%x”,a,a,a);); 结果:结果:- 1 ,177777,ffff%mx %lx3) x格式符格式符:以十六进制数形式输出整数。以十六进制数形式
14、输出整数。注意注意:在八进制和十六进制中并不能打印出在八进制和十六进制中并不能打印出0或或0 x printf(“%d,0%o,0 x%x”,a,a,a);); 结果:结果:- 1 ,0177777,0 xffff30例: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,65535 b= -2,177776,fffe,655344) u格式符格式符. 用来输出十进制无符号整数用来
15、输出十进制无符号整数%u: 用来输出用来输出unsigned型数据,即无符号数,以十进制形式输出。型数据,即无符号数,以十进制形式输出。31第一种格式应用较多;以上四种格式小结以上四种格式小结 %d,%o,%x, %u以上四种格式可以互换,但是后三种无负数形式;要注意数据的表示范围与输出格式的对应。int -32768+32767 unsigned 065535int、short 占2B内存,long 占4B内存 32注意:整数的范围在注意:整数的范围在0255之间,可以用字符形式输出;之间,可以用字符形式输出; 一个字符数据可以用整数形式输出。一个字符数据可以用整数形式输出。5)c格式符格式
16、符:用来输出一个字符。用来输出一个字符。例: charc=a; printf(%c,c); main ( ) char a =a;int b = 97; printf(“%c,%dn”,a,a); printf(“%c,%d”,b,b);输出字符:输出字符: a结果: a,97 a,97336) s格式符格式符:用来输出一个字符串。用来输出一个字符串。%s,printf(%s,china) 输出输出“china”字符串字符串(不包括双引号不包括双引号)。%ms,输出的字符串占列,如字符串本身长度大于,输出的字符串占列,如字符串本身长度大于m,则突破的限制,则突破的限制,将字符串全部输出。若串长
17、小于将字符串全部输出。若串长小于m,则左补空格。,则左补空格。%-ms,如果串长小于,则在列范围内,字符串向左靠,右补空格。,如果串长小于,则在列范围内,字符串向左靠,右补空格。%mns,输出占列,但只取字符串中左端,输出占列,但只取字符串中左端n个字符。这个字符。这n个字符输出在个字符输出在列的右侧,左补空格。列的右侧,左补空格。%-mns,其中、,其中、n含义同上,含义同上,n个字符输出在列范围的左侧,右补个字符输出在列范围的左侧,右补空格。如果空格。如果n,则自动取,则自动取n值,即保证值,即保证n个字符正常输出。个字符正常输出。34 %f:不指定字段宽度,由系统自动指定。整数部分如数输
18、出,并输:不指定字段宽度,由系统自动指定。整数部分如数输出,并输出出6位小数。位小数。单精度实数有效位数为单精度实数有效位数为7位;双精度实数有效位数为位;双精度实数有效位数为16位。位。7)f格式符。用来输出实数,以小数形式输出。格式符。用来输出实数,以小数形式输出。例:例:main ( ) float x,y; x=111111.111; y=222222.222; printf(“%f”,x+y);结果:结果:333333.326125 注意:只有前注意:只有前7位数字是有效数字。千万不要以为位数字是有效数字。千万不要以为凡是打印出来的数字都是准确的。凡是打印出来的数字都是准确的。35m
19、ain ( )double x,y;x=1111111111111.111111111;y=2222222222222.222222222;printf(“%f”,x+y); 双精度数也可用双精度数也可用%f格式输出,它的有效位数格式输出,它的有效位数一般为一般为16位,给出小数位,给出小数6位。位。结果:3333333333333.333010可以看到最后可以看到最后3位小数位小数(超过超过16位位)是无意义的。是无意义的。36 % m.nf 指定输出的数据占指定输出的数据占m列,其中列,其中n位小数;右对齐。位小数;右对齐。 % -m.nf 同上,左对齐。同上,左对齐。例:例:main (
20、 ) float f=123.456; printf(“%f %12f %12.2f % -12.2f %.2f n”,f,f,f,f);结果结果:123.456001 123.456001 123.46 123.46 123.4637 % e 整数一位整数一位,小数小数6位位,指数指数5位包括位包括e和符号位和符号位.例例: printf(“%e,%e”,123.456,0.006543); 输出输出:1.234560e+002,6.543000e-0038. e格式符。以指数形式输出实数格式符。以指数形式输出实数。 % m.ne和和% -m.ne 其中其中m为输出宽度,为输出宽度,- 为左
21、齐为左齐, n为尾数的小数位数为尾数的小数位数.例例: float f = 123.456; printf(“% e,%10e,%10.2e,% .2e,% -10.2e”,f,f,f,f,f);结果结果:1.234560e+002,1.234560e+002, 1.23e+002, 1.23e+002,1.23e+002 38 如:float f = 123.456; printf(“%f,%e,%g”,f,f,f);输出:123.456000, 1.234560e+002,123.456 9. g格式符:用来输出实数格式符:用来输出实数.自动选用自动选用%f或或%e格式中格式较短的一种格式
22、,不输出无意义的零。格式中格式较短的一种格式,不输出无意义的零。39printf函数小结:函数小结:v X,E,G可以用大写,可以用大写, 但但d不能写成不能写成Dv格式控制字符串中可以包括转义字符格式控制字符串中可以包括转义字符vd、o、x、u、c、s、f、e、g等字符,紧接在等字符,紧接在“%”后面即为格式字符,在后面即为格式字符,在其它位置则为普通字符其它位置则为普通字符 printf(“c=%cf=%fs=%s”,c,f,s);v若想输出若想输出“%”,则用连续两个,则用连续两个“%”表示表示 如:如:printf(“%f % %”,1.0/3);); 输出:输出:0.333333%v
23、不同系统的格式输出,可能会有些小差别不同系统的格式输出,可能会有些小差别40d,ix,Xoucse,Efg%十六进制无符号整数十六进制无符号整数不带符号十进制整数不带符号十进制整数十进制整数十进制整数指数形式浮点小数指数形式浮点小数单一字符单一字符字符串字符串八进制无符号整数八进制无符号整数小数形式浮点小数小数形式浮点小数e和和f中较短一种中较短一种百分号本身百分号本身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;pri
24、ntf(“%c”,a);printf(“%s”,“ABC”);float a=567.789;printf(“%e”,a);float a=567.789;printf(“%f”,a);float a=567.789;printf(“%g”,a);printf(“%”);567ff101567AABC5.677890e+002567.789000567.789%练习练习41(二)(二) scanf 函数(格式输入函数)函数(格式输入函数)格式格式: : scanfscanf(“(“格式控制串格式控制串”,地址表),地址表)功能:按指定格式从键盘读入数据,存入地址表指定的功能:按指定格式从键盘读
25、入数据,存入地址表指定的 存储单元中存储单元中, ,并按回车键结束并按回车键结束返值:正常,返回输入数据个数返值:正常,返回输入数据个数地址表地址表:变量的地址,常用取地址运算符:变量的地址,常用取地址运算符格式字符格式字符:d,i,o,x,u,c,s,f,e例 scanf(“%d”,&a); 输入:10 则 a=10例 scanf(“%x”,&a); 输入:11 则 a=1742附加格式说明符(修饰符)附加格式说明符(修饰符)l修饰符修饰符功功 能能hm*用于用于d,o,xd,o,x前,指定输入为前,指定输入为shortshort型整数型整数用于用于d,o,xd,o,x前,指
26、定输入为前,指定输入为longlong型整数型整数用于用于e,fe,f前,指定输入为前,指定输入为doubledouble型实数型实数指定输入数据宽度,遇空格或不可转换字符则结束指定输入数据宽度,遇空格或不可转换字符则结束抑制符,指定输入项读入后不赋给变量抑制符,指定输入项读入后不赋给变量43例例 scanf(“%4d%2d%2d”,&yy,&mm,&dd); 输入输入 19991015 则则1999yy, 10 mm, 15 dd例例 scanf(“%3d%*4d%f”,&k,&f); 输入输入 12345678765.43 则则123k, 8765.
27、43f例例 scanf(“%2d %*3d %2d”,&a,&b); 输入输入 12 345 67 则则12a, 67b例例 scanf(“%3c%2c”,&c1,&c2); 输入输入 abcde 则则ac1, d c244输入分隔符的指定输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符例 scanf(“%d%o%x”,&a,&b,&c); printf(“a=%d,b=%d,c=%dn”,a,b,c); 输入 123 123 123 输出 a=123,b=83,c=291例 scanf(“%
28、d:%d:%d”,&h,&m,&s); 输入 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,&b,&c); 输入 a=12,b=24,c=36 451.格式控制后面是变量地址格式控制后面是变量地址,而不是变量名而不是变量名如:如:scanf(“%d,%d”,a,b); 是不对的是不对的2.格式控制字符串中除了格式说明符以外的其它字符格式控制字符串中除了格式说明符以外的其它字符,在输入时要原样输入
29、在输入时要原样输入,如如:scanf(“%d : %d : %d”, &a , &b ,&c);scanf(“a=%d , b=%d , c=%d”, &a , &b ,&c);3.在用在用“%c”格式输入字符时格式输入字符时,空格字符和空格字符和“转义字符转义字符”都作为有效字符都作为有效字符,如如:scanf(“%c%c%c”, &a , &b ,&c);输入输入:abc4.输入数据时输入数据时,遇空格、回车、跳格、宽度结束、非法输入遇空格、回车、跳格、宽度结束、非法输入,该数据认为结束该数据认为结束scanf(“%d
30、%c%f”,&a,&b,&c);1234a1230.26应用应用scanf函数应注意函数应注意:46/*/#include #include main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn,a,b,c,s); printf(area=%7.2fn,area);例例1 输入三角形边长,求面积输入三角形边长,求面积
31、输入:3,4,6 输出:a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33)()()()(21csbsassareacbas文件包含预处理命令变量定义输入数据输出数据六、程序举例六、程序举例47#include stdio.hmain() char c1,c2; c1=getchar(); printf(%c,%dn,c1,c1); c2=c1+32; printf(%c,%dn,c2,c2);输入:A 输出:A,65 a,97例例2 从键盘输入大写字母,用小写字母输出从键盘输入大写字母,用小写字母输出例例3:3:求求x2x2方程的根。方程的根。 a a,b b,c c由键盘输入,设由键盘输入,设 。acb42aacbb242aacbb242ab2aacb242一元二次方程式的根为一元二次方程式的根为x1= x2= x1= x2= 可以将上面的分式分为两项:可以将上面的分式分为两项:p= p= , q= x1=p+qq= x1=p+q, x2=p-qx2=p-q49#include stdio.h#include #include #include void main ( ) void main
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个性化家庭教育服务合同典范版B版
- 探索学术之舟我的博士课程与实验经历
- 二零二五年知识产权保护与运营管理咨询合同3篇
- EPC模式2024年施工项目合作合同书版
- 中介合同和居间合同(2024版)
- 2025年高校宿舍物业宿管员招聘合同范本3篇
- 水泥行业电子商务平台建设与运营合同(2025年度)
- 2025年度铝合金门窗行业环保评估与整改合同4篇
- 二零二五版城市绿化工程款支付合同范本3篇
- 2025年租赁带驾驶员车辆租赁合同7篇
- 中央2025年国务院发展研究中心有关直属事业单位招聘19人笔试历年参考题库附带答案详解
- 外呼合作协议
- 小学二年级100以内进退位加减法800道题
- 保险公司2025年工作总结与2025年工作计划
- GB/T 33629-2024风能发电系统雷电防护
- 2024淘宝天猫运动户外羽绒服白皮书-WN8正式版
- 记账实操-砂石企业账务处理分录
- 2024届四川省泸州市江阳区八年级下册数学期末学业质量监测试题含解析
- 全球250个国家中英文名称及缩写
- 深静脉血栓(DVT)课件
- 2023年四川省广元市中考数学试卷
评论
0/150
提交评论