c语言第二章Word格式.docx
《c语言第二章Word格式.docx》由会员分享,可在线阅读,更多相关《c语言第二章Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
if((a=b)>
0)t=a;
正确
问题:
c语言中的赋值语句于其他高级语言的赋值语句有什么不同点?
1:
C语言中的赋值号“=”是一个运算符,在其他大多数语言中赋值号不是运算符.
2:
其他大多数高级语言没有“赋值表达式”这一概念.
4.3数据输入输出的概念及在C语言中的实现
(一).所谓输入输出是以计算机主机为主体而言的
输出:
从计算机向外部输出设备(显示器,打印机)输出数据
输入:
从输入设备(键盘,鼠标,扫描仪)向计算机输入数据
(二).C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的
例如:
字符输入函数:
getchar字符输出函数:
putchar
格式输入函数:
scanf格式输出函数:
printf
字符串输入函数:
gets字符串输出函数:
puts
(三).在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中.
例如:
在调用标准输入输出库函数时,文件开头应该有:
#include“stdio.h”或:
#include<
stdio.h>
4.4字符数据的输入输出
(一).字符输出函数
•一般形式:
putchar(c)(c可以是字符型变量,也可以是整型变量)
•函数作用:
向终端输出一个字符
例4.1输出单个字符。
#include<
voidmain()
{chara,b,c;
a='
B'
;
b='
O'
c='
Y'
putchar(a);
putchar(b);
putchar(c);
putchar('
\n'
);
}运行结果:
BOY
(二).字符输入函数
getchar()
从终端(或系统隐含指定的输入设备)输入一个字符。
•函数值:
从输入设备得到的字符。
例4.2输入单个字符。
{charc;
c=getchar();
putchar('
}
运行程序:
从键盘输入字符‘a’按Enter键屏幕上将显示输出的字符‘a’aa
键盘缓冲区
例4.2输入多个字符。
{charch1,ch2;
ch1=getchar();
ch2=getchar();
putchar(ch1);
4.5格式输入与输出
(一).格式输出函数
向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。
•一般格式:
printf(格式控制,输出表列)
%d:
以带符号的十进制形式输出整数
%o:
以八进制无符号形式输出整数
%x:
以十六进制无符号形式输出整数
%u:
以无符号十进制形式输出整数
%c:
以字符形式输出,只输出一个字符
%s:
输出字符串
%f:
以小数形式输出单,双精度数,隐含输出六位小数
%e:
以指数形式输出实数
%g:
选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0
几种常见的格式符的修饰符:
L:
用于长整型整数,可加在格式符d,o,x,u前面
M(代表一个正整数):
数据最小宽度
N(代表一个正整数):
对实数,表示输出n位小数;
对字符串,表示截取的字符个数
—:
输出的数字或字符在域内向左靠
(1)d格式符。
用来输出十进制整数。
几种用法:
2%d:
按十进制整型数据的实际长度输出。
②%md:
m为指定的输出字段的宽度。
如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
例:
printf(″%4d,%4d″,a,b);
若a=123,d=12345,则输出结果为123,12345
3%ld:
输出长整型数据。
4longa=135790;
/*定义a为长整型变量*/
printf(″%ld″,a);
(2)o格式符。
以八进制整数形式输出。
输出的数值不带符号,符号位也一起作为八进制数的一部分输出。
inta=-1;
printf("
%d,%o"
,a,a);
-1在内存单元中的存放形式(以补码形式存放)如下:
111111*********1
输出为:
-1,177777
不会输出带负号的八进制整数。
对长整数(long型)可以用“%lo”格式输出。
还可以指定字段宽度,
printf("
%8o"
,a);
177777。
(数字前有2个空格)
(3)x格式符。
以十六进制数形式输出整数。
同样不会出现负的十六进制数。
inta=-1;
printf(″%x,%o,%d″,a,a,a);
输出结果为:
ffff,177777,-1
可以用“%lx”输出长整型数,也可以指定输出字段的宽度
“%12x”
(4)u格式符,用来输出unsigned型数据.一个有符号整数(int型)也可以用%u格式输出;
一个unsigned型数据也可以用%d格式输出。
unsigned型数据也可用%o或%x格式输出。
(5)c格式符,用来输出一个字符。
如:
char d=′a′;
printf(″%c″,d);
输出字符′a′.
一个整数,只要它的值在0~255范围内,可以用“%c”使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;
一个字符数据也可以用整数形式输出。
例4.3无符号数据的输出。
{unsignedinta=65535;
intb=-2;
a=%d,%o,%x,%u\n"
a,a,a,a);
b=%d,%o,%x,%u\n"
b,b,b,b);
}
运行结果:
a=-1,177777,ffff,65535
b=-2,177776,fffe,65534
例4.4字符数据的输出。
{charc='
a'
inti=97;
%c,%d\n"
c,c);
i,i);
a,97
指定输出字数的宽度,printf(“%3c”,c);
则输出:
a
(6)s格式符输出字符串.
①%s。
printf(″%s″,″CHINA″)
输出字符串“CHINA”(不包括双引号)。
②%ms,输出的字符串占m列,若串长大于m,则全部输出,若串小于m,则左补空格。
③%-ms,若串长小于m,字符串向左靠,右补空格。
④%m.ns,输出占m列,只取字符串中左端n个字符,输出在m列的
右侧,左补空格。
5%-m.ns,n个字符输出在m列的左侧,右补空格,若n〉m,m自
动取n值。
例4.5字符串的输出。
{
printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);
CHINA,CH,CHIN,CHI
(7)f格式符。
用来以小数形式输出实数(包括单双精度)
有以下几种用法:
①%f。
不指定字段宽度,由系统自动指定字段宽度,使整数
部分全部输出,并输出6位小数。
应当注意,在输出的数字中
并非全部数字都是有效数字。
单精度实数的有效位数一般为7位。
②%m.nf。
指定输出的数据共占m列,其中有n位小数。
如果
数值长度小于m,则左端补空格。
③%-m.nf与%m.nf基本相同,只是使输出的数值向左端
靠,右端补空格。
例4.6输出实数时的有效位数。
#include<
voidmain()
{floatx,y;
x=111111.111;
y=222222.222;
printf(″%f″,x+y);
}
333333.328125
例4.7输出双精度数时的有效位数。
{doublex,y;
x=1111111111111.111111111;
y=2222222222222.222222222;
printf(“%f”,x+y);
}
3333333333333.333010
例4.8输出实数时指定小数位数。
{
floatf=123.456;
printf(“%f%10f%10.2f%.2f%-10.2f\n”,f,f,f,f,f);
运行结果:
123.455994123.455994123.46123.46123.46
(8)e格式符,以指数形式输出实数。
可用以下形式:
①%e。
不指定输出数据所占的宽度和数字部分的小数位数.
printf(″%e″,123.456);
输出:
1.234560e+002
6列5列
所输出的实数共占13列宽度。
(注:
不同系统的规定略有不同)
②%m.ne和%-m.ne。
m、n和“-”字符的含义与前相同。
此处n指拟输出的数据的小数部分(又称尾数)的小数位数。
若f=123.456,则:
printf("
%e%10e%10.2e%.2e%-10.2e"
,f,f,f,f,f);
输出如下:
1.234560e+0021.234560e+0021.23e+0021.23e+002
13列13列10列9列
1.23e+002
10列
说明:
未指定n,自动使n=6.
超过给定的10列,乃突破10列的限制,按实际长度输出。
第3个数据共占10列,小数部分占2列。
只指定n=2,未指定m,自动使m等于数据应占的长度。
第5个数据应占10列,数值只有9列,由于是“%-10.2e”,
数值向左靠,右补一个空格。
有的C系统的输出格式与此略有不同)
(9)g格式符,用来输出实数.
它根据数值的大小,自动选f格式或e格式(选择输出时占宽度
较小的一种),且不输出无意义的零。
若f=123.468,则
printf(″%f%e%g″,f,f,f);
123.4680001.234680e+002123.468
10列13列10列
用%f格式输出占10列,用%e格式输出占13列,用%g
格式时,自动从上面两种格式中选择短者(今以%f格式为短)
故占10列,并按%f格式用小数形式输出,最后3个小数位为
无意义的0,不输出,因此输出123.468,然后右补3个空格。
%g格式用得较少。
说明:
•除了X,E,G外,其他各式字符必须用小写。
•可以在printf函数中的“格式控制”字符串中包含转义字符。
•一个格式说明必须以“%”开头,以9个格式字符之一为结束,中间可以插入附加格式字符。
•想输出%,则应该在格式控制字符串中用连续两个%表示
(一).格式输入函数
按照变量在内存的地址将变量值存进去。
scanf(格式控制(同printf函数),地址表列(是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址))
例4.9用scanf函数输入数据。
{inta,b,c;
scanf("
%d%d%d"
&
a,&
b,&
c);
a在内存中的地址&
是地址运算符
%d,%d,%d\n"
a,b,c);
运行情况:
345(输入a,b,c的值)
3,4,5(输出a,b,c的值)
•对unsigned型变量所需要的数据,可以用%u,%d或%o,%x格式输入。
•可以指定输入数据所占的列数,系统自动按它截取所需数据。
•如果在%后有一个“*”附加说明符,表示跳过它指定的列数。
输入数据时不能规定精度。
使用scanf函数时应注意的问题:
(1)scanf函数中的“格式控制”后面应当是变量地址,而不应
是变量名。
(2)如果在“格式控制”字符串中除了格式说明以外还有其他字符,
则在输入数据时在对应位置应输入与这些字符相同的字符。
(3)在用“%c”格式输入字符时,空格字符和“转义字符”都作为
有效字符输入
(4)在输入数据时,遇以下情况时认为该数据结束。
①遇空格,或按“回车”或“跳格”(Tab)键;
②按指定的宽度结束,如“%3d”,只取3列;
开始
输入三边长
计算s
计算面积
结束
③遇非法输入。
例4.10输入三角形的三边
长,求三角形面积。
假设:
三个边长a,b,c能构
成三角形。
已知面积公式:
area=
s=(a+b+c)*0.5
math.h>
(数学函数库因为要用到其中的sqrt函数)
{floata,b,c,s,area;
%f,%f,%f"
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n"
a,b,c,s);
area=%7.2f\n"
area);
3,4,6
a=3.00,b=4.00,c=6.00,s=6.50
area=5.33
例4.11从键盘输入一个大写字母,要求改用小写字母输出。
#include<
stdio.h>
voidmain()
{charcl,c2;
cl=getchar();
printf(″%c,%d\n″,cl,cl);
c2=cl+32;
printf(″%c,%d\n″,c2,c2);
A↙
A,65
a,97
4.6顺序结构程序设计举例
voidmain()
floata,b,c,disc,x1,x2,p,q;
a=%f,b=%f,c=%f"
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
\n\nx1=%5.2f\nx2=%5.2f\n"
x1,x2);
a=1,b=3,c=2↙
x1=-1.00
x2=-2.00