c语言程序设计第4章_第1页
c语言程序设计第4章_第2页
c语言程序设计第4章_第3页
c语言程序设计第4章_第4页
c语言程序设计第4章_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2024/11/91程序的三种基本结构顺序结构N-S结构图流程图ABAB选择结构YNABP成立?PTFAB2024/11/92程序的三种基本结构循环结构NYP成立?A当P成立时

A直到型循环

A当P成立时YNAP成立?当型循环N-S结构图流程图2024/11/93本章主要内容:C语句概述赋值语句数据输入输出的概念及在C语言中的实现字符数据的输入输出格式输入输出顺序结构程序设计举例2024/11/944.1C语句概述程序包括数据描述(由声明部分来实现)和数据操作(由语句来实现)。数据描述包括定义数据结构和在需要时对数据赋予初值。数据操作的任务是对已提供的数据进行加工。主要内容:说明性语句表达式语句控制语句空语句复合语句函数调用语句2024/11/951、控制语句控制语句包括以下三类:(1).选择分支控制语句

if()…else…(条件语句) switch(){…} (多分支选择结构)(2).循环控制语句

for()… (循环语句)while()…(循环语句)do…while()(循环语句)(3).其他控制语句

Break(终止执行switch或循环语句)Continue(结束本次循环语句)Goto(转向语句)Return(从函数返回语句)2024/11/962、说明性语句对程序中使用的变量、数组、函数等操作对象进行定义、声明的描述语句只起说明作用,不产生可执行的机器指令代码。

例如:inta,b;

floatfunction(int,int);C程序由函数组成。函数的格式:函数名(参数表){

说明部分;执行部分;}数据类型说明语句可执行语句2024/11/97表达式语句由表达式加一个分号构成。x=3;y=y+5;x=a-b&&c||d;printf("x=%d,y=%d\n",x,y);sort(a,10);赋值语句函数调用语句注意:

1、赋值语句(a=3;)有赋值表达式(a=3)构成。2、分号是语句必不可少的一部分3、单独的一个分号“;”构成一个空语句例如:;(空语句,是最简单的C语句)3、表达式语句2024/11/984、空语句只有一个分号的语句,叫空语句。即它什么也不做。有时用来作流程的转向点(流程从程序其它地方转到此处语句),也可以用来作为循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。2024/11/995、复合语句用一对花括号“{}”括起来的若干条语句

花括号中可以是说明语句、表达式语句、控制语句,也可以是复合语句例如:⑴if(a>b){max=a;min=b;}

⑵for(n=1;n<10;n++)

{p=n+p;if(p>=100)

{

printf(“%d\n”,p);break;

}

}

2024/11/9105、复合语句(续)复合语句中如果有说明性语句,应该写在可执行语句的前面例如:

main(){inta,b;a=b=100;{floatc=10.23;printf("%f\n",c);}printf("%d%d\n",a,b);}要特别注意:花括号的配对花括号的位置C语言学习的难点之一2024/11/9116、函数调用语句函数调用语句由一个函数用加一个分号构成,例如:

printf(“ThisisaCsatatement.”);此语句调用输出函数。注意:C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求。2024/11/9124.2赋值语句赋值语句是由赋值表达式加上一个分号构成。C语言的赋值语句具有其它高级语言的赋值语句的一切特点和功能。但也有和其它高级语言不同的地方,其区别主要为:(1)C语言中的赋值号“=”是一个运算符,在其它大多数语言中赋值号不是运算符。(2)关于赋值表达式与赋值语句的概念,在其它多数高级语言中没有“赋值表达式”这一概念。例如:书71页例题。2024/11/9134.3数据输入输出的概念及在C语言中的实现数据输入输出应注意以下几点:(1)所谓的输入输出是以计算机主机为主体而言的。(2)C语言本身不提供输入输出语句,输入输出是由C函数库中的函数来实现的。(3)在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。2024/11/9144.4字符数据的非格式化输入输出对于字符类型的数据输入/输出,可以通过调用C语言其他的库函数来实现,这些库函数在实现字符型数据的输入/输出时不能够对输入/输出进行格式控制,也就是说,它们的输入/输出是系统规定好了的,没法改变,所以称之为字符数据的非格式化输入/输出。4.4.1putchar函数putchar函数(字符输出函数)的作用是向终端输出一个字符(只能输出字符,而且只能是一个字符)。其一般形式为:Putchar(c)它输出字符变量c的值,c可以是字符型变量或整型变量。例题:书73页。例4.12024/11/915函数调用的一般形式

