c语言程序设计 第四章 输入输出和简单的顺序结构.docx

上传人:b****8 文档编号:9860100 上传时间:2023-02-07 格式:DOCX 页数:20 大小:58.68KB
下载 相关 举报
c语言程序设计 第四章 输入输出和简单的顺序结构.docx_第1页
第1页 / 共20页
c语言程序设计 第四章 输入输出和简单的顺序结构.docx_第2页
第2页 / 共20页
c语言程序设计 第四章 输入输出和简单的顺序结构.docx_第3页
第3页 / 共20页
c语言程序设计 第四章 输入输出和简单的顺序结构.docx_第4页
第4页 / 共20页
c语言程序设计 第四章 输入输出和简单的顺序结构.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

c语言程序设计 第四章 输入输出和简单的顺序结构.docx

《c语言程序设计 第四章 输入输出和简单的顺序结构.docx》由会员分享,可在线阅读,更多相关《c语言程序设计 第四章 输入输出和简单的顺序结构.docx(20页珍藏版)》请在冰豆网上搜索。

c语言程序设计 第四章 输入输出和简单的顺序结构.docx

c语言程序设计第四章输入输出和简单的顺序结构

第四章格式化输入/输出和简单的顺序结构

4.1格式化输入和输出

一、格式化输出

1.printf函数的使用格式

printf("格式字符串",参数1,参数2,…,参数n);

说明:

(1)格式字符串中包含了普通字符和格式说明符。

每个格式说明符以%开始,以一个转换符结束,在%和转换符之间可以使用一个或多个标志。

(2)参数是表达式(包括常量、变量、带运算符的表达式和有返回值的函数的调用)。

(3)每个格式说明符都用相应的参数值替换。

格式说明符结尾的转换符将指示被格式化的数值类型:

例如,f表示浮点数,c表示字符,d表示十进制整数。

2.转换符

表4-1用于printf的转换符(实例均在VC6.0环境下运行)

转换符

类型

举例

%d或%i

有符号十进制整数

inta=-2009,b=-0x123;

printf("a=%i,b=%d,%d\n",a,b,0123);

输出:

a=-2009,b=-291,83

%x或%X

十六进制整数

inta=164,b=-164;

printf("a=%x,b=%X\n",a,b);

输出:

a=A4,b=ffffff5c

%o

八进制整数

inta=164,b=-164;

printf("a=%o,b=%o\n",a,b);

输出:

a=244,b=

%u

无符号十进制整数

inta=164,b=-164;

printf("a=%u,b=%u\n",a,b);

输出:

a=164,b=

unsignedu1=182,u2=-182;

printf("u1=%d,u1=%u\n",u1,u1);

printf("u2=%d,u2=%u\n",u2,u2);

输出:

u1=182,u1=182

u2=-182,u2=

%c

字符

charch='a';

printf("ch=%c,ch=%x\n",ch,ch);

输出:

ch=a,ch=61

%s

字符串

printf("ninetimes%s.","outoften.");

printf("ninetimesoutoften.\n");

输出:

ninetimesoutoften.

ninetimesoutoften.

%f

定点浮点数

floatf=123.1;

doubled=123.1;

printf("f=%f,d=%f\n",f,d);

输出:

f=f=123.,d=123.

说明:

转换符f打印一个浮点数的整数部分和6位小数。

%e或%E

指数浮点数

floatf=123.1;

doubled=123.1;

printf("f=%e,d=%E\n",f,d);

输出:

f=1.e+002,d=1.E+002

说明:

转换符e按规范化指数形式(科学记数法)打印

浮点数,共13位,其中字母“e”占1位,指数部分

占4位(1位是符号位),小数部分占据6位,整数数

字和小数点各占1位。

%g或%G

通用浮点数(e和f中较短的)

%p(相当于%X)

打印变量的地址

inta;

printf("&a=%#p,&a=%#X\n",&a,&a);

输出:

&a=0X0012FF7C,&a=0X12FF7C

%%

打印%

inta=15,b=-2;

printf("%d%%%d=%d\n",a,b,a%b);

输出:

15%-2=1

3.标志

表4-2用于printf的标志

标志

目的

举例

-

使数据左对齐,默认情况下数据右对齐

+

打印正数的符号(不管是否使用+,负数打印时总带符号)

inta=12;

printf("a=%+d,a=%d\n",a,a);

输出:

a=+12,a=12

宽度m

打印的数据(包括整数、字符和字符串)占m个位置,当数据的实际位数不足m,根据对齐情况打印空格;否则按数据的实际位数打印

