第4章顺序结构程序设计.ppt

上传人:精*** 文档编号:1154033 上传时间:2024-11-20 格式:PPT 页数:44 大小:262KB
下载 相关 举报
第4章顺序结构程序设计.ppt_第1页
第1页 / 共44页
第4章顺序结构程序设计.ppt_第2页
第2页 / 共44页
第4章顺序结构程序设计.ppt_第3页
第3页 / 共44页
第4章顺序结构程序设计.ppt_第4页
第4页 / 共44页
第4章顺序结构程序设计.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、第三章第三章 最简单的最简单的C C程序设计程序设计【教学要求教学要求】1 1C C程序的三种基本结构:掌握程序的三种基本结构:掌握C C程序的顺序程序的顺序结构、选择结构、循环结构。结构、选择结构、循环结构。2 2掌握掌握赋值语句构成与使用要点。赋值语句构成与使用要点。3 3熟练掌握格式输入熟练掌握格式输入/输出函数的使用方法输出函数的使用方法4 4能编写简单的顺序结构程序。能编写简单的顺序结构程序。教学要点教学要点1 1、C C语句概述语句概述 C C程序结构程序结构 C C语句的构成语句的构成2 2、结构化程序的三种基本形式结构化程序的三种基本形式 什么是什么是结构化程序设计结构化程序设

2、计 结构化程序的三种形式结构化程序的三种形式:顺序、选择、循环。:顺序、选择、循环。顺序结构程序的设计:顺序结构程序的设计:赋值语句赋值语句的使用要点。的使用要点。3 3、数据的输入与输出数据的输入与输出 C C语言输入输出的实现:语言输入输出的实现:C C语言没有提供输入输出语句,而是由输入语言没有提供输入输出语句,而是由输入输出函数来实现的。输出函数来实现的。标准库函数的使用。标准库函数的使用。输出函数输出函数putcharputchar()()、printfprintf()()的使用。的使用。输入函数输入函数getchargetchar()()、scanfscanf()()的使用。的使用

3、。C C语句的构成语句的构成1 1、控制语句:用于完成一定的控制功能。、控制语句:用于完成一定的控制功能。例:例:2 2、函数调用语句:函数调用语句:用于完成一次函数调用。用于完成一次函数调用。组成:由一次函数调用组成:由一次函数调用+“;”构成。构成。例:例:printf(“Thisprintf(“This is a C statement!”);is a C statement!”);3 3、表达式语句:用于完成一次表达式操作。表达式语句:用于完成一次表达式操作。组成:由一个表达式组成:由一个表达式+“;”构成。构成。例:例:a=3;i+;a=3;i+;等等4 4、空语句:、空语句:组成:

4、只由一个组成:只由一个“;”构成。构成。5 5、复合语句:完成一些特定的操作功能。、复合语句:完成一些特定的操作功能。组成:将一些语句用组成:将一些语句用 括起来构成括起来构成,在程序中当作一个在程序中当作一个语句看待语句看待。例:例:main()main()z=x+y;t=z/100;printf(“%f”,t);z=x+y;t=z/100;printf(“%f”,t);控制语句控制语句条件语句:条件语句:if else(或?:)或?:)循环语句:循环语句:for()条件循环:条件循环:while()条件循环:条件循环:do while();结束本次循环结束本次循环语句:语句:continu

5、e终止循环或终止循环或switch语句:语句:break多分支选择语句:多分支选择语句:switch()case.;转向语句:转向语句:goto由函数返回语句:由函数返回语句:return 赋值语句赋值语句1 1、构成:由赋值表达式加上一个分号(;)构成。、构成:由赋值表达式加上一个分号(;)构成。如:如:a=12;a=12;2 2、使用要点:使用要点:(1 1)在赋值表达式中,)在赋值表达式中,“=”作为赋值运算符;作为赋值运算符;理解理解 n=n+1 n=n+1 的含义与的含义与“存储覆盖存储覆盖”的原理的原理(2 2)区别赋值表达式与赋值语句是两个不同的概念。)区别赋值表达式与赋值语句是

