Upload
alan-frederick
View
219
Download
1
Embed Size (px)
DESCRIPTION
二、数据类型、运算符、表达式 和常用输入输出函数. C 语言的基本数据类型有: • char (字符型) • int (整型) • float (实型或浮点型) • double (双精度实型) 2.1 常量 • 常量:程序运行过程中其值不能被改变的量称。 • 常量 分为:整型常量、实型常量、字符常量、 字符串常量、符号常量. 2.1.1 整型常量. 整型常量即整常数 1 . 整数 • 取值范围:一般占一个机器字,如字长两字节, 则为 -32768 ~ +32767 • 表示形式: - PowerPoint PPT Presentation
Citation preview
二、数据类型、运算符、表达式和常用输入输出函数
C 语言的基本数据类型有: • char (字符型) • int (整型) • float (实型或浮点型) • double (双精度实型)2.1 常量 • 常量:程序运行过程中其值不能被改变的量称。 • 常量分为:整型常量、实型常量、字符常量、 字符串常量、符号常量
2.1.1 整型常量 整型常量即整常数1. 整数 • 取值范围:一般占一个机器字,如字长两字节, 则为 -32768 ~ +32767 • 表示形式: 十进制整数 以非 0 开头的整数 八进制整数 以 0 开头的整数 十六进制整数 以 0x 或 0X 开头的整数 例: -123 、 456 、 0123 、 -0x123
2. 长整数 • 取值范围:占四字节 - 2147483648 ~ +2147483647 • 表示形式:在整数后面加字母 L 或 l 例: 456l 、 -0456l 、 0x456l
2.1.2 实型常量1. 实型常量又称浮点数常量,只使用十进制,有两种表示形式: • 定点数形式 由正负号、整数部分、小数点、小数部分组成 例: 0.0 、 12.34 、 0.123 、 .123 、 -123.0 、 -123. • 指数形式 由正负号、整数部分、小数点、小数部分、 E(e) 后带或不带正负号的整数组成 合法: 1e-5 、 -3.14157E+7 、 -28e-005 、 123.45E0 非法: E8 、 3E-5.6 、 .e2 、 4e 、 e2. 实型常量不分单、双精度 , 都按双精度 double 型处
理
2.1.3 字符常量1. 字符常量是用一对单引号(作为定界符)括起来的 一个字符。 'A', 'a', '5', '?', '+', '!', '$' 。 字符不能是单引号 ' 、双引号 " 、反斜杠 \ 。2. 字符常量具有数值,即其 ASCII 代码值。 C = 'A'; 与 C = 65; 等价。3. 转义字符 一对单引号括起来,里面是 反斜线开头,后跟一个字符,如 '\n' 。或 反斜线开头,后跟一个一到三位八进制数,或 后跟一个一到二位 x 开头的十六 进制数。(表 2.2 )
常用转义字符符号 ASCII
值功能
\ddd 8 进制数表示的 ASCII 字符\xhh 16 进制数表示的 ASCII 字符
\a 7 响铃\t 9 水平制表\n 10 换行\r 13 回车\b 8 退格\' 39 单引号\" 34 双引号\\ 92 反斜线\0 0 空字符
2.1.4 字符串常量
1. 字符串常量一对双引号括起来的字符系列。 例: "hello!", "program", "a", "123.45"
2. 存储形式 字符串的每个字符占一个字节,在其尾部自动 追加一个字符 '\0' 。 h e l l o ! \0 104 101 108 108 111 33 0
2.1.5 符号常量符号常量即用一个特定的符号来代表一个常量 • 定义: #define 符号常量 常量(字符串) 例: #define R 5.179 • 符号常量须“先定义,后使用”,一般用大写
字母 例: #define PRICE 35 #define NUM 10
#define SUM PRICE*NUM main ( ) { printf("total=%d\n", SUM); } 结果: total=350
2.2 变量 • 变量:程序运行过程中其值可以改变的量。 • 变量名和变量值:
变量名 (标识符) a
变量值 98
变量存储单元地址• 变量分为两类 普通变量:存放各种普通的数据 指针变量:存放地址
• 变量须“先定义,后使用”,一般用小写字母• 普通变量定义的一般形式: 数据类型 变量名表; 例: int a; int a, b;
• 定义普通变量时可以对它初始化 例: int a = 3, b = 2;
2.2 变量
2.2.1 整型变量2.2.2 实型变量 2.2.3 字符变量2.2.4 指针变量
2.2.1 整型变量
数据类型所占位数 数 值 范 围
int 16 -32768~32767 (-215~ 215-1)
short [int] 16 -32768~32767 (-215~ 215-1)
long [int] 32-2147483648~2147483647(-231~ 231-1)
unsigned int 16 0 ~ 65535 ( 0 ~ 216-1 )unsigned short 16 0 ~ 65535 ( 0 ~ 216-1 )unsigned long 32 0 ~ 4294967295 ( 0 ~ 232-1)
整型数据的溢出:• 例 1 : main() { int a,b; b=32767; a=b+1; printf("%d\n",a); }
32767 :0111111111111111
-32768 :1000000000000000
• 例 2 : main() { long a; int b=1; a=32767+b; printf("%d\n",a); }
2.2.2 实型变量数据类型 所占位数 数值范围 有效数字
float 32 10-37~ 1038 6~7
double 64 10-307~ 10308 15~16
long double 128 10-4931~ 104932 18~19
例: main() { float x,y; x=111111.111; y=222222.222; printf("%f\n",x+y); } 运行结果为 333333.328125
2.2.3 字符变量 • 说明字符变量使用 char 标识符 • 一个字符变量在内存中占一个字节 • 将一个字符常量赋值给一个字符变量,实际上 是把该字符的 ASCII 代码放到字符变量对应的 内存单元中去 • 字符数据与整型数据的存储形式相类似,可以 相互赋值或混合运算,一个字符数据既可以以 字符形式输出,也可以整数形式输出
例 1 : main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); }例 2 : main() { int c1 ; char c2; c1='a'; c2=98; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); }
运行结果: a b
97 98
2.2.4 指针变量
• 指针变量的内存单元中存放的是一个变量的地址
i j i j
变量 j 的地址赋给指针变量 i 指针变量 i 指向变量j
1000 1000
1000 1000
• 可在定义变量的同时,定义相应类型的指针变量; 指针变量定义的一般形式: 数据类型 * 指针变量名; 例: int *p; /* 定义 p 是指向整型变量的指针变量 */
float *y; /* 定义 y 是指向实型变量的指针变量 */
char *s; /* 定义 s 是指向字符型变量的指针变量*/
• 定义指针变量时可以对它初始化 int i , *p = &i;
2.3 运算符
2.3.1 算术运算符2.3.2 关系运算符和逻辑运算符2.3.3 位运算符2.3.4 赋值运算符2.3.5 其他运算符
2.3.1 算术运算符1. 加、减、乘、除和取余运算符: + 、 - 、 * 、 / 、
%
• 除号 /
- 当两个整型数相除时,结果为整数(商的整数 部分) - 当被除数和除数只要有一个是实型数时,结果 为实数的商。 • 取余号 %
只能对整型数运算。
2. 自增、自减运算符: ++ 、 --
• 用法 - 前置运算: ++ 或 -- 用在变量之前,先将变量的 值增 1 或减 1 ,再将该变量的新值用于表达式中 - 后置运算: ++ 或 -- 用在变量之后,先将变量的 值用于表达式中,再将该变量的值增 1 或减 1
例: i=5+j--; i=5+--j;
• 只能用于变量,不能用于常量和表达式 合法: i++; --j; i=(j++)*5;
非法: 6--; i=(j*5)++;
• 例: main() { int a=5,c;
c = ++ a; /* a 先增 1 ,再运算 */ c = c + a ++; /* a 先运算,再增 1 */ printf ("a = %d \tc = %d\n",a,c); } 结果: a = 7 c = 12
3. 取负运算符: -
4. 算术表达式 是用算术运算符和括号将运算对象(常量、变量 和函数等)连接起来的、符合 C 语法规则的式子。
2.3.2 关系运算符和逻辑运算符1. 关系运算符(比较运算符) 用于比较两个表达式值的大小,有 6 种: > 、 >= 、 < 、 <= 、 = = 、 !=
2. 关系表达式 • 是用关系运算符把两个表达式联系起来的式子 • 关系表达式成立,其值为真,用 1 代表;否则为假, 用 0 代表。 如 int a = 4, b = 8;
则 关系表达式 a > b 的值为 0 , 而 关系表达式 a < b 的值为 1 。
这里的 0 和 1 是逻辑值,它可以作为判断的条件, 也可以和其它的关系表达式做逻辑运算(与、或、 非等),也可以和其它的算术表达式做算术运算 • 运用关系表达式时的注意事项 判断两个实数是否相等时,必须考虑到计算机运 算时可能产生的误差。 例如:关系表达式 (2.0/3.6*3.6)==2.0
对于表达式 (2.0/3.6*3.6) ,计算机运算的结果可 能是 2.000001 或 1.999999 ,因此,可把关系表达
式 写成: fabs(2.0-2.0/3.6*3.6)<1e-5
关系表达式中字符型数据按其 ASCII 码值参加 比较运算 100 < 'a' 值为 0 '3' > 30 值为 1
运算符两边的表达式可以是算术、字符、赋值、 关系、或逻辑表达式。 例:( a+x)>(b+y)
(x=4)<=y++
关系运算符运算时结合方向自左至右。 例: 若 a = 4, b = 3, c = 2 则 x = ( a < b < c ) x 的值为 1 ; y = ( a > b > c ) y 的值为 0 。
3. 逻辑运算符 用于对逻辑量进行运算,有 3 种: && 逻辑与 双目运算符 || 逻辑或 双目运算符 ! 逻辑非 单目运算符4. 逻辑表达式 • 是用逻辑运算符联系起来的表达式。如: a && b; a || b; ! a ;
• 逻辑运算符两边是逻辑值。非 0 为真, 0 为假。
• 逻辑表达式的值也是逻辑值。真为 1 ,假为 0 。
• 运用逻辑表达式的注意事项 判断数值是否为真时,非 0 代表真, 0 代表假 逻辑运算符两侧的操作数不仅可以是整数,也 可以是其他数据类型,只要该类型的数据值最 终能得到 0 或非 0 值 逻辑表达式中,不一定对逻辑运算符两侧的表达 式都求值 (&& 、 ||)
数学上的数值区间不能直接用在 C 语言的判断条 件上 如数学上的 1<x≤10 ,不应写成: 1<x<=10 ; 而应写成: (1<x)&&(x<=10)
例 1 : int x, y, z, w;
x = y = z = -1;
w = (+ + x || + + y) && + + z;
printf ("%d, %d, %d, %d\n", x, y, z, w);
输出为何?
&& 前的操作数值若是假,则后面的表达式无需运算
|| 前的操作数值若是真,则后面的表达式无需运算
例 2 :逻辑表达式 (!E) 的值等价于 _____ 。 A) E == 0 B) E != 1 C) E != 0 D)-E
! E E == 0 E != 1 E != 0 -E
E=0 1 1 1 0 0
E≠0 0 0 不定 1 不定
例 3: main ( )
{ int a,b,c = 241;
a = c/100%9;
b = ( -1)&&( -2);
printf ("%d, %d \n", a, b);
}
输出为何? 2, 1
例 4 : int x = 35;
char z = 'A';
int B;
B = ((x&15)&&(z<'a'));
执行上述程序段后, B =? 1
2.3.3 位运算符 位运算符用于对字节中的位进行运算,参加位运 算的操作数必须是整型常量或变量。 运算符 名 称 运算规则
& 位与 两个相应位全 1 为 1 ,其余为 0
| 位或 两个相应位全 0 为 0 ,其余为 1
^ 位异或 两个相应位相同为 0 ,不相同为 1
<< 左移 把左操作数左移指定位数>> 右移 把左操作数右移指定位数~ 取反 把操作数各位 0 变 1 , 1 变 0
例 1 : 将整数 x 的低字节作为整数 z的低字节 , 将整数 y
的低字节作为整数 z的高字节。
15 0
y x
z
15 0 15 0
x=0x0532, y=0xabcd x y0000010100110010 1010101111001101
& &0000000011111111 0000000011111111
0000000000110010 0000000011001101 | <<8
1100110100000000 z1100110100110010 c d 3 2
main ()
{ unsigned x,y,z;
x = 0x0532; y = 0xabcd;
z = ( x&0x00ff ) | (y&0x00ff)<<8;
printf ( "z = %x \n", z );
}
输出为: z = cd32
例 2 :① 100&200 =? 100 00000000 01100100 200 00000000 11001000 64 00000000 01000000 ② 100|200 =? 100 00000000 01100100 200 00000000 11001000 236 00000000 11101100 ③ 100^200 =? 100 00000000 01100100 200 00000000 11001000 172 00000000 10101100
④ -100>>8 =? 100 00000000 01100100 ~ 11111111 10011011 +1 -100 11111111 10011100 >>8 <<8111111111 11111111 (-1) 10011100 00000000 (-2560
0) ⑤ ~3 =? 3 00000000 00000011 ~3 11111111 11111100 (-4) ~ 00000000 00000011 +1 00000000 00000100
例 3 :设有如下程序: #include <stdio.h>
void main()
{ int x;
printf("%d\t",x=12&7);
printf("%d\t",x=6^9);
printf("%d\t",x=012|5);
printf("%d\t",x= 5|7&3);
}
试写出其输出结果。 4 15 15 7
2.3.4 赋值运算符1. 基本赋值运算符: =
• 由“ =” 连接的式子称为赋值表达式。其一般形式为: 变量 = 表达式 功能是计算表达式的值再赋予左边的变量。 例如: a = 3
b = i+++--j
c=sin(x)+sin(y)
• 赋值运算符具有右结合性。 a=b=c=1 可理解为: a=(b=(c=1))
2. 复合赋值运算符: += 、 -= 、 *= 、 /= 、 %= 、 &= 、 |= 、 ^= 、 >>= 、 <<=
• 复合赋值符是在赋值符“ =” 之前加上其它二目运算
符可构成,执行顺序是:先运算,再赋值。 • 复合赋值表达式的一般形式为: 变量 双目运算符 = 表达式 等价于: 变量 = 变量 双目运算符 表达式 例如: a + = 5 等价于 a = a + 5
x %= 8 等价于 x = x % 8
n &= m n = n & m
x * = y + 7 x = x * ( y + 7 )
x << = n + 1 x = x << ( n + 1)注:赋值号右边是作为一个完整的表达式参加运算
例: int x=6;
执行 x+=x-=x*x; 后, x 的值是 ?
执行 x+=x-=x++; 后, x 的值是 ?
-60
2
【例 2.4】 复合赋值运算符示例#include "stdio.h"main(){ int a=2, b=3, c=4; a*=b/=c-=a; printf("%d,%d,%d\n",a,b,c); a-=b*=c+=3; printf("%d,%d,%d\n",a,b,c); a=b=c=1; c=(a*=2)+(b+=3)+2; printf("%d\n",c);}
运行结果: 2,1,2
-3,5,5
8
2.3.5 其他运算符1. 求字节数(长度)运算符: sizeof
用于计算被运算对象所占字节数 使用格式: sizeof( 数据类型 ) 或 sizeof( 表达式 )
例如: • sizeof(double) 值为 8
• sizeof(char) 值为 1
• float f; int i, a[10];
i=sizeof(f); i 的值将为 4
i=sizeof(a); i 的值将为 20
2. 逗号运算符:, • 又称顺序运算符,用于把若干表达式组合成一个 表达式,称之为逗号表达式或顺序表达式。 如: 3+5,7+9
• 逗号表达式的一般形式: 表达式 1, 表达式 2, 表达式 3, ……, 表达式 n
表示由左到右依次计算各表达式之值,逗号表达 式之值为表达式 n 之值。 如: a=3*5, a*6 之值为 90
3. 条件运算符(三目运算符): ? : • 条件表达式的一般形式: 表达式 1 ? 表达式 2 : 表达式 3
• 条件表达式求值过程:
• 三个表达式的类型可以不同,表达式 1 要能得到逻 辑值,整个表达式值类型取表达式 2 和表达式 3 中 较高的类型
表达式 1
取表达式 2值
取表达式 3值
T F
例 1 :执行下列程序段后,变量 a,b,c 的值和 x,y 的值
分别是什么 ?
int x=10, y=9;
int a, b, c;
a=(--x==y++)?--x:++y;
b=x++;
c=y;
8,8,10 9,10
例 2 :请写出下列程序的运行结果 main()
{ int x=5,y=6;
printf("%d\n",((++x==y++)||(x=8))?--x:--y);
printf("%d,%d",x,y);
}
结果: 5
5,7
例 3 :请写出下列程序的运行结果 main() { int a,b;
int x=1, y=2, z=3; a=x<y?y--<z?z++:y++:x++;
b=x<y?x++:y--<z?z++:y++; printf("%d,%d\n",a,b); printf("%d,%d,%d\n",x,y,z);
}结果: 3,4 1,0,5
4. 取地址运算符 & 和取内容运算符 *
• 取址运算符 & :取出内存单元的地址 例: p = & i; 表示变量 i 的地址赋给指针变量 p ,即指针
p
指向了变量 i
• 取内容运算符 * :取出指针所指向的变量的内容
例: y = *p; 表示指针 p 指向的变量值赋给变量 y *p = x;
表示变量 x 的值赋给指针所指向的变量
例 1 : 指针的概念main ( )
{ int x, *p;
p = &x; x = 20;
printf("x: %d \n ", x );
printf("*p: %d \n", *p);
printf("&x: %x \n", &x);
printf(" p: %x \n ", p );
printf("&p: %x \n", &p );
}
运行结果: x: 20
*p: 20
&x: ffe0
p: ffe0
&p: ffe2
例 2 :分析下列程序的运行结果main ( )
{ int a = 10, b = 8, c, d, *p1, *p2;
p1 = &a; p2 = &b;
c = *p1 + *p2;
d = *p1 - *p2;
printf ("a+b=%d \n", c );
printf ("a-b=%d \n", d );
}
结果: a+b=18 a-b=2
2.4 表达式及其运算2.4.1 表达式与语句
• 用运算符和括号将运算对象(包括常量、变量和 函数等)连接起来的符合 C 语言规则的式子叫表 达式。• 根据使用运算符的不同,表达式可以分为: 算术表达式、关系表达式、逻辑表达式、赋值表 达式、条件表达式、和逗号表达式等• C 语言规定每个语句的最后必须有一个分号。 i + + a = 3 i + +; a = 3;
• 表达式可以出现在语句中,语句不可以出现在表
达式中。 a = ( b = 4 ) + ( c = 6 );
a = ( b = 4;) + ( c = 6 ); 错 !
2.4.2 运算符的优先级和结合性 • 优先级:操作数两边有两个运算符 , 首先参加优 先级高的运算符一侧的运算。 ( 附录Ⅲ , 222页 )
• 结合性:操作数两侧的运算符优先级相同时, C
规定了各种运算符的结合方向,即“自左至右”或
“ 自右至左”。 ( 附录Ⅲ , 222页 )
即:运算符的结合性是规定连续几个相同优先级 的运算符的计算顺序。 结合性为从左到右时,计算就从左到右逐个进行; 结合性为从右到左时,计算就从右到左逐个进行。
例 1 : y = 2 + 3 - 4 * 5 + 6
5 - 20
-15 + 6
-9
例 2 : 表达式 a+b+c 等价于 (a+b)+c (左到右) 表达式 a=b=c 等价于 a=(b=c) (右到左) 表达式 *p++ 等价于 *(p++) (右到左) 表达式 *++p 等价于 *(++p) (右到左) 表达式 ++*p 等价于 ++(*p) (右到左)
2.4.3 数据类型的转换 不同数据类型的常量、变量混合运算时,要先转换成同一类型后进行运算。转换方法有两种:1. 自动转换 • 表达式运算时的转换规则: long double 高 double float unsigned long int long int unsigned int int char, short int 低
例: 10 + 'a' + i * f - d / e int char float float double long int
int float
float double
double
• 赋值号两边的数据类型不同时的转换规则: 赋值号右边的类型转换成左边的类型。当右边的 数据类型比左边长时,右边的数据被截取所需的 长度2. 强制转换 形式: ( 类型名 ) 操作数 其中操作数可以是常量、变量或表达式。 例: ( double ) a
( float ) ( x + y )
( int ) 4.5 / 3
例: main()
{ char c;
int i;
i=11361; /* 0x2c61*/
c=i; /* 0010110001100001*/
printf("%c %d %x", c, c, c);
}
运行结果: a 97 61
2.5 常用的输入和输出函数 • 在C语言中,所有的数据输入/输出都是由库函 数完成的。 • 使用C语言库函数时,要用预编译命令 #include
将有关 " 头文件 "包括到源文件中。 • 使用标准输入输出库函数时要用到 "stdio.h"文件, 因此源文件开头应有以下预编译命令: #include <stdio.h > 或 #include "stdio.h" 对于下面介绍的 printf 和 scanf 函数,考虑到其使用 频繁,系统允许在使用这两个函数时可不加上述 预编译命令
2.5.1 格式输入和输出函数1. 格式输出函数 printf ( )
• 功能:向显示器输出信息 • 使用形式: printf (" 输出格式 ", 输出表列 );
输出格式可由三部分组成: 格式说明、按原样输出的字符、转义字符 输出表列是需要输出的一些数据,可以是表达式 例: int a = 123;
printf ("a=%d\n", a);
有多个输出数据,则: - 输出表列中各输出间用逗号分隔 - 格式说明与输出数据的个数相同且一一对应 如: int i = -5;
float j = 98;
printf ("i = %d, j = %-10.2f \ n", i, j );
输出为: i = -5, j =98.00
例 1 : main ( )
{ int a = 345, b = -1;
printf ("a = %d, %x, %o \n", a, a, a );
printf ("b = %u \n", b );
}
结果为: a = 345, 159, 531
b = 65535
例 2 : main ( ) { float x = 345.678;
printf ("x = %f %e %g\n", x, x, x ); printf ("x = %10.2f %-10.2f %010.2f\n", x, x, x ); printf ("%f %%\n", 1.0/3 ); } 结果为: x = 345.678009 3.45678e+02 345.678 x = 345.68 345.68 0000345.68 0.333333%
例 3 : main ( ) { printf ("%3s,%7.2s,%.4s,%-5.3s\n", "CHINA","CHINA", "CHINA", "CHINA" ); } 结果为:
CHINA, CH,CHIN,CHI 说明: 当指定的输出宽度小于输出值本身宽度时,
则指定的输出宽度不起作用
2. 格式输入函数 scanf( ) • 功能:从键盘接受输入信息 • 使用形式: scanf(" 输入格式 " ,地址表列 ) ; 输入格式可由二部分组成: 格式说明、按原样输入的字符 格式说明和输出函数中的输出格式相似。 地址表列由需输入的变量的地址,或字符串首 地址列表组成。 如: int i;
scanf ("%d",&i); 运行时输入: 14
有多个数据输入,则: - 地址表列中各输入间用逗号分隔 - 格式说明与输入变量的个数相同且一一对应 - 输入数据时,数据之间以一个或多个空格分隔 如: int i, j;
scanf ("%d%d", &i, &j);
运行时输入: 3 4 当双引号中有按原样输入的字符,输入时应按原 样键入。 如: scanf ("a = %d, b = %d",&a, &b);
运行时输入: a = 3, b = 4
用 "%c" 格式输入字符,则空格和转义字符都作为
有效字符输入 如: scanf ("%c%c%c",&c1, &c2, &c3);
运行时应输入: abc 不应输入: a b c ( 'a' 赋给 c1 , ' ' 赋给 c2 , 'b' 赋
给 c3 ) 输入实数时,不能规定精度。 如: Scanf ("%7.2f", &a ); 不允许。
例 1 :执行下列语句后 , 输出结果是什么 ?
main()
{ char x,y,z,w;
x='e';
y=x+2;
z=x-3;
w=x-'a'+'A';
printf("x=%c y=%c z=%c w=%c",x,y,z,w);
}
结果: x=e y=g z=b w=E
例 2 :执行下列语句后 , 输出结果是什么 ? main()
{ int a=10,b=20,c;
c=++a+b--;
printf("a=%d,b=%d,c=%d",a,b,c);
}
结果: a=11,b=19,c=31
2.5.2 字符输入输出函数1. 字符输出函数 putchar ( ) • 常用形式: putchar (c) c 可以是字符型和整型量,包括转义字符。 • 功能:向终端(显示器)输出一个字符。 如: #include "stdio.h" main ( ) { char a; a= 'b'; putchar(65); putchar('\n'); putchar(a); } 结果: A b
2. 字符输入函数 getchar() • 常用形式: getchar () • 功能:从终端 ( 或系统隐含指定的输入设备 ) 输入
一 个字符 例:从键盘输入一个小写字母,转换为大写字母输 出。 main()
{ char c; printf("Enter character:");
c=getchar(); putchar(c-32);}
上机实验 21. 练习 2.7 用程序的形式求出计算结果: 已知整型变量 a 的初值是 5 , b 的初值是 3 ,计算下
列表达式的值。 (filename: CP21.C)
A. !a&&b++;
B. a||b+4&&a*b;
C. a=1,b=2,a>b?++a:++b;
D. ++b,a=10,a+5;
E. a+=b%=a+b;
F. a!=b>2<=a+1;
2. 已知整数 x 、 y 的值分别为 0x0532 、 0xabcd ,编程 将整数 x 的高字节作为整数 z 的高字节,整数 y 的 高字节作为整数 z 的低字节,并输出整数 z 。 (老书 习题 2.9) (filename:CP22.C)
3. 写一程序,提示用户输入一个数字,然后输出此 数字所对应的数值。(如从键盘输入数字 '8' ,则 输出数值为 8 。) (老书习题 2.10) (filename:CP23.C)
4. 练习 2.9 编程 (filename:CP24.C)
从键盘输入公里数,屏幕输出其英里数。已知 1英里= 1.60934公里(用符号常量)。
本章结束
输出格式说明1. 输出格式说明由 % 后跟一个格式字符组成: • % d 以十进制整数的实际长度输出 • % f 以十进制实数形式输出 , 小数部分 6 位 • % c 输出单一字符 • % s 输出字符串 • %% 输出一个百分号 • %x 以十六进制无符号形式输出整数 • %o 以八进制无符号形式输出整数 • %u 以十进制无符号形式输出整数 • %e 以指数形式输出实数 • %g 选用 %f 和 %e 中输出宽度较短的一种格式
2. 输出格式选择项 • + 结果右对齐 • - 结果左对齐 • 0 用于输出数值,不用位置填 0 (缺省填空格 )
• m 指定输出宽度(列数) • .n 对实数,表示输出 n 位小数 对字符串,表示从左端截取的字符个数 • l 用于输出长整型、双精度型 • L 用于输出长双精度型
输入格式说明1. 输入格式说明由 % 后跟一个格式字符组成: • % d 用于输入十进制整数 • %x 用于输入十六进制整数 • %o 用于输入八进制整数 • % c 用于输入单个字符 • % s 用于输入字符串,以非空白字符开始,空 白字符结束 • % f 用于输入实数,可用小数或指数形式
2. 输入格式选择项 • l 用于输入双精度型、长整型 • L 用于输入长双精度型 • m 指定输入数据所占宽度(列数) • * 指定输入项在读入后不赋给相应的变量