putchar(ch)功能:在标准输出设备(即显示器屏幕)上输出一个字符。例如:putchar('b');putchar('\n');putchar('\101');putchar(st);2024/11/916说明1putchar是C语言的标准库函数,使用时必须加编译预处理命令:#include"stdio.h"

#include<stdio.h>【例3.1】利用putchar函数输出字符。#include"stdio.h"

main(){charc1,c2;c1='a';c2='b';putchar(c1);putchar(c2);putchar('\n');putchar(c1-32);putchar(c2-32);putchar('\n');}也可改为c1=97;c2=98;

输出结果:abAB例jc3_12024/11/9174.4.2getchar函数getchar函数(字符输入函数)的作用是从终端(或者是系统隐含指定的输入设备)输入一个字符。getchar函数没有参数,其一般形式为getchar()。函数的值就是从输入设备得到的字符。注意:getchar函数只能接受一个字符。getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。例题:书74页例题4.22024/11/918说明:getchar是C语言的标准库函数,使用时必须加编译预处理命令:#include"stdio.h"

#include<stdio.h>getchar函数需要交互输入,接收到输入字符之后才继续执行程序。连续使用getchar函数时,要注意字符的输入形式,例如执行如下程序段:charch1,ch2;ch1=getchar();ch2=getchar();必须连续输入两个字符,中间不能有其他字符2024/11/919【例】getchar函数的应用。

#include"stdio.h"main(){charch;ch=getchar();printf("%c%d\n",ch,ch);printf("%c%d\n",ch-32,ch-32);}程序运行时输入:m

并按回车键后输出结果是:m109M77例jc3_82024/11/9204.5格式输入与输出1、Printf函数称为格式化输出函数,其关键字最末个字母f即为“格式”(Format)之意。Printf函数的功能绝非只是输出变量的值,它还可以输出表达式的值,并且可以同时输出多个表达式和变量的值。Printf函数的一般格式为:Printf(“格式控制”,输出列表)功能:按格式控制所指定的格式,在标准输出设备上输出参数2、…、参数n的值。例如有程序段:inta=123,b=100;printf("%d%d%d\n",a,b,a+b);printf("c=%d+%d=%d\n",a,b,a+b);2024/11/921格式控制用双引号括起的字符串,用于指定输出数据的类型、格式、个数包括:普通字符和格式说明符照原样输出

printf("c=%d+%d=%d\n",a,b,a+b);格式说明符:指定输出3个十进制整型数,分别为变量a、b、a+b的值2024/11/922例如:Printf(“%d,%c\n”,i,c)其中括号包括两部分:(1)格式控制用于指定输出格式,用双撇号括起来。它包含如下所示的两类字符:格式说明。以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。如,%d、%f等。其中,%后面的d和f被称为格式转换字符。普通字符。即需要原样输出的字符。如书68页习题3.6(2)输出表列是需要输出的一些数据,可以是表达式。如:a=3,b=4Printf(“a=%db=%d”,a,b)

格式说明输出表列则输出结果为:a=3b=4。其中,a=和b=是Printf函数中的“格式控制”字符串中的普通字符按原样输出的结果。2024/11/9232、格式字符在输出时,对不同类型的数据要使用不同的格式字符。常用的有以下几种格式字符。(1)d格式符。用来输出十进制整数。有以下几种用法:%d。按十进制整型数据的实际长度输出。%md。m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。如:printf(“%4d,%4d”,a,b),若a=123,b=12345,则输出结果为:123,123452024/11/924%ld。输出长整型数据。例如:Longa=135790;Printf(“%ld”,a);如果用%d输出,就会发生错误,因为整型数据的范围为-32768-32767。对于long型数据应当用%1d格式输出。对长整型数据也可以指定字段宽度,如将上面printf函数中的“%1d”改为“%8d”,则输出为

__1357902024/11/925(2)o格式符。以八进制整数形式输出。由于是将内存单元汇总的各位的值(0或1)按八进制形式输出,因此输出的数值补带符号,即将符号位也一起作为八进制数的一部分输出。例如:Inta=-1;Printf(“%d,%o”,a,a);则输出结果为:-1,177777(3)x格式符。以十六进制数形式输出整数。同样不会出现负的十六进制数。例如:

inta=-1;printf(“%x,%o,%d”,a,a,a)则输出结果为:ffff,177777,-12024/11/926(4)u格式符。用来输出unsigned型数据,即无符号数,以十进制整数形式输出。一个有符号整数型也可以用%u格式输出;反之,一个unsigned型数据也可以用%d格式输出。按相互赋值的规则处理,unsigned型数据也可用%o或%x格式输出。例题:书77页4.3。(5)c格式符。用来输出一个字符。例如:charc=‘a’;printf(“%c”,c);输出字符‘a’。注意:%后面的c是格式符,逗号右边的c是变量名。一个整数,只要它的值在0-255范围内,也可以用“%”使之按字符形式输出,在输出前,系统将该整数作为ASCII码转换成相应的字符;反之,一个字符数据也可以用整数行数输出。书78页4.42024/11/927(6)s格式符,用来输出一个字符串。有几种用法:%s。例如:printf(“%s”,“CHINA”);输出字符串“CHINA”(不包括双引号)。%ms,输出的字符串占m列,如字符串本身长度大于m,则突破m的限制,将字符串全部输出。若字符串长小于m,则左补空格。%-ms,如果串长小于m,则在m列范围内,字符串向左靠,右补空格。%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。%-m.ns,其中m,n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则m自动取n值,即保证n个字符正常输出。书78页例题4.52024/11/928(7)f格式符。用来输出实数(包括单/双精度),以小数形式输出。有以下几种:%f,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出6位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为7位。书79页例题4.6、4.7。%m.nf,指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。%-m.nf与%m.ns基本相同,只是使输出的数值向左端靠,右端补空格。例题4.82024/11/929(8)e格式符。以指数形式输出实数。可用以下形式:%e,不指定输出数据所占的宽度和数字部分的小数位数,有的C编译系统自动指定给出数字部分的小数位数为6位,指数部分占5位(如e+002),其中”e”占1位,指数符号占1位,指数占3位。数值按规范化指数形式输出(即小数点前必须有而且只有一位非零数字)。例如:Printf(“%e”,123.456);则输出为:1.234560e+002所输出的实数共占13列。(不同系统的规定略有不同。)2024/11/930%m.ne和%-m.ne,m、n和”-”字符的含义与前面相同。此处n指拟输出的数据的小数部分(又称尾数)的小数位数。书80页例题(9)g格式符,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时宽度较小的一种),且不输出无意义的零。2024/11/931注意:对使用printf函数还要说明以下几点:(1)除了X,E,F外,其他格式字符必须用小写字母,如%d不能写成%D.(2)可以在printf函数中的“格式控制”字符串内包含转义字符。(3)格式说明以”%”开头,中间可以插入附加格式字符(也称为修饰符)。其他的字符原样输出。如66页习题3.6(4)如果想输出字符”%”,则应该在“格式控制”字符串中用连续两个%表示。如,printf(“%f%%”,1.0/3);输出0.333333%(5)printf函数格式控制中的格式说明符与输出参数的个数和类型必须一一对应。(6)长整型数应该用%ld(或%lo、%lx、%lu)格式输出,否则会出现输出错误。(7)printf函数的参数可以是常量、变量或表达式。在计算各参数值时,TurboC采用从右至左的顺序求值。2024/11/932输出格式说明符整型数据

%d以有符号十进制形式输出整型数%o以无符号八进制形式输出整型数%x以无符号十六进制形式输出整型数%u以无符号十进制形式输出整型数实型数据

%f以小数形式输出实型数%e以指数形式输出实型数%g按数值宽度最小的形式输出实型数字符型数据

%c输出一个字符%s输出字符串其他

%%输出字符%本身在%和格式符之间可以使用附加说明符2024/11/933附加格式说明符l输出长整型数(只可与d、o、x、u结合用)m指定数据输出的宽度(即域宽).n对实型数据,指定输出n位小数;对字符串,指定左端截取n个字符输出+使输出的数值数据无论正负都带符号输出-使数据在输出域内按左对齐方式输出整数位数+小数位数+小数点自动对n位后小数四舍五入