6、两个不同的概念。如:如:if(a=b)0)t=a;if(a=b)0)t=a;(正确)正确)if(a=b;)0)t=a;if(a=b;)0)t=a;(错误)错误)(3 3)例题:例题:结构化程序设计方法结构化程序设计方法1 1、含义:、含义:它要求程序设计者按照一定的结构形式来设计和编写程序。它要求程序设计者按照一定的结构形式来设计和编写程序。2 2、引入结构化程序设计方法的原因:、引入结构化程序设计方法的原因:使程序易读、易理解、易修改,以提使程序易读、易理解、易修改,以提高程序设计和维护工作的效率。高程序设计和维护工作的效率。3 3、结构化程序的三种基本结构:、结构化程序的三种基本结构:顺序

7、结构、选择结构、循环结构。顺序结构、选择结构、循环结构。程序的三种基本结构程序的三种基本结构顺序结构程序:顺序结构程序:按照书写顺序依次执行语句按照书写顺序依次执行语句选择结构程序:选择结构程序:按照条件判断选择执行语句按照条件判断选择执行语句循环结构程序:循环结构程序:通过条件控制循环执行语句通过条件控制循环执行语句结构化程序的三种形式结构化程序的三种形式1 1、顺序结构程序顺序结构程序2 2、选择结构程序选择结构程序ififelseelse选择结构选择结构多分支选择结构(多分支选择结构(switchswitch)3 3、循环结构程序循环结构程序while()while()循环循环do do

8、 while();while();循环循环for()for()循环循环顺序结构程序顺序结构程序1 1、基本结构、基本结构2 2、执行过程:先执行、执行过程:先执行A A操作,再执行操作,再执行B B操作操作举例:求举例:求s=s=a+b(aa+b(a=3,b=4)=3,b=4)ABAB选择结构程序选择结构程序1 1、基本结构:、基本结构:2 2、执行过程:当条件、执行过程:当条件P P成立时执行成立时执行A A操作,当操作,当条件条件P P不成立时执行不成立时执行B B操作。操作。TFBBAAPPFT循环结构程序:循环结构程序:当型循环当型循环当当P P条件成立时,反复执行条件成立时,反复执行

9、A A操作,直到操作,直到P P为假为假时才跳出循环。时才跳出循环。TFPA当P为真A循环结构程序:循环结构程序:直到型循环直到型循环先执行先执行A A操作,再判断条件操作,再判断条件P P是否成立,若为假,是否成立,若为假,再执行再执行A A,直到条件为真跳出循环。直到条件为真跳出循环。PAFT直到P为假AC语言的输入输出C C函函数数库库中中有有一一批批“标标准准输输入入/输输出出函函数数”,它它是是以以标标准准的的输输入入/输输出出设设备备(一一般般为为终终端端)为为输输入入/输输出出对对象象的的。其其中中有有:putcharputchar(输输出出字字符符),getchargetcha

10、r(输输入入字字符符),printfprintf(格格式式化化输输出出),scanfscanf(格格式式化化输输入入),puts,puts(输输出出字字符符串串),gets,gets(输入字符串)。输入字符串)。标准的输入输出函数:标准的输入输出函数:#include#include stdio.hstdio.hputchar()putchar()函数函数1 1、功能:将、功能:将一个一个字符输出到标准输出设备。字符输出到标准输出设备。2 2、格式:、格式:putcharputchar(c c)3 3、使用要点:使用要点:putcharputchar(c c)中的中的c c可以是字符型或整型数

