第3章简单程序设计_第1页
第3章简单程序设计_第2页
第3章简单程序设计_第3页
第3章简单程序设计_第4页
第3章简单程序设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计第3章简单程序设计第3章简单程序设计主要内容3.1基本的输入输出函数3.2编译预处理命令define和include简介3.3程序设计举例 3.1基本的输入输出函数

3.1.1格式化输出函数printf()3.1.2格式化输入函数scanf()3.1.3字符输入输出函数getchar()和putchar()printf()函数是C语言系统提供的格式化输出函数,用于向标准输出设备(通常为显示器)按规定格式输出信息。printf()函数一般使用格式printf("格式化字符串",表达式表);说明:⑴“表达式表”是要输出的一系列表达式,各表达式之间用“,”分隔。⑵“格式化字符串”用于说明要输出表达式的形式:以“%”开始的格式控制参数,它规定对应表达式的输出格式;对普通字符按原样输出,对转义字符,输出的是其转义后的形式。⑶输出表达式的个数必须与格式化字符串所说明的输出参数个数相同,且顺序要与格式串中要求输出的内容一一对应。3.1.1格式化输出函数printf()3.1.1格式化输出函数printf()printf()函数中常用的格式控制符及其功能

格式控制符功能是否常用%d输出一个int型数据是%f输出一个float型数据是%c输出一个char型数据是%s输出一个字符串是%u输出一个十进制无符号整数否%e输出一个指数形式的浮点数否%x或%X输出一个以十六进制表示的无符号整数否%O输出一个以八进制表示的无符号整数否%g自动选择%f或%e格式中输出宽度较短的一种形式否printf()函数的转义字符及其功能字符形式功能是否常用\n换行,将当前位置移到下一行开头是\t水平跳格,跳到下一个Tab位置一般\b退格,将当前位置移到前一列否\r回车,将当前位置移到本行开头否\\反斜杠字符“\”否\'单引号字符'否\"双引号字符"否\ddd8进制数表示的对应ASCII码字符一般\xhh16进制数表示的对应ASCII码字符一般3.1.1格式化输出函数printf()例3-1输出格式控制举例一。/*programe3-1.c*/#include<stdio.h>voidmain(){ inta,b; a=8; b=2000; printf("%d+%d=%d\n",a,b,a+b);}3.1.1格式化输出函数printf()用法提示输出表达式的个数必须与格式控制字符串所说明的输出参数个数相同,且顺序要与格式串中要求输出的内容一一对应printf("%d,%f,%c\n",5,12.6,'A');5,12.600000,Aprintf("%d,%f,%c\n",5,'A',12.6);5,0.000000,3用法提示输出表达式的个数必须与格式控制字符串所说明的输出参数个数相同,且顺序要与格式串中要求输出的内容一一对应printf("%d,%d,%d",3,4,5,6);3,4,5printf("%d,%d,%d",3,4);

3,4,24333163.1.1格式化输出函数printf()在“%”和格式控制符之间插进数字,表示输出项的最大域宽。例如:%3d

表示输出3位整型数,不够3位右对齐。%9.2f表示输出域宽为9的实数,其中小数位为2,整数位为6,小数点占1位,不够9位时按域宽右对齐。%8s

表示输出占8个字符的宽度,不够8个字符时右对齐。例3-2输出格式控制举例二/*programe3-2.c*/#include<stdio.h>voidmain(){floatr=5.7693,s;s=3.1416*r*r;printf("R=%10.3f,S=%10.3f\n",r,s);}R=□□□□□5.769,S=□□□104.568在“%”和格式控制符之间加入一个"-"号,控制输出为左对齐,否则为右对齐。

例3-3输出格式控制举例三。/*programe3-3.c*/#include<stdio.h>voidmain(){ floatr=5.7693,s; s=3.1416*r*r; printf("R=%-10.3f,S=%-10.3f\n",r,s);}R=5.769□□□□□,S=104.568□□□3.1.1格式化输出函数printf()3.1.1格式化输出函数printf()字符型数据既可以使用“%c”格式符输出,也可以使用“%d”格式符输出。当使用“%c”格式符时输出字符本身,当使用“%d”格式符时输出字符对应的ASCII码。例3-4字符型变量输出举例。/*programe3-4.c*/#include<stdio.h>voidmain(){ charch='A'; printf("%c,%d\n",ch,ch);}ASCⅡ字符表例3-5字符变量可以与整数进行算术运算#include<stdio.h>voidmain(){charch1='A',ch2;ch2=ch1+5;printf("%c,%d\n",ch1,ch1);printf("%c,%d\n",ch2,ch2);}A,65F,703.1.2格式化输入函数scanf()格式化输入函数从标准输入设备为变量输入数据。scanf()函数一般使用格式

