? 1、要求熟练掌握流程控制语句、表达式语句和复合语句的运用;
2、认识函数调用语句;
3、要求熟悉格式输入与输出相关语句的运用方法,
熟练运用字符数据输入与输出的语句;
4、学会顺序结构程序的综合运用。
第三章 C语言基本语句和顺序结构程序设计
3.1 C语言基本 语句 简介
C语句,以,;” 作分隔符,编译后产生机器指令 。
– C语句分类
表达式语句:表达式加分号构成。
空语句,;
程序控制语句 (9种)
函数调用语句
if( )~else~
switch
for( )~
while( )~
do~while( )
continue
break
goto
return
分支循环辅助控制如 t=t+i;
a=3;
func( );
printf(“Hello!\n”);
复合语句:用 { }括起来的一组语句
一般形式,{ [数据说明部分; ]
执行语句部分;
}
说明:
,}”后不加分号
语法上和单一语句相同
复合语句可嵌套例,
{z=x+y; t=z/100; pritnf(“%f”,t);}
格式,printf(,格式控制串”,输出 参数 表 )
功能:按指定格式向显示器输出数据
1、格式输出函数 printf()
输出 参数表,要输出的数据(可以没有,有 多个时以,,”
分隔)
格式控制串:包含两种信息
– 格式说明,%[修饰符 ]格式字符,用于指定输出格式
– 普通字符或转义序列:原样输出
格式字符
3.2 数据输入与输出
C语言无 I/O语句,I/O操作由函数实现
#include <stdio.h>或者 #include,stdio.h”
d
x,X
o
u
c
s
e,E
f
g
%%
格式字符:
十六进制无符号整数无 符号十进制整数十进制整数指数形式浮点小数单一字符字符串八进制整数小数形式浮点小数
e和 f中较短一种百分号本身
int a=567;printf (,%d”,a);
int a=255;printf(“%x”,a);
int a=65;printf(“%o”,a);
int a=567;printf(“%u”,a);
char a=65;printf(“%c”,a);
printf(“%s”,“ABC”);
float a=567.789;printf(“%e”,a);
float a=567.789;printf(“%f”,a);
float a=567.789;printf(“%g”,a);
printf(“%%”);
567
ff
101
567
A
ABC
5.677890e+02
567.789000
567.789
%
– 说明:格式字符一般用小写
格式字符与输出项个数应相同,按先后顺序一一对应
输出转换,格式字符与输出项类型不一致,自动按指定格式输出例 int a=3,b=4;
printf(“%d %d\n”,a,b);
printf(“a=%d,b=%d\n”,a,b);
输出结果,3 4
a=3,b=4
格式控制符的完整格式格式说明引导符 指定输出域宽及精度指定空位填 0 输出长度的修正指定输出的数据类型指定左对齐输出
% [— 0 m.n l/h] <格式字符 >
格式,printf(,格式控制串”,输出 参数 表 )
功能:按指定格式向显示器输出数据
1、格式输出函数 printf()
附加格式说明符(修饰符)
.n 对实数,指定小数点后位数 (四舍五入 )对字符串,指定实际输出位数修饰符 功 能
m 输出数据域宽,数据长度 <m,左补空格 ;否则按实际输出输出数据在域内左对齐(缺省右对齐 )-
指定在有符号数 的正数前显示正号 (+)+
输出数值时指定左面不使用的空位置自动填
0
0
在八进制和十六进制数前显示前导 0,
0x
#
在 d,o,x,u前,指定输出精度为 long
型在 e,f,g前,指定输出精度为 double