inta=123,b=1234,c=-123;

printf("a=%6d,b=%3d,c=%-6d.\n",a,b,c);

输出:

a=123,b=1234,c=-123.

0

当打印整数、字符和字符串时,数据的

实际位数小于指定宽度时,在左边的空位上

补0(此时标志0和-冲突);否则按数据的实

际位数打印

inta=-123,b=1234,c=123;

printf("a=%-06d,b=%03d,c=%06d\n",a,b,c);

输出:

a=-123,b=1234,c=

精度.n

(1)当打印整数时,如果整数的位数比n少,就在左边的空位上补0;否则按实际位数打印

(2)当打印浮点数时,如果浮点数的位数比n少,就在右边的空位上补0;否则按实际位数打印

(3)当打印字符串时,如果字符串中字符个数比n少,就按实际字符数输出该串;否则就截断取字符串前n个字符打印

inta=-;

printf("a=%9d,a=%.9d\n",a,a);

输出:

a=-,a=-

doublea=-123.1,b=123.1;

printf("a=%f,a=%.8f,b=%.4f\n",a,a,b);

输出:

a=-123.,a=-123.,b=123.1000

l

打印long数据或double数据,默认情况下用%f也能打印double数据

longa=;

printf("a=%d,a=%ld\n",a,a);

输出:

a=,a=

h

打印短整型数据

shorta=12345;

longb=;

printf("%hd,a=%hd,b=%hd\n",12345,a,b);

输出:

12345,a=-7616,b=-10617

续表4-2

#

(1)#对于转换符x(X)、o添加前缀0x(0X)

或0

(2)#对于转换符f包含小数点

inta=123;

doubled=123.5;

printf("a=%#o,a=%#X\n",a,a);

printf("d=%.0f,d=%#.0f\n",d,d);

输出:

a=0173,a=0X7B

d=124,d=124.

【例4.1】宽度标志和精度标志用于打印整数。

#include

main()

{

inta=-123,b=123;

printf("a=%8d,a=%-8d,a=%3d\n",a,a,a);

printf("a=%8.5d,a=%-8.5d,a=%3.5d\n",a,a,a);

printf("b=%x,b=%X\n",b,b);

printf("b=%#x,b=%#X\n",b,b);

printf("a=%x,a=%X\n",a,a);

printf("b=%-#16.12x,a=%#16.12x\n",b,a);

}

【例4.2】宽度标志和精度标志用于打印字符和字符串。

#include

main()

{

charch='a';

printf("ch=%-5c,ch=%5c\n",ch,ch);

printf("%-7s,%7s\n","CHINA","CHINA");

printf("%-7.3s,%7.2s\n","CHINA","CHINA");

}

【例4.3】使用多种标志格式化输出浮点数。

#include

main()

{

floatf=-1.f;

doubled=-153.;

doubleaf=123.456e12;

printf("f=%f,d=%f\n",f,d);

printf("f=%-11f,d=%6f\n",f,d);

printf("f=%-11.3f,d=%6.9f\n",f,d);

printf("d=%e,d=%E\n",d,d);

printf("d=%18.6e,d=%2.4E\n",d,d);

printf("f=%f,f=%e,f=%g\n",f,f,f);

printf("af=%f,af=%e,af=%g\n",af,af,af);

}

4.printf格式说明符的语法图

 

二、格式化输入

1.scanf函数的使用格式

scanf("格式字符串",&变量名1,&变量名2,&变量名3,…,&变量名n);

说明:

(1)格式字符串的说明同printf,由普通字符和格式说明符组成,普通字符原样输入。

(2)scanf格式字符串后面要列出若干变量的地址,每个变量用于保存用户在对应的格式说明符的位置上输入的数据。

(3)转换符将指示用户在该格式说明符的位置上输入的数据的数值类型:

例如,f表示浮点数,c表示字符,d表示十进制整数。

2.转换符

表4-3用于scanf的转换符(实例均在VC6.0环境下运行)

转换符

类型

举例

%d或%i

输入十进制整数

inta,b;

scanf("%d%d",&a,&b);

printf("a=%d,b=%d\n",a,b);

输入:

-365365

输出:

a=-365,b=365

%x或%X

输入十六进制整数

inta,b;

scanf("%x,%X",&a,&b);

printf("a=%d,a=%x\nb=%d,b=%x\n",a,a,b,b);

输入:

a4,-a4

输出:

a=164,a=a4

b=-164,b=ffffff5c