11、据;可以是字符型或整型数据;c=98;c=98;putchar(cputchar(c)输出字符输出字符b b putchar(aputchar(a)输出字符输出字符a a使用输出函数需要调用使用输出函数需要调用c c的标准的标准I/OI/O库函数,故需用预编译命令:库函数,故需用预编译命令:#include#include 将将stdio.hstdio.h文件包含在用户源程序文件中;文件包含在用户源程序文件中;putchar()putchar()也可以输出一个控制字符或其它转义字符。也可以输出一个控制字符或其它转义字符。如:如:putchar(nputchar(n)输出一个换行符输出一个换行符

12、 putchar(101)putchar(101)输出字符输出字符A A putchar()putchar()输出字符单引号输出字符单引号4 4、例、例exp3_2exp3_2:#include#include main()main()char a,b,c;char a,b,c;a=B;b=o;c=y;a=B;b=o;c=y;putchar(a);putchar(b);putchar(c);putchar(a);putchar(b);putchar(c);输出结果为输出结果为:Boy:Boyprintf函数(格式输出函数)功能:按照用户指定的格式,向系统隐含的输出设备(终端)输出若干个任意类型

13、的数据。一般格式:printf(格式控制字符串,输出表列);printf函数格式格式控制“格式控制”字符串:用双双引引号号括起来的字符串,它指定输出数据项的类型和格式。包括两种信息:格格式式说说明明项项:由“%”和格式字符组成,如%d,%f等。格式说明总是由“%”字符开始,到格式字符终止。它的作用是将输出的数据项转换为指定的格式输出。输出表列中的每个数据项对应一个格式说明项。普通字符普通字符:即需要原样输出的字符。输出列表“输出列表输出列表”:是需要输出的一些数据项,可以:是需要输出的一些数据项,可以是表达式。是表达式。printf(“%d,%d”,a,bprintf(“%d,%d”,a,b)

14、;);printf(“%d,%d”,a+c,b+cprintf(“%d,%d”,a+c,b+c););例如:例如:intint a=123,b=100;a=123,b=100;printf(%dprintf(%d%d%d%dn,a,b,a+bdn,a,b,a+b););printfprintf(c=%d+%d=%(c=%d+%d=%dn,a,b,a+bdn,a,b,a+b););整型整型数据数据%d 以有符号十进制形式输出整型数以有符号十进制形式输出整型数%o 以无符号八进制形式输出整型数以无符号八进制形式输出整型数%x 以无符号十六进制形式输出整型以无符号十六进制形式输出整型数数%u 以无符

15、号十进制形式输出整型数以无符号十进制形式输出整型数实型实型数据数据%f 以小数形式输出实型数以小数形式输出实型数%e 以指数形式输出实型数以指数形式输出实型数%g 按数值宽度最小的形式输出实型按数值宽度最小的形式输出实型数数字符型字符型数据数据%c 输出输出一个字符一个字符%s 输出输出字符串字符串其他其他%输出字符输出字符%本身本身格式字符 1、d格式符。用来输出十进制整数。%d,按照数据的实际长度输出%md,m指定输出字段的宽度(整数)。如果数据的位数小于m,则左端补以空格(右对齐),若大于m,则按照实际位数输出。%-md,m指定输出字段的宽度(整数)。如果数据的位数小于m,则右端补以空格

16、(左对齐),若大于m,则按照实际位数输出。%ld,输出长整型数据,也可以指定宽度%mld。格式字符2、O格式符。以八进制形式输出整数。3、x格式符。以十六进制形式输出整数。4、u格式符。用来输出unsigned无符号型数据,即无符号数,以十进制形式输出。(1 1)printf(“%4d,%4d”,a,b);printf(“%4d,%4d”,a,b);若若a=123,b=12345 a=123,b=12345 则输出为:则输出为:123,12345123,12345 如果数据位数小于如果数据位数小于m m,则左端补空格,若大于则左端补空格,若大于m m,则按实际输出。则按实际输出。(2 2)lo

17、ng a=135790;long a=135790;printf(“%ld”,aprintf(“%ld”,a););长整型数据应采用长整型数据应采用%ld%ld格式输出,若采用格式输出,若采用%d%d格式则出错。格式则出错。(3 3)intint a=-1;a=-1;printf(“%d,%o”,a,aprintf(“%d,%o”,a,a););输出为:输出为:-1-1,177777177777 对于八进制输出不会输出带符号的数据,长整型数据用对于八进制输出不会输出带符号的数据,长整型数据用%lo%lo格式输格式输出,也可以指定宽度。如:出,也可以指定宽度。如:printf(“%lo,%8o”

18、,a,a);printf(“%lo,%8o”,a,a);(4)int a=-1;(4)int a=-1;printf(“%x,%o,%d”,a,a,aprintf(“%x,%o,%d”,a,a,a););输出结果为:输出结果为:ffff,177777,-1ffff,177777,-1 同样,也可以用同样,也可以用%lx%lx输出长整型数据或指出输出宽度,输出长整型数据或指出输出宽度,如:如:printf(“%lx,%12x”,a,a)printf(“%lx,%12x”,a,a)格式字符5 5、c c格式符。用来输出一个字符。一个整数只要格式符。用来输出一个字符。一个整数只要它的值在它的值在0-

19、2550-255范围内,也可以用字符形式输范围内,也可以用字符形式输出。反之,一个字符数据也可以用整数形式输出。反之,一个字符数据也可以用整数形式输出。出。6 6、s s格式符。用来输出一个字符串。格式符。用来输出一个字符串。7 7、f f格式符。用来输出实数(包括单、双精度,格式符。用来输出实数(包括单、双精度,单双精度格式符相同),以小数形式输出。单双精度格式符相同),以小数形式输出。格式字符应用举例例3.3实型数据的输出main()float x=1234.56,y=1.23456789;double z=1234567.123456789;printf(x=%f,y=%f n,x,y)

20、;printf(z=%fn,z);printf(z=%en,z);printf(z=%gn,z);printf(z=%18.8fn,z);printf(x=%10.3fn,x);printf(x=%-10.3fn,x);printf(x=%4.3fnn,x);程序输出:程序输出:程序输出:程序输出:x=1234.560059,y=1.234568z=1234567.123457z=1.23457e+06z=1234570z=1234567.12345679x=1234.560 x=1234.560 x=1234.560例jc3_b例例exp3_6:exp3_6:实型数据实型数据#include

21、#include main()main()float x,y,z;double a,b;float x,y,z;double a,b;x=11111.111,y=22222.222,z=123.456;x=11111.111,y=22222.222,z=123.456;a=1111111111111.111111111;a=1111111111111.111111111;b=2222222222222.222222222 b=2222222222222.222222222 printf(“%fn%fn”,x+y,a+bprintf(“%fn%fn”,x+y,a+b););printf(“%10

22、f,%10.2fn”,z,z);printf(“%10f,%10.2fn”,z,z);printf(“%en”,zprintf(“%en”,z););输出为:输出为:33333.333984 33333.333984 3333333333333.3330103333333333333.333010123.456001,123.46123.456001,123.461.234560e+021.234560e+02例例exp3_4:exp3_4:字符输出字符输出main()main()char c=a;char c=a;intint k=97;k=97;printf(“%c,%dn”,c,cpri

23、ntf(“%c,%dn”,c,c););printf(“%c,%dn”,k,kprintf(“%c,%dn”,k,k););输出为:输出为:a,97a,97a,97a,97例例exp3_5:exp3_5:输出字符串输出字符串printf(“%s”,”chinaprintf(“%s”,”china”);”);输出字符串输出字符串chinachinaprintf(“%7sn”,”china”);printf(“%7sn”,”china”);输出字符串输出字符串chinachinaprintf(“%3sn”,”china”);printf(“%3sn”,”china”);输出字符串输出字符串chin

24、achinaprintf(“%5.3sn”,”china”)printf(“%5.3sn”,”china”);输出字符串输出字符串chichiprintf(“%-printf(“%-5.3sn”,”china”);5.3sn”,”china”);输出为输出为chichi例3.4字符型数据的输出main()main()intint m=97;m=97;char char chch=B;=B;printf(mprintf(m:%d%cn,m,m);:%d%cn,m,m);printf(chprintf(ch:%d%:%d%cn,ch,chcn,ch,ch););printf(%sn,student

25、printf(%sn,student););printf(%10sn,student);printf(%10sn,student);printf(%-10sn,student);printf(%-10sn,student);printf(%10.3sn,student);printf(%10.3sn,student);printf(%.3snn,student);printf(%.3snn,student);程序输出:程序输出:程序输出:程序输出:m:97ach:66Bstudentstudentstudentstustu例jc3_cgetchar()getchar()函数函数1 1、功能:从

26、标准输入设备上读入一个字符。、功能:从标准输入设备上读入一个字符。2 2、格式:、格式:getchar()getchar()3 3、使用要点:使用要点:getchargetchar()()函数本身没有参数,其函数值就是从输入函数本身没有参数,其函数值就是从输入设备得到的一个字符;设备得到的一个字符;由由getchargetchar()()获得的字符可以赋值给一个字符或整型获得的字符可以赋值给一个字符或整型变量,也可以作为表达式的一部分;变量,也可以作为表达式的一部分;如:如:c=c=getchargetchar();();putchar(getcharputchar(getchar();();

27、printf(“%cprintf(“%c”,”,getchargetchar();();使用使用getchargetchar()()函数要调用函数要调用c c的标准的标准I/OI/O库函数,应在库函数,应在程序首部加上:程序首部加上:#include#include 4 4、举例:举例:例例exp3_7:exp3_7:#include#include main()main()char c;char c;c=getchar();c=getchar();putchar(cputchar(c););printf(“%cn%dn”,c,cprintf(“%cn%dn”,c,c););输入输入 a a输

28、出输出 a a9797scanfscanf()()函数函数1 1、功能:、功能:将从终端(键盘)输入的数据传送给对应的变量。将从终端(键盘)输入的数据传送给对应的变量。2 2、格式:、格式:scanfscanf(格式控制,输入项地址表)格式控制,输入项地址表)说明:说明:格式控制的含义同格式控制的含义同printfprintf函数,函数,“%格式控制字符格式控制字符”输入项地址表由若干个地址组成,代表每一个变量在内存的地输入项地址表由若干个地址组成,代表每一个变量在内存的地址。表示为:址。表示为:&变量(或数组与字符串的首地址)变量(或数组与字符串的首地址)每次调用每次调用scanfscanf

29、()()函数后,函数将得到一个整型函数值,此值函数后,函数将得到一个整型函数值,此值等于正常输入数据的个数等于正常输入数据的个数3 3、使用要点:使用要点:4 4、举例:举例:scanfscanf()()函数的使用要点函数的使用要点1 1、格式符的个数必须与输入项的个数相等,数据类型必须从、格式符的个数必须与输入项的个数相等,数据类型必须从左至右一一对应。左至右一一对应。2 2、scanfscanf()()函数中常用的格式符有:函数中常用的格式符有:3 3、用户可以指定输入数据的域宽,系统将自动按此域宽截取、用户可以指定输入数据的域宽,系统将自动按此域宽截取所读入的数据,如:所读入的数据,如:

30、scanf(“%3d%3d”,&a,&b);scanf(“%3d%3d”,&a,&b);输入输入123456123456系统自动将系统自动将123123赋值给赋值给a,a,将将456456赋值给赋值给b.b.4 4、输入实型数据时,用户不能规定小数点后的位数。输入实型数据时,用户不能规定小数点后的位数。scanf(“%7.2f”,&a);scanf(“%7.2f”,&a);是错误的是错误的.5 5、输入实型数据时,可以不带小数点,即按整型数方式输入。、输入实型数据时,可以不带小数点,即按整型数方式输入。scanfscanf()()函数的使用要点函数的使用要点6 6、从终端输入数值数据时,遇下述

31、情况系统将认为该项数据、从终端输入数值数据时,遇下述情况系统将认为该项数据结束:结束:遇到空格、回车符或制表符(遇到空格、回车符或制表符(TABTAB),),故可用它们作为数值数据故可用它们作为数值数据间的分隔符;间的分隔符;遇到宽度结束,如遇到宽度结束,如“%4d%4d”表示只取输入数据的前表示只取输入数据的前4 4列。列。遇到非法输入,如:假设遇到非法输入,如:假设a a为整型变量,为整型变量,chch为字符型变量,对于:为字符型变量,对于:scanf(“%d%c”,&a,&chscanf(“%d%c”,&a,&ch););若输入若输入246a,246a,则系统将认为:则系统将认为:a=2

32、46,ch=aa=246,ch=a7 7、在使用在使用%c%c格式符时,输入的数据之间不需要分隔符标志;格式符时,输入的数据之间不需要分隔符标志;空格、回车符都将作为有效字符读入。空格、回车符都将作为有效字符读入。scanf(“%c%c%c”,&a,&b,&cscanf(“%c%c%c”,&a,&b,&c););输入输入boyboyb b赋值给赋值给a,a,赋值给赋值给b,ob,o赋值给赋值给c c8 8、如果格式控制字符串中除了格式说明之外,还包含其它字、如果格式控制字符串中除了格式说明之外,还包含其它字符,则输入数据时,在与之对应的位置上也必须输入与这符,则输入数据时,在与之对应的位置上也

33、必须输入与这些字符相同的字符。些字符相同的字符。如:如:scanf(“Enterscanf(“Enter a number:%d”,&x);a number:%d”,&x);scanf(“%d%d”&a,&bscanf(“%d%d”&a,&b););输入格式输入格式 122 23122 23 scanf(“%d,%d”,&a,&bscanf(“%d,%d”,&a,&b););输入格式输入格式 122,23122,23 scanf(“ascanf(“a=%d,b=%d”,&a,&b);=%d,b=%d”,&a,&b);输入格式输入格式 a=123,b=23a=123,b=239 9、格式说明格式

34、说明%*%*表示跳过对应的输入数据项不予读入。表示跳过对应的输入数据项不予读入。如如:scanf(“%2d%*2d%2d”,&a,&b);:scanf(“%2d%*2d%2d”,&a,&b);若输入若输入12 345 6712 345 67 则则1212赋给赋给a,67a,67赋给赋给b,b,而而345345没有赋给任何数据没有赋给任何数据.1010、在标准、在标准C C中不使用中不使用%u%u格式符格式符,对对unsignedunsigned型数据以型数据以%d,%x,%o%d,%x,%o格式输入。格式输入。格式说明:格式说明:例例exp3_8:exp3_8:#include#include

35、 mianmian()()intint a,b,c;a,b,c;char x,y,z;char x,y,z;scanf(“%c%c%c”,&x,&y,&zscanf(“%c%c%c”,&x,&y,&z););scanf(“%d%d%d”,&a,&b,&cscanf(“%d%d%d”,&a,&b,&c););printf(“%c%c%c”,x,y,zprintf(“%c%c%c”,x,y,z););printf(“%d%d%d”,a,b,cprintf(“%d%d%d”,a,b,c););顺序程序设计举例1、输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长a,b,c能构成三角形。从数

36、学知识已知求三角形面积的公式为:流程图程序程序#include#include main()main()float a,b,c,s,area;float a,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&cscanf(“%f,%f,%f”,&a,&b,&c););s=1.0/2*(a+b+c);s=1.0/2*(a+b+c);area=area=sqrt(ssqrt(s*(s-a)*(s-b)*(s-c);*(s-a)*(s-b)*(s-c);printf(“aprintf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn”,a,b,c,s);=%7.

37、2f,b=%7.2f,c=%7.2f,s=%7.2fn”,a,b,c,s);printf(“areaprintf(“area=%7.2fn”,area);=%7.2fn”,area);例例exp2:exp2:将键盘输入的大写字母,以小写字母输出。将键盘输入的大写字母,以小写字母输出。#include#include main()main()char c1,c2;char c1,c2;c1=getchar();c1=getchar();printf(“%c,%d”,c1,c1);printf(“%c,%d”,c1,c1);c2=c1+32;c2=c1+32;printf(“%c,%dn”,c2,

38、c2);printf(“%c,%dn”,c2,c2);【例3】数据交换。从键盘输入a、b的值,输出交换以后的值。思路:在计算机中交换变量a和b的值,不能只写下面两个赋值语句a=b;b=a;正确的交换方法:正确的交换方法:c=a;a=b;b=c;程序:main()main()intint a,b,c;a,b,c;printf(ninputprintf(ninput a,b:);a,b:);scanf(%d,%d,&a,&bscanf(%d,%d,&a,&b););printf(nbeforeprintf(nbefore exchange:aexchange:a=%db=%dn,a,b);=%db=%dn,a,b);c=a;a=b;b=c;c=a;a=b;b=c;printf(afterprintf(after exchange:a=%d b=%dn,a,b);exchange:a=%d b=%dn,a,b);运行运行jc3_15程序运行情况如下:程序运行情况如下:input a,b:32,57 before exchange:a=32 b=57 after exchange:a=57 b=32

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 教学课件 > PPT综合课件

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922