第四章 顺序程序设计
4.1 c语句概述
4.4 字符数据的输入输出
4.5 格式输入输出
4.6 顺序结构程序设计举例
4.1 C语句概述
1,控制语句 ( 9种 ),完成一定的控制功能
if ( ) ~ else ~ 条件语句 ( 双分支选择语句 )
switch ~ case ~ 多分支选择语句
for ( ) ~
while ( ) ~ 循环语句
do ~ while ( )
continue 结束本次循环语句
break 中止语句
goto 转向语句
return 从函数返回语句
2,函数调用语句,由一个函数调用加一个分号构成如,printf(“very good!”);
3,表达式语句,由表达式加分号构成如,x=12 加 ;? x=12 ; ( 赋值表达式语句 )
4,空语句,由一个分号构成,它什么也不做
5,复合语句,用 { } 括起来的语句序列如 { int temp ;
temp = x ;
x = y ;
y = temp ;
}
注意,
1,复合语句是一个整体,相当于一个语句
2,一个复合语句中可以包含其他的复合语句
3,在复合语句的花括号后不要再加分号
4,复合语句中可定义变量,但此变量只在该复合语句内有效
4.4 字符数据的输入和输出一,字符输出函数 ( putchar函数 )
格式,putchar(参数 )
功能,将参数对应的字符输出到显示器上,
参数可以是字符型或整型的常量和 变量例,#include <stdio.h>
void main( )
{ char a=?B?,b,c;
b=?O?;
putchar(a);
putchar(b);
putchar(?Y?);
}
输出,BOY
注意,1、一定包含头文件 stdio.h ;
2,putchar函数只有一个参数。
二,字符输入函数( getchar函数)
格式,getchar( ) ( 注意它是无参函数 )
功能,从键盘输入一个字符例,#include <stdio.h>
void main( )
{ char ch;
ch=getchar( );
getchar( );
putchar(ch);
putchar(?\n?);
putchar(getchar( )) ;
}
假设输入,ABCD↙ 则 A给第一个
getchar( ),B给第二个,C给第三个,D谁都不给。
输出,
A
C
注意,一般连续输入可显示字符,
若中间有空格、回车等字符,
在输出时是不可见的若输入,A BC↙ 若输入,AB↙
输出,
A
B
输出,
A
4.5 格式输入输出一,格式输出函数 printf()
格式,printf ( 格式控制,输出表列 ) ;
如,printf(“a=%d\n”,a) ;
1,格式控制,用,” 括起来的字符串,包括如下两个部分
(1) 普通字符 ( 包括转义字符 ),需要原样输出的字符
(2) 格式说明,由 %和格式字符组成其作用是将输出数据按指定的格式输出格式控制,% - 0 m.n l 格式字符
① 格式字符,指定输出项的数据类型和输出格式
② 长度修正符,l 对长整型和 double型
③ 域宽及精度描述符 m.n ( m控制域宽,n 控制小数位数 )
④ 数 0用以在指定数字前的空位是否用 0填补 (对整型,实型可用 )
⑤ 负号 用以指定输出项是否为左对齐方式
2,输出表列,输出项可以是常量,变量,表达式以及函数例,int x=8,y=-2;
printf(“%d\n”,25);
printf(“x=%d\n”,x);
printf(“x*y=%d\n”,x*y);
printf(“|y|=%d\n”,fabs(y) );
运行结果,25
x=8
x*y=-16
|y|=2
( 1) d格式符:用来输出十进制整数。
%d:按整型数据的实际长度输出。
%md,m为指定的输出字段的宽度。如果数据位数小于 m,则左端补以空格;否则按实际位数输出。
例如,printf(“%4d,%4d”,a,b); 若
a=123,b=12345,则输出结果为,123,12345
%ld:输出长整型数据。
例如,long a=135790;
printf(“%ld,%8ld”,a,a);
则输出结果为,135790,135790
(2) o格式符:以八进制数形式输出整数。
例如,int a=-1;
printf(“%d,%o”,a,a);
整数 -1在内存中占两个字节( 16位),其补码形式为:
1111111111111111
-1的补码形式如下求得:
先求 -1绝对值的补码形式,即 1的补码形式:
0000000000000001
将 1的补码按位求反,得 1111111111111110
最后末位加一,得 1111111111111111
输出结果为,-1,177777
(3) x格式符:以十六进制数形式输出整数。
例如,int a=-1;
printf(“%x,%o,%d”,a,a,a);
整数 -1在内存中占两个字节( 16位),其补码形式为:
1111111111111111
输出结果为,ffff,177777,-1
(4) u格式符:以十进制形式输出无符号整数。
例如:
main()
{unsigned int a=65535; int b=-2;
printf(“a=%d,%o,%x,%u\n”,a,a,a,a);
printf(“b=%d,%o,%x,%u\n”,b,b,b,b);
}
无符号整数 a在内存中的值为,1111111111111111,
带符号整数 b内存中的值为:
1111111111111110
输出结果为:
a=-1,177777,ffff,65535
B=-2,177776,fffe,65534
(5) c格式符:输出一个字符。
例如,main()
{char c=?a?; int i=97;
printf(“%c,%d\n”,c,c);
printf(“%c,%d\n”,i,i)
运行结果,a,97
a,97
(6) s格式符:输出一个字符串。
%s,输出一个字符串
%ms:输出的字符串占 m列,若串长小于 m,则左补空格
%-ms:若串长小于 m列,则字符串向左靠,右补空格
%m.ns:输出占 m列,但只取字符串中左端 n个字符。 n个字符在 m列的右侧,左补空格
%-m.ns,n个字符输出在 m列范围的左侧,右补空格
(7) f格式符:以小数形式,输出一个实数。
%f:系统自动指定宽度,整数部分全部如数输出,并输出
6位小数。单精度实数的有效位数一般为 7位。
%m.nf:指定输出的数据共占 m列,其中有 n位小数。若数值长度小于 m,则左端补空格。
%-m.nf:与 %m.nf基本相同,只是使输出的数值向左端靠,右端补空格。
(8) e格式符:以指数形式,输出一个实数。
%e:系统自动指定给出 6位小数,指数部分占 5位(如
e+002)。数值按规范化指数形式输出(即小数点前必须有而且只有一位非零数字)。
%m.ne,m为输出数据的列数,n为输出数据的小数部分的小数位数,遵循,右对齐,原则。
%- m.ne:与 %m.ne相似,但遵循,左对齐,原则。
(9) g格式符:输出实数,根据数值的大小,自动选择 f
格式或 e格式。
例题:课本 P88 习题 4.4
int a,b,c,;
long u,n;
float x,y,z;
char c1,c2;
定义变量类型:
设计输出语句:
printf(“a=%2d b=%2d c=%2d\n”,a,b,c);
printf(“x=%f,y=%f,z=%f\n”,x,y,z);
printf(“x+y=%5.2f y+z=%5.2f z+x=%5.2f\n”,x+y,y+z,z+x);
printf(“u=%6ld n=%9ld\n”,u,n);
printf(“c1=?%c? or %d(ASCII)\n”,c1,c1);
printf(“c2=?%c? or %d(ASCII)\n”,c2,c2);
二,格式输入函数 scanf()
格式,scanf ( 格式控制,变量地址表列 ) ;
1,地址参数,变量的地址可通过地址运算符,&”得到例 int x ; &x 将给出变量 x 所占内存空间的首地址
2,格式控制
(1) 格式说明 % * m l 格式字符
① m 用以指定输入数据的宽度
② * 是赋值抑制符,表示相应的输入数据 不赋给对应变量
3,注意问题
(1) 格式控制中出现的除格式说明以外的其他字符,
在输入数据时要输入与其相同的字符如 scanf(“a=%d,b=%d”,&a,&b) ; 输入,a=12,b=45 ↙
(3) 输入数据时,遇到以下情况时输入结束
① 遇到空格,或按“回车”键,“跳格”键
② 按指定的宽度结束如 scanf(“%d%3d%2d”,&x,&y,&z) ;
输入,25 1867490↙ x 为 25,y 为 186,z 为 74
③ 遇到非法输入如 scanf(“%d%d”,&x,&y ) ;
输入,25,3↙ x 为 25,y 无正确数据 ( 因遇到逗号而出错 )
(2) 用 %c输入字符时,空格和转义字符都会作为有效字符输入如 scanf(“%c%c”,&ch1,&ch2) ;
输入,A B ↙ 则 ch 1为字符 A,ch2为空格
4.6 顺序结构程序设计举例例,输入三角形 3边长,求其面积公式 area=√s(s-a)(s-b)(s-c)
s=(a+b+c)/2
#include <stdio.h>
void main( )
{ float a,b,c,s,area;
scanf(“%f%f%f”,&a,&b,&c);
s=(a+b+c)/2.0;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area=%f\n”,area);
}
输入 a,b,c 3边长按公式计算 s的值按公式计算 area的值输出 area的值课 后 作 业课本 P88:习题 4.5,4.6,4.7