%o

用户输入八进制整数

inta;

scanf("a=%o",&a);

printf("a=%d,a=%o\n",a,a);

输入:

a=-244

输出:

a=-164,a=

%u

输入十进制无符号整数

unsignedu1,u2;

scanf("u1=%u,*u2=%u",&u1,&u2);

printf("u1=%d,u2=%u\n",u1,u2);

输入:

u1=182,*u2=-182

输出:

u1=182,u2=

%c

输入字符

charch;

scanf("ch:

%c",&ch);

printf("ch=%c\n",ch);

输入:

ch:

A

输出:

ch=A

%s

输入字符串

需要用字符数组来保存输入串

%f

输入定点浮点数

floatf;

doubled;

scanf("%f%lf",&f,&d);

printf("f=%f\nd=%f\n",f,d);

输入:

123.-123.

输出:

f=123.

d=-123.

%e或%E

输入指数浮点数

doubled1,d2;

scanf("%le%le",&d1,&d2);

printf("d1=%f\nd2=%e\n",d1,d2);

输入:

12.34e1123.4

输出:

d1=123.

d2=1.e+002

%g或%G

等价于%f、%e或%E

3.标志

表4-4用于scanf的标志

标志

目的

举例

宽度m

指定输入数据所占位数,遇空格或不可转换字符结束

inta,b;

scanf("%3d%2d",&a,&b);

printf("a=%d,b=%d\n",a,b);

输入:

输出:

a=123,b=45

输入:

12345678

输出:

a=123,b=4

*

表示跳过输入

inta,b;

scanf("%3d%*2d%2d",&a,&b);

printf("a=%d,b=%d\n",a,b);

输入:

输出:

a=123,b=67

输入:

123

输出:

a=123,b=67

l

用于转换符d、u、o、x(X)表示输入long整数;用于e(E)、f表示输入double实数

longli;

scanf("li:

%ld",&li);

printf("li=%d\n",li);

输入:

li:

-1234

输出:

li=-1234

输入:

li:

-1234L

输出:

li=1234

h

用于d、u、o、x(X)表示输入short整数

【例4.4】输入字符数据时要注意的问题。

#include

main()

{

charc1,c2,c3;

scanf("%c%c%c",&c1,&c2,&c3);

printf("c1=%c,c2=%c,c3=%c\n",c1,c2,c3);

}

4.scanf格式说明符的语法图

 

4.2常用库函数简介

一、字符数据输入/输出函数

C语言针对字符数据的输入/输出,向用户提供使用更为方getchar和putchar等函数。

【例4.5】getchar与putchar。

#include

main()

{

charch='\101';

putchar(ch);

putchar(0x61);

putchar('\n');

ch=getchar();

putchar(ch);

}

【例4.6】getche和getch。

#include

main()

{

charch1,ch2;

printf("pleasepresstwokey:

\n");

ch1=getche();

ch2=getch();

printf("you\'vepressed%cand%c\n",ch1,ch2);

}

说明:

(1)getche与getchar函数的作用基本相似,都用于输入字符。

差别在于,getche直接从键盘获取用户输入的字符,不等待用户按回车键,且getche还能将用户输入的字符回显在屏幕上。

(2)getch函数与getche类似,差别在于,getche要回显输入字符,而getch不回显输入字符。

二、常用数学函数简介

1.绝对值函数

【例4.7】abs和fabs函数。

#include

#include

main()

{

doubled=-3.;

floatf=3.1416f;

inti=-3;

doubleresult;

printf("d=%f,|d|=%f\n",d,fabs(d));

printf("f=%f,|f|=%f\n",f,fabs(f));

result=fabs(d+3.0);

printf("%f\n",result);

printf("i=%d,|i|=%d\n",i,abs(i));

printf("|-2010|=%d\n",abs(-2010));

}

说明:

(1)要使用数学库函数,必须用#include指令包含头文件math.h。

(2)abs返回一个整型表达式的结果的绝对值。

(3)fabs返回一个浮点表达式的结果的绝对值。

【课内思考题4.1】假设a、b、c都是double变量,如何用函数fabs表示||a+b|-|c||?

2.平方根函数

【例4.8】sqrt函数。

#include

#include

main()

{

inti=3;

doubled=3.0;

doubleresult=sqrt(d);

printf("%f的平方根是%f\n",d,result);

printf("%d的平方根是%f\n",i,sqrt(i));

}

说明:

无论整数还是浮点数的平方根一律可以用sqrt函数计算。

【课内思考题4.2】假设a、b、c都是double变量,如何用函数sqrt表示

sqrt(b*b-4*a*c)

3.三角函数

【例4.9】符号常量的使用。

#include

#definePI3.1416

main()

{

doubler;

doublelength,area;

scanf("%lf",&r);

length=2*PI*r;

area=PI*r*r;

printf("length=%f,area=%f\n",length,area);

}

说明:

可以将一个程序中多次用到的常量通过#define指令用符号来表示。

【例4.10】sin、cos和tan函数。

#include

#include

#definePI3.

main()

{

doubleangle=30.0;

doublex;

doubleresult;

printf("sin(%.0f)=%f\n",angle,sin(PI/180*angle));

angle=60.0;

printf("cos(%.0f)=%f\n",angle,cos(PI/180*angle));

angle=45.0;

printf("tan(%.0f)=%f\n",angle,tan(PI/180*angle));

}

说明:

使用三角函数求值时,需向这些函数提供弧度值,而非角度。

例如求30度的正弦值,必须将30度转换成弧度,即

4.反三角函数

【例4.11】asin、acos和atan函数。

#include

#include

#definePI3.

main()

{

doublex;

doubleresult;

x=0.5;

result=asin(x);

printf("asin(%.1f)=%f\n",x,result*180/PI);

result=acos(x);

printf("acos(%.1f)=%f\n",x,result*180/PI);

printf("atan(%.1f)=%f\n",1.0,atan(1.0)*180/PI);

}

说明:

反三角函数的计算结果是弧度值,在程序中将弧度结果转换成了角度数。

5.对数函数和自然对数函数

【例4.11】log10和log函数。

#include

#include

#defineE2.

main()

{

doubled=10.0;

printf("log10(%.1f)=%f\n",d,log10(d));

printf("log(e)=%f\n",log(E));

}

说明:

函数log10表示以10为底的对数函数,log表示以e为底的对数函数,即自然对数函数。

5.幂函数

【例4.12】pow函数。

#include

#include

main()

{

doublen=-2.0;

printf("%f\n",pow(2.0,n));

}

说明:

提供给函数pow的第一个参数是底数,第二个参数表示指数,两个参数均为double。

 

4.3简单的顺序程序设计

一、C语言程序的结构

由于C编译器采用一种称为分段编译的技术,所以我们可以将C语言代码分解到多个程序文件中,这些程序文件分为两类,一类是以.h作为扩展名的头文件,还有一类是以.c作为文件扩展名的源程序文件(每个源程序文件也称为一个编译单元)。

 

二、语句分类

1.声明语句

变量声明、类型声明和函数原型声明。

通常将变量定义语句视为变量声明语句的一类。

区别在于定义变量将引起系统对变量分配内存字节,而声明变量只是对定义在别处的变量进行引用性说明。

2.流程控制语句

(1)条件语句

if语句、if-else语句和switch语句。

(2)循环语句

while语句、do-while语句和for语句。

(3)流程转移语句

break、continue、return和goto。

3.表达式语句(包括函数调用语句)

4.空语句

5.复合语句

用{}把上述语句(包括复合语句本身)括起来构成复合语句,也叫语句块。

例如:

{

inttemp=x;

x=y;

y=temp;

}

一个复合语句也可以包括在另一个复合语句中。

复合语句的作用在于把多条语句变成语法上的一条语句!

二、顺序程序设计

【例4.13】编写程序,键盘输入一个三位整数,逆序输出之。

#include

main()

{

intnum;

intbw,sw,gw;

scanf("%d",&num);

gw=num%10;

sw=num/10%10;

bw=num/100;

printf("%d\n",gw*100+sw*10+bw);

}

【例4.14】交换两个变量的值。

#include

main()

{

intx,y;

inttemp;

scanf("x=%d,y=%d",&x,&y);

temp=x;

x=y;

y=temp;

printf("x=%d,y=%d\n",x,y);

}

【例4.15】输入三角形的三边长,求三角形的面积。

为简单起见,设输入的三边长a、b、c能构成三角形。

根据海伦公式求三角形面积。

海伦公式为:

area=

,s=

#include

#include

main()

{

doublea,b,c;

doubles;

doublearea;

scanf("%lf,%lf,%lf",&a,&b,&c);

s=(a+b+c)/2;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("area=%.2f\n",area);

}

【课后作业2】

(1)用C语言的数学函数表示下式:

(2)输入一个华氏温度,要求输出摄氏温度。

公式为

输出要有文字说明,取2位小数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1