l
例 int a=1234;
float f=123.456;
char ch=?a?;
printf(“%8d,%2d\n”,a,a);
printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);
printf(“%3c\n”,ch);
运行 1234,1234
结果,123.456000,123.456000,123.5,123.46,1.23e+02
a
例 char a[]=“Hello,world!”
printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n”,a,a,a,a,a);
运行结果,Hello,world!
Hello,world!
Hello
Hello
Hel
例 int a=1234;
float f=123.456;
char c[]=“Hello,world!”;
printf(“%8d,%-8d\n”,a,a);
printf(“%10.2f,%-10.1f\n”,f,f);
printf(“%10.5s,%-10.3s\n”,c,c);
运行结果,1234,1234
123.46,123.5
Hello,Hel
例 -
例 int a=1234;
float f=123.456;
printf(“%08d\n”,a);
printf(“%010.2f\n”,f);
printf(“%0+8d\n”,a);
printf(“0+10.2f\n”,f);
例 0,+
例 int a=123;
printf(“%o,%#o,%X,%#X\n”,a,a,a,a);
例 #
//00001234
//0000123.46
//000+1234
//000+123.56
//173,0173,7B,0X7B
格式输入函数 scanf()
格式,scanf(“格式控制串,,地址表)
功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束返值:正常,返回输入数据 的值
地址表:变量的地址,取地址运算符 &
格式字符,d,o,x,u,c,s,f,e
例 scanf(“%d”,&a);
输入,10?
则 a=10
例 scanf(“%x”,&a);
输入,11?
则 a=17
输入分隔符的指定
– 一般以空格,TAB或回车键作为分隔符
– 其它字符做分隔符:格式串中两个格式符间字符例 scanf(“%d%o%x”,&a,&b,&c);
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
输入 123 123 123?
输出 a=123,b=83,c=291
例 scanf(“%d:%d:%d”,&h,&m,&s);
输入 12:30:45?
则 12?h,30?m,45?s例 scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);输入 a=12,b=24,c=36?
说明:
– 用,%c”格式符时,空格和转义字符作为有效字符输入如 scanf(“%c%c%c”,&c1,&c2,&c3);
若输入 a b c?
则 a?c1,?c2,b?c3
– 输入数据时,遇以下情况认为该数据结束:
遇宽度结束
遇非法输入如 scanf(“%d%c%f”,&a,&b,&c);
若输入 1234a123o.26?
则 1234?a,?ab,123?c
格式,putchar(C)
参数,c为整型或者字符型的常量,变量、表达式功能:把字符 c输出到显示器上
数据输出:字符输出函数
#include <stdio.h>
main()
{ int c;
char a;
c=65; a='B';
putchar(c); putchar('\n'); putchar(a);
}
运行结果,A
B
格式,getchar( )
功能:从键盘 上接受输入的第一个字符,它的返回值为整型。
其一般形式为,getchar()
通常把输入的字符赋给一个字符变量,构成赋值语句。
数据输入,字符输入函数例
#include <stdio.h>
main()
{ int c;
printf("Enter a character:");
c=getchar();
printf("%c--->hex%x\n",c,c);
}
运行结果:
Enter a character:A?
A--->hex41
程序举例
/*ch3_12.c*/
#include <math.h>
#include <stdio.h>
main()
{ float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n",a,b,c,s);
printf("area=%7.2f\n",area);
}
例 输入三角形边长,求面积输入,3,4,6?
输出,a= 3.00,b= 4.00,c= 6.00 s= 6.50
area= 5.33
文件包含预处理命令变量定义输入数据输出数据例 从键盘输入大写字母,用小写字母输出
#include "stdio.h"
main()
{ char c1,c2;
c1=getchar();
printf("%c,%d\n",c1,c1);
c2=c1+32;
printf("%c,%d\n",c2,c2);
}
输入,A?
输出,A,65
a,97
#include <stdio.h>
#include <math.h>
main()
{ float a,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a); q=sqrt(disc)/(2*a);
x1=p+q; x2=p-q;
printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}
输入,a=1,b=3,c=2?
输出,x1=-1.00
x2=-2.00
数值的表示方法 ——原码、反码和补码
原码:最高位为符号位,其余各位为数值本身的绝对值
反码:
– 负数:符号位为 1,其余位对原码取反
补码:
– 正数:原码、反码、补码相同
– 负数:最高位为 1,其余位为原码取反,再对整个数加 1
3
12
6
9
1
2
4
57
8
10
11
9-5=4
9+7=16=(14)12
原码 反码 补码
+7 00000111 00000111 00000111
-7 10000111 11111000 11111001
+0 00000000 00000000 00000000
-0 10000000 11111111 00000000
数的范围
01111111~
11111111
(-127~+127)
01111111~
10000000
(-127~+127)
01111111~
10000000
(-128~+127)
(用一字节表示数)
负数补码转换成十进制数:最高位不动,其余位取反加 1
例 补码,11111001
取反,10000110
加 1,10000111=-7