例如:%ld——输出十进制长整型数%m.nf——右对齐,m位域宽,n位小数或n个字符%-m.nf——左对齐2024/11/934例题:整型数据的输出main(){inta=11,b=22;intm=-1;longn=123456789;printf("%d%d\n",a,b);printf("a=%d,b=%d\n",a,b);printf("m:%d,%o,%x,%u\n",m,m,m,m);printf(“n=%d\n”,n);printf("n=%ld\n",n);}程序输出:1122a=11,b=22m:-1,177777,ffff,65535n=-13035(错误)超出范围n=123456789例jc3_a2024/11/935例实型数据的输出main(){floatx=1234.56,y=1.23456789;doublez=1234567.123456789;printf("x=%f,y=%f\n",x,y);printf("z=%f\n",z);printf("z=%e\n",z);printf("z=%g\n",z);printf("z=%18.8f\n",z);printf("x=%10.3f\n",x);printf("x=%-10.3f\n",x);printf("x=%4.3f\n\n",x);}程序输出:x=1234.560059,y=1.234568z=1234567.123457z=1.234567e+006z=1234567z=1234567.12345679x=1234.560x=1234.560x=1234.560(按实际长度输出)例jc3_b2024/11/936例字符型数据的输出main(){intm=97;charch='B';printf("m:%d%c\n",m,m);printf("ch:%d%c\n",ch,ch);printf("%s\n","student");printf("%10s\n","student");printf("%-10s\n","student");printf("%10.3s\n","student");printf("%.3s\n\n","student");}程序输出:m:97ach:66Bstudentstudentstudentstustu例jc3_c2024/11/9374.5.2scanf函数C语言中具有基本数据输入功能的库函数是scanf函数。scanf函数称为格式化输入函数,其关键字最末一个字母f即为“格式”(Format)之意。也就是说,它可以按照某种输入格式通过键盘将数据信息输入到计算机。它的函数原型在头文件stdio.h中。scanf函数调用的一般形式为:scanf(“格式控制字符串”,变量1的地址,变量2的地址,。。。。。,变量n的地址);功能是在第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依次存放在变量1、变量2、。。。、变量n中。例如:inta;scanf(“%d”,&a);就是接受用户通过键盘输入的整数,并将数据存放在int型的变量a中。其中,&符号的功能是取变量的地址。2024/11/938格式控制字符串用双引号括起的字符串,用于指定输入数据的类型、格式、个数以及输入的形式

包括:普通字符和格式说明符照原样输入

scanf("a=%d,b=%d",&a,&b);格式说明符:指定输入2个十进制整型数赋给变量a和b2024/11/939scanf("%d%d%d",&a,&b,&c);

输入3个整型十进制数,以空白符(空格、tab键或回车键)分隔

scanf("%d,%o,%f",&a,&b,&x);

输入3个数,以“,”分隔scanf("a=%d,b=%d",&a,&b);

输入的形式是:a=32,b=28(普通字符要照原样输入)2024/11/940(1)在C语言中,变量一经定义,程序运行时系统就会给变量分配相应大小的内存单元,每个内存单元都有与之相对应的内存地址,即变量的地址,变量名通常被用来表示该变量在其内存单元的值,要获得变量的地址(变量所在内存单元的地址),需要在变量名前面加上&符号。因此,&又被称为取地址运算符(与按位与运算符是同一个符号),它与++等运算符具有相同的优先级。(2)&只能作用于变量,不能作用与表达式,因为表达式不对应具体的内存单元,没有地址,只有值。例如:&(a+1)是错误的。2024/11/941输入格式说明符整型数据

%d输入十进制整型数%u输入无符号的十进制整型数%o输入八进制整型数%x输入十六进制整型数实型数据

%f输入小数形式的单精度实型数%e输入指数形式的单精度实型数字符型数据

%c输入单个字符%s输入一个字符串在%和格式符之间可以使用附加说明符2024/11/942附加格式说明符l与d、o、x、u结合输入长整型数与f结合输入double型数m指定数据输入的宽度(即域宽)*忽略读入的数据(即不将读入数据赋给相应变量)例如:%ld、%lo——输入十进制、八进制长整型数%lf、%le——输入双精度实型数%mf——输入m位数(域宽)%*d——忽略输入的一个整型数对float和double型指整数位数+小数点+小数位数2024/11/943例如:scanf("%d%d%d",&a,&b,&c);

输入3个整型十进制数,以空白符(空格、tab键或回车键)分隔

scanf("%d,%o,%f",&a,&b,&x);

输入3个数,以“,”分隔scanf("a=%d,b=%d",&a,&b);

输入的形式是:a=32,b=28(普通字符要照原样输入)书82页例题4.92024/11/944使用scanf函数应注意:要求在程序运行中输入数据,输入的数据个数和类型必须与格式说明符一一对应。地址参数形式:&变量名(除数组或指针变量)格式控制中有普通字符时,必须照原样输入。格式控制中无普通字符时,输入的数值型数据和字符串用空白符分隔,字符型数据不必分隔。double型数据输入时,必须用%lf或%le格式实型数输入时域宽不能用m.n形式的附加说明为了减少不必要的输入量,除了逗号、分号、空格符以外,格式控制中尽量不要出现普通字符,也不要使用

'\n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论