scanf("格式化字符串",变量地址表);其中:⑴“格式化字符串”用于说明输入数据的类型和数据格式,使用的格式控制符与printf()函数相同。⑵“变量地址表”是接受输入数据的变量的内存地址,它们之间以逗号“,”分隔。当接受数据的变量是简单变量时,变量地址的表示形式如下:

&简单变量名⑶“格式化字符串”中的格式控制参数之间通常用逗号“,”或空格(以“”表示)分隔,也可以不使用任何分隔符号。当使用“,”分隔时,输入数据时各个数据之间也要使用“,”分隔;当使用空格分隔或不使用任何分隔符时,输入的数据之间可以使用空格分隔,也可以使用回车符分隔。

(4)“格式字符串”中控制参数的个数必须与变量地址的个数一致。3.1.2格式化输入函数scanf()例3-6

输入学生两门课的成绩,计算其平均成绩。/*programe3-6.c*/#include<stdio.h>voidmain(){ intscore1,score2,average; printf("Data:"); scanf("%d%d",&score1,&score2); average=(score1+score2)/2; printf("Average:%d\n",average);}输入数据的格式要与此对应变量名前加“&”拓展知识①从输入流中自动获取数值

scanf("%3d%2d",&m,&n);

123456789<CR>②数据虚读

scanf("%3d%*4d%f",&m,&n);

123456789.1234<CR>③自动识别数据类型

inta;charb;floatc;scanf("%d%c%f",&a,&b,&c);234K1234.123<CR>m=123,n=45m=123,n=89.1234a=234,b=K,c=1234.123例3-10-1#include<stdio.h>voidmain(){charc1,c2;scanf("%c",&c1);scanf("%c",&c2);//A<CR>B<CR>printf("%c,%c\n",c1,c2);printf("%d,%d\n",c1,c2);}A,

65,10例3-10-2#include<stdio.h>voidmain(){charc1,c2;scanf("%c",&c1);

fflush(stdin);/*清除文件缓冲区

*/scanf("%c",&c2);/*A<CR>B<CR>*/printf("%c,%c\n",c1,c2);printf("%d,%d\n",c1,c2);}A,B65,66%f&%lfscanf()语句:“%lf”用于double类型,“%f”用于float类型printf()语句:"%f"既可用于double类型,又可用于float类型,意思是输出实数(包括单、双精度),并意指“保留6位小数”;"%lf"只能用于double型,意思是输出双精度。例:求三角形面积#include<stdio.h>#include<math.h>voidmain(){

floata,b,c,s;printf("Pleaseenter3reals:\n");scanf("%f%f%f",&a,&b,&c);s=(a+b+c)*0.5;printf("\nAreaofthetriangleis%lf\n",sqrt(s*(s-a)*(s-b)*(s-c)));}3.1.3字符输入输出函数getchar()和putchar()getchar()函数功能:从键盘输入的字符串中读入一个字符。调用格式:getchar()putchar()函数功能:向标准输出设备输出一个字符。调用格式:

putchar(ch)其中:ch为一个字符变量名或字符常量。例3-11从键盘输入一个字符,然后再显示出来。/*programe3-11-1.c*/#include<stdio.h>voidmain(){ charch; ch=getchar();

putchar(ch);

}3.1.3字符输入输出函数getchar()和putchar()3.2编译预处理命令define和include简介3.2.1define命令3.2.2include命令3.2.1define命令define命令称为编译预处理的宏定义命令。宏分为带参数的宏和不带参数的宏两类,符号常量属于不带参数的宏。不带参数的宏的一般形式:#define宏名宏体其中:⑴“#”是预处理命令开始符,不能缺省。⑵“define”为宏定义命令字,表示宏定义命令。⑶“宏名”是一个标识符,“宏体”可以是一个字符串,也可以是一个数值,也可以是一个表达式等。使用宏定义后,在编译预处理阶段,系统就把程序中的宏名替换为宏体,这一替换过程称为“宏替换”,宏替换是对宏体字符串的原样照搬。3.2.1define命令例3-12使用符号常量的程序。/*programe3-12.c*/#include<stdio.h>#definePI3.14159/*定义符号常量PI*/voidmain(){ floatr,l,s; printf("r="); scanf("%f",&r);

l=2*PI*r;/*使用符号常量PI*/

s=PI*r*r; printf("%f,%f\n",l,s);}带参数的宏一般形式:

#define宏名(参数表)字符串其中:(1)参数表可以是一个参数或是多个参数,多个参数之间要用“,”分隔。(2)字符串部分,要包括参数表中的参数。可以是一个表达式等。(3)同一个宏名不能重复定义。(4)在调用带参数的宏名时,一对圆括号必不可少,圆括号中实参的个数应该与形参个数相同。注意事项:带参数的宏定义中,宏的参数不分配内存单元,也不存在类型定义问题。带参数的宏定义中,宏名和形参表之间不能有空格出现,一旦出现空格,就成了不带参数的宏定义。例3-13计算a4+b4#include<stdio.h>#definem(x)x*x*x*xvoidmain(){inta,b,s;printf("Inputa,b:");scanf("%d%d",&a,&b);s=m(a)+m(b);printf("Result:%d\n",s);}s=a*a*a*a+b*b*b*b;例3-14#include<stdio.h>#definemax(x,y)x>y?x:yvoidmain(){inta,b,c,m;a=36,b=97,c=88;m=max(a,b);m=max(m,c);printf("max=%d\n",m);}max=97#include<stdio.h>#defineMM(a,b)((a)*2+(b))#definePRD(x)printf("%d\n",x);main(){ inti,j,k; i=2;j=6; k=2*MM(i,j)+5; PRD(k);}2*MM(i,j)+52*((a)*2+(b))+52*((i)*2+(j))+52*((2)*2+(6))+5printf("%d",x)printf("%d",k)运行结果:253.2.2include命令C语言系统提供了大量的系统函数,对函数的说明信息分门别类的放在不同的头文件中。如printf()、scanf()、getchar()、putchar()等输入输出函数的说明信息在头文件“stdio.h”中,sin()、sqrt()等数学函数的说明信息在头文件“math.h”中。C语言规定,要使用这些函数必须先行说明。说明的方法,是使用include命令包含相关的头文件。include命令的一般使用形式:#include<文件名>#include"文件名"3.2.2include命令例3-15计算表达式的值。/*programe3-15.c*/#include<stdio.h>#include<math.h>

voidmain(){ floatx,y; printf("Data:"); scanf("%f%f",&x,&y); printf("Result:%f\n",sqrt(x*x+y*y));}3.3程序设计举例3.3.1分段函数求值3.3.2计算三角形面积3.3.3字母转换3.3.4鸡兔同笼问题

3.3.1分段函数求值例3-17计算分段函数值。1.问题分析⑴函数值y=(x>0)?(x+25):(x-25)⑵该问题的输入量为x;输出量为y。2.算法设计本题的任务是根据一个输入量计算表达式的值。关键步骤有3个:⑴输入x;⑵(x>0)?(x+25):(x-25)y;⑶输出y。3.实现程序/*programe3-17.c*/#include<stdio.h>voidmain(){intx,y;printf("X=");scanf("%d",&x);y=(x>0)?(x+25):(x-25);printf("Y=%d\n",y);}3.3.2计算三角形面积例3-18设三角形边长为a、b、c,计算其面积area。1.问题分析⑴面积area的计算公式2.算法设计⑴输入a、b、c;⑵(a+b+c)/2→s;⑶sqrt(s*(s-a)*(s-b)*(s-c))→area;⑷输出area。,⑵该问题的输入量有三个,即a、b、c;输出量是area。3.实现程序/*programe3-18.c*/#include<stdio.h>#include<math.h>voidmain(){floata,b,c,s,area;printf("a,b,c:");

scanf("%f,%f,%f",&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);

printf("Area=%7.2f\n",area);}

3.3.3字母转换例3-19

从键盘输入一个大写英文字母,然后在屏幕上输出它的小写形式。

1.问题分析⑴英文字母以ASCII码存储,同一个字母的大、小写ASCII码值对应关系:小写字母ASCII码值=大写字母ASCII码值+32⑵设输入量为ch,则输出量为ch+32。2.算法设计⑴输入大写字母存储到变量ch中;⑵ch+32→ch;⑶输出ch。3.实现程序/*programe3-19.c*/#include<stdio.h>voidmain(){ charch; printf("Input:");

ch=getchar();

printf("Output:%c\n",ch+32);}3.3.3字母转换例

3-20

从键盘输入一个字符,若其为大写英文字母,则在屏幕上输出它的小写形式;否则,原样输出该字符。

1.问题分析设输入量为ch1,则判断大写字母:

ch1>='A'&&ch1<='Z'设输出量为ch2:

ch2=(ch1>='A'&&ch1<='Z')?ch1+32:ch1

2.算法设计⑴输入字符存储到ch1中;⑵计算字符的输出形式ch2:

ch2=(ch1>='A'&&ch1<='Z')?ch1+32:ch1⑶输出ch2。3.实现程序/*programe3-20.c*/#include<stdio.h>voidmain(){charch1,ch2;printf("Input:");ch1=getchar();ch2=(ch1>='A'&&ch1<='Z')?ch1+32:ch1;printf("Output:%c\n",ch2);}

小写变大写字符原形判断大、小写字母3.

温馨提示

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

评论

0/150

提交评论