第3章 简单C语言程序 (2)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输出结果如下: 123,┗┛┗┛┗┛123,123┗┛┗┛┗┛,123 1234567,┗┛1234567,1234567 123.456700,123.456700,┗┛┗┛┗┛┗┛123.46,123.46┗┛┗┛┗┛┗┛
student,┗┛┗┛┗┛┗┛┗┛stude,stude┗┛┗┛┗┛┗┛┗┛
输出结果 00888(数字前补0) 888 ┗┛888.880 ┗┛┗┛┗┛888.9 ┗┛┗┛┗┛┗┛┗┛889 abcde(截去超过的部分) abcdef(宽度不够,按实际宽度输 出)
【例】 输出形式举例
main( ) { int num1=123; long num2=1234567; float real=123.4567; printf(“%d,%6d,%-6d,%2d\n”,num1,num1,num1,num1); printf(“%ld,%8ld,%4ld\n”,num2,num2,num2); printf(“%f,%10f,%10.2f,%-10.2f\n”,real,real,real,real); printf(“%s,%10.5s,%-10.5s\n”,”student”,”student”,”student”) }
C语言程序设计 第3章 简单C语言程序(二)
·校内自编教材 ·
学习目标
掌握数据输入输出方式 掌握输入输出函数的运用 进一步掌握数据类型 进一步掌握各种运算
复习:运算符和表达式
1.基本的算术运算符:
+ :正号运算符(单目运算符) - :负号运算符(单目运算符) * :乘法运算符 / :除法运算符 % :求余运算符 + :加法运算符 - :减法运算符
3.2.7 运算符和表达式
例3.3 给定一个大写字母,要求用小写字 母输出。
解题思路:
关键是找到大、小写字母间的内在联系 同一个字母,用小写表示的字符的ASCII代码
比用大写表示的字符的ASCII代码大32
复习:运算符和表达式
5. 强制类型转换运算符
强制类型转换运算符的一般形式为 (类型名)(表达式)
printf(“%g\n”,888.88); 888.88(%f格式比采用%e格式输出宽度小)
printf(“%8g\n”,888.88); ┗┛┗┛888.88(输出右对齐,左边填空格)
精度指示符
以“.”开头,用十进制整数指精度。对于 float或double类型的浮点数可以用 “m.n”的形式在指定宽度的同时来指定其 精度。其中,“m”用以指定输出数据所占 总的宽度,“n”称为精度。
(13) 其他
(如函数调用运算符())
练习
int a=-1,b=4,k; k=(a++<=0)&&(!(b--<=0)) 结果k,a,b分别等于?
++和--运算符放在后面是先取值运算后 +/-1,所以a++<+0值为1(真);b-<=0值为0(假),!(非)运算后值为1 ,1&&1(与运算)后值为1,运算后 a+1;b-1因此最终结果:k=1,a=0,b=3
据在运算时一律先转换成双精度型,以提高运算精度(即使 是两个float型数据相加,也先都化成double型,然后再
相加)
(2) 如果int型与float或double型数据进行运算,先 把int型和float型数据转换为double型,然后进 行运算,结果是double型
(3)字符型数据与整型数据进行运算,就是把字符的 ASCII代码与整型数据进行运算
– (double)a (将a转换成double类型) – (int) (x+y) (将x+y的值转换成int型) – (float)(5%3)(将5%3的值转换成float型)
有两种类型转换
– 系统自动进行的类型转换 – 强制类型转换
6.C运算符
(4) 位运算符 (<<按位左移 >>按位右移 )
1.printf函数的一般格式 printf(格式控制,输出表列)
例如: printf(”i=%d,c=%c\n”,i,c);
格式声明
用printf函数输出数据
1.printf函数的一般格式 printf(格式控制,输出表列)
例如: printf(”i=%d,c=%c\n”,i,c);
普通字符 转义字符
复习运算符和表达式
说明
两个整数相除的结果为整数 – 如5/3的结果值为1,舍去小数部分 – 如果除数或被除数中有一个为负值,舍入方向 不固定。例如,-5/3,有的系统中得到的结果 为-1,在有的系统中则得到结果为-2 – VC++采取“向零取整”的方法 如5/3=1,-5/3=-1,取整后向零靠拢
用printf函数输出数据
1.printf函数的一般格式 printf(格式控制,输出表列)
例如: printf(”i=%d,c=%c\n”,i,c);
可以是常量、变量或表达式
转义字符
字符形式 \n \t
\b \r \f \\ \’ \” \ddd \xhh
含义
ASCII代码
换行,将当前位置移到下一行开头 10
语句与表达式的区别
表达式语句是由表达式和分号构成。 例如: a=3 是表达式 a=3;是语句。 只有分号的语句是空语句。
3.1 输入/输出函数
在C程序中用来实现输出和输入的,主要是 printf函数和scanf函数
这两个函数是格式输入输出函数 用这两个函数时,必须指定格式
用printf函数输出数据
输入实数,可以用以小数形式或指数形式输入 与f作用相同,e与f,g可以互相替换
scanf函数的格式说明
(2)抑制字符“*”:表示该输入项读入后不赋予相应 的变量,即跳过该输入值。 例如: scanf(“%d%*d%d”,&x,&y); 输入10┗┛12┗┛15后,把10赋予变量x,12被跳过,
程序运行结果为: c1=x,c2=y c1=120,c2=121
printf格式字符
格式字符
说明
d,i 以带符号的十进制形式输出整数(正数不输出符号)
o 以八进制无符号形式输出整数(不输出前导符0)
x,X 以十六进制无符号形式输出整数(不输出前导符0x),用 x则输出十六进制数的a~f时以小写形式输出;用X时,则 以大写字母输出
示例程序
输出语句
输出结果
printf(“%d\n”,888);
888(按实际需要宽度输出)
printf(“%6d\n”,888);
┗┛┗┛┗┛888(输出右对齐,左边填空格)
printf(“%f\n”,888.88); 888.880000(按实际需要宽度输出)
printf(“%12f\n”,888.88); ┗┛┗┛888.880000(输出右对齐,左边填空格)
u 以无符号十进制形式输出整数
c 以字符形式输出,只输出一个字符
s 输出字符串
f
以小数形式输出单、双精度数,隐含输出6位小数。
e,E 以指数“e”或“E”形式输出实数。(如1.2e+02或 1.2E+02)
g,G 选用%f或%e格式中输出宽度较短的一种格式,不输出无 意义的0。用G时,若以指数形式输出,则指数以大写表示
% 运算符要求参加运算的运算对象(即操作数)为 整数,结果也是整数。如8%3,结果为2
复习:运算符和表达式
2. 自增、自减运算符: 作用是使变量的值1或减1
– ++i,--i:在使用i之前,先使i的值加(减)1 等价于-(++i) – i++,i--:在使用i之后,使i的值加(减)1 等价于-(i++) J=++I;J=i++; i=3;printf(“%d\n”,++i); i=3;printf(“%d\n”, i++); 前者输出4,后者输出3
15赋予变量y。 ⑶ 宽度指示符:用十进制整数指定输入数据的宽度。
例如: scanf(“5d”,&x);
输入数据“661020”,把前五位数66102赋予变量x,其余 部分被截去。
使用scanf函数注意事项
scanf函数
1. scanf scanf(格式控制,地址表列)
含义同printf函数
scanf函数
1. scanf scanf(格式控制,地址表列)
可以是变量的地址,或字 符串的首地址
【例2-14】 用scanf函数输入数据。 main( ) { int x,y; scanf(“%d%d”,&x,&y); printf(“%d,%d \n”,x,y); }
如果上题改为
int a=-1,b=4,k; k=(a++<=0)||(!(b--<=0)) 结果k,a,b分别等于?
++和--运算符放在后面是先取值运算后 +/-1,所以a++<+0值为1(真);b-<=0值为0(假),!(非)运算后值为1 ,1&&1(与运算)后值为1,运算后 a+1;b-1因此最终结果:k=1,a=0,b=4
求求反反
6.C运算符
(6) 条件运算符 (?:) <表达式1>?<表达式2>:<表达式3>
6.C运算符
(7) 逗号运算符
(,)
(8) 指针运算符
(*和&)
(9) 求字节数运算符
(sizeof)
(10) 强制类型转换运算符 ( (类型) )
(11) 成员运算符
(.->)
(12) 下标运算符
([ ])
Байду номын сангаас
横向跳格(即跳到下一个输出区, 9 一个输出区占8列)
退格,将当前位置移到前一列
8
Enter,将当前位置移到本行开头 13
换页,将当前位置多到下页开头
12
反斜杠字符“\”
92
单引号字符
39
双引号字符
34
1到3位8进制数所代表的字符
1到2位16进制数所代表的字符
printf函数的调用
【例2-12】 示例程序 main( ) { char c1='x',c2='y'; printf("c1=%c,c2=%c\n",c1,c2); printf("c1=%d,c2=%d\n",c1,c2); }
printf标志字符
字符
意义
输出结果左对齐,右边填空格;
- 缺省则输出结果右对齐,左边填
空格或零
+ 输出值为正时冠以“+”号,为
负时冠以“-”号
# 八进制输出时加前缀o;十六进
制输出时加前缀0x
例如,以下语句输出六位十 进制整数:
printf(“%6d\n”,111); printf(“%-6d\n”,111); 输出结果为: ┗┛┗┛┗┛111 (输出右对 齐,左边填空格) 111┗┛┗┛┗┛ (输出左对 齐,右边填空格)
输出八进制或十六进制时, 可以使用以下形式: printf(“%#o,%#x\n”,10,1 6); 输出结果为: 012,0x10
宽度指示符
宽度指标符:用来设置输出数据项的最小 宽度,通常用十进制整数来表示输出的位 数。如果输出数据项所需实际位数多于指 定宽度,则按实际位数输出,如果实际位 数少于指定的宽度则用空格填补。
运行时按以下方式输入a、b、c的值:
1┗┛2<Enter> (输入x,y的值)
1,2
(输出x,y的值)
scanf函数的格式说明
(1)格式字符:表示输入数据的类型,其字符和含义如表:
格式字符 d,i u o x,X c s
f e,E,g,G
说明 输入有符号的十进制整数 输入无符号的十进制整数 输入无符号的八进制整数 输入无符号的十六进制整数(大小写作用相同) 输入单个字符 输入字符串,将字符串送到一个字符数组中,在输 入时以非空白字符开始,以第一个空白字符结束。 字符串以串结束标志’\0’作为其最后一个字符
复习:运算符和表达式
3. 算术表达式和运算符的优先级与结合性: 1)用算术运算符和括号将运算对象(也称操 作数)连接起来的、符合C语法规则的式子, 称为C算术表达式 2)运算对象包括常量、变量、函数等 3)C语言规定了运算符的优先级和结合性
复习: 运算符和表达式
4.不同类型数据间的混合运算:
(1) +、-、*、/ 运算的两个数中有一个数为float或 double型,结果是double型。系统将float型数 据都先转换为double型,然后进行运算(float型数
示例程序
输出语句 printf(“%.5d\n”,888); printf(“%.0d\n”,888); printf(“%8.3f\n”,888.88); printf(“%8.1f\n”,888.88); printf(“%8.0f\n”,888.88); printf(“%.5s\n”,”abcdefg”); printf(“%5s\n”,”abcdefg”);
student,┗┛┗┛┗┛┗┛┗┛stude,stude┗┛┗┛┗┛┗┛┗┛
输出结果 00888(数字前补0) 888 ┗┛888.880 ┗┛┗┛┗┛888.9 ┗┛┗┛┗┛┗┛┗┛889 abcde(截去超过的部分) abcdef(宽度不够,按实际宽度输 出)
【例】 输出形式举例
main( ) { int num1=123; long num2=1234567; float real=123.4567; printf(“%d,%6d,%-6d,%2d\n”,num1,num1,num1,num1); printf(“%ld,%8ld,%4ld\n”,num2,num2,num2); printf(“%f,%10f,%10.2f,%-10.2f\n”,real,real,real,real); printf(“%s,%10.5s,%-10.5s\n”,”student”,”student”,”student”) }
C语言程序设计 第3章 简单C语言程序(二)
·校内自编教材 ·
学习目标
掌握数据输入输出方式 掌握输入输出函数的运用 进一步掌握数据类型 进一步掌握各种运算
复习:运算符和表达式
1.基本的算术运算符:
+ :正号运算符(单目运算符) - :负号运算符(单目运算符) * :乘法运算符 / :除法运算符 % :求余运算符 + :加法运算符 - :减法运算符
3.2.7 运算符和表达式
例3.3 给定一个大写字母,要求用小写字 母输出。
解题思路:
关键是找到大、小写字母间的内在联系 同一个字母,用小写表示的字符的ASCII代码
比用大写表示的字符的ASCII代码大32
复习:运算符和表达式
5. 强制类型转换运算符
强制类型转换运算符的一般形式为 (类型名)(表达式)
printf(“%g\n”,888.88); 888.88(%f格式比采用%e格式输出宽度小)
printf(“%8g\n”,888.88); ┗┛┗┛888.88(输出右对齐,左边填空格)
精度指示符
以“.”开头,用十进制整数指精度。对于 float或double类型的浮点数可以用 “m.n”的形式在指定宽度的同时来指定其 精度。其中,“m”用以指定输出数据所占 总的宽度,“n”称为精度。
(13) 其他
(如函数调用运算符())
练习
int a=-1,b=4,k; k=(a++<=0)&&(!(b--<=0)) 结果k,a,b分别等于?
++和--运算符放在后面是先取值运算后 +/-1,所以a++<+0值为1(真);b-<=0值为0(假),!(非)运算后值为1 ,1&&1(与运算)后值为1,运算后 a+1;b-1因此最终结果:k=1,a=0,b=3
据在运算时一律先转换成双精度型,以提高运算精度(即使 是两个float型数据相加,也先都化成double型,然后再
相加)
(2) 如果int型与float或double型数据进行运算,先 把int型和float型数据转换为double型,然后进 行运算,结果是double型
(3)字符型数据与整型数据进行运算,就是把字符的 ASCII代码与整型数据进行运算
– (double)a (将a转换成double类型) – (int) (x+y) (将x+y的值转换成int型) – (float)(5%3)(将5%3的值转换成float型)
有两种类型转换
– 系统自动进行的类型转换 – 强制类型转换
6.C运算符
(4) 位运算符 (<<按位左移 >>按位右移 )
1.printf函数的一般格式 printf(格式控制,输出表列)
例如: printf(”i=%d,c=%c\n”,i,c);
格式声明
用printf函数输出数据
1.printf函数的一般格式 printf(格式控制,输出表列)
例如: printf(”i=%d,c=%c\n”,i,c);
普通字符 转义字符
复习运算符和表达式
说明
两个整数相除的结果为整数 – 如5/3的结果值为1,舍去小数部分 – 如果除数或被除数中有一个为负值,舍入方向 不固定。例如,-5/3,有的系统中得到的结果 为-1,在有的系统中则得到结果为-2 – VC++采取“向零取整”的方法 如5/3=1,-5/3=-1,取整后向零靠拢
用printf函数输出数据
1.printf函数的一般格式 printf(格式控制,输出表列)
例如: printf(”i=%d,c=%c\n”,i,c);
可以是常量、变量或表达式
转义字符
字符形式 \n \t
\b \r \f \\ \’ \” \ddd \xhh
含义
ASCII代码
换行,将当前位置移到下一行开头 10
语句与表达式的区别
表达式语句是由表达式和分号构成。 例如: a=3 是表达式 a=3;是语句。 只有分号的语句是空语句。
3.1 输入/输出函数
在C程序中用来实现输出和输入的,主要是 printf函数和scanf函数
这两个函数是格式输入输出函数 用这两个函数时,必须指定格式
用printf函数输出数据
输入实数,可以用以小数形式或指数形式输入 与f作用相同,e与f,g可以互相替换
scanf函数的格式说明
(2)抑制字符“*”:表示该输入项读入后不赋予相应 的变量,即跳过该输入值。 例如: scanf(“%d%*d%d”,&x,&y); 输入10┗┛12┗┛15后,把10赋予变量x,12被跳过,
程序运行结果为: c1=x,c2=y c1=120,c2=121
printf格式字符
格式字符
说明
d,i 以带符号的十进制形式输出整数(正数不输出符号)
o 以八进制无符号形式输出整数(不输出前导符0)
x,X 以十六进制无符号形式输出整数(不输出前导符0x),用 x则输出十六进制数的a~f时以小写形式输出;用X时,则 以大写字母输出
示例程序
输出语句
输出结果
printf(“%d\n”,888);
888(按实际需要宽度输出)
printf(“%6d\n”,888);
┗┛┗┛┗┛888(输出右对齐,左边填空格)
printf(“%f\n”,888.88); 888.880000(按实际需要宽度输出)
printf(“%12f\n”,888.88); ┗┛┗┛888.880000(输出右对齐,左边填空格)
u 以无符号十进制形式输出整数
c 以字符形式输出,只输出一个字符
s 输出字符串
f
以小数形式输出单、双精度数,隐含输出6位小数。
e,E 以指数“e”或“E”形式输出实数。(如1.2e+02或 1.2E+02)
g,G 选用%f或%e格式中输出宽度较短的一种格式,不输出无 意义的0。用G时,若以指数形式输出,则指数以大写表示
% 运算符要求参加运算的运算对象(即操作数)为 整数,结果也是整数。如8%3,结果为2
复习:运算符和表达式
2. 自增、自减运算符: 作用是使变量的值1或减1
– ++i,--i:在使用i之前,先使i的值加(减)1 等价于-(++i) – i++,i--:在使用i之后,使i的值加(减)1 等价于-(i++) J=++I;J=i++; i=3;printf(“%d\n”,++i); i=3;printf(“%d\n”, i++); 前者输出4,后者输出3
15赋予变量y。 ⑶ 宽度指示符:用十进制整数指定输入数据的宽度。
例如: scanf(“5d”,&x);
输入数据“661020”,把前五位数66102赋予变量x,其余 部分被截去。
使用scanf函数注意事项
scanf函数
1. scanf scanf(格式控制,地址表列)
含义同printf函数
scanf函数
1. scanf scanf(格式控制,地址表列)
可以是变量的地址,或字 符串的首地址
【例2-14】 用scanf函数输入数据。 main( ) { int x,y; scanf(“%d%d”,&x,&y); printf(“%d,%d \n”,x,y); }
如果上题改为
int a=-1,b=4,k; k=(a++<=0)||(!(b--<=0)) 结果k,a,b分别等于?
++和--运算符放在后面是先取值运算后 +/-1,所以a++<+0值为1(真);b-<=0值为0(假),!(非)运算后值为1 ,1&&1(与运算)后值为1,运算后 a+1;b-1因此最终结果:k=1,a=0,b=4
求求反反
6.C运算符
(6) 条件运算符 (?:) <表达式1>?<表达式2>:<表达式3>
6.C运算符
(7) 逗号运算符
(,)
(8) 指针运算符
(*和&)
(9) 求字节数运算符
(sizeof)
(10) 强制类型转换运算符 ( (类型) )
(11) 成员运算符
(.->)
(12) 下标运算符
([ ])
Байду номын сангаас
横向跳格(即跳到下一个输出区, 9 一个输出区占8列)
退格,将当前位置移到前一列
8
Enter,将当前位置移到本行开头 13
换页,将当前位置多到下页开头
12
反斜杠字符“\”
92
单引号字符
39
双引号字符
34
1到3位8进制数所代表的字符
1到2位16进制数所代表的字符
printf函数的调用
【例2-12】 示例程序 main( ) { char c1='x',c2='y'; printf("c1=%c,c2=%c\n",c1,c2); printf("c1=%d,c2=%d\n",c1,c2); }
printf标志字符
字符
意义
输出结果左对齐,右边填空格;
- 缺省则输出结果右对齐,左边填
空格或零
+ 输出值为正时冠以“+”号,为
负时冠以“-”号
# 八进制输出时加前缀o;十六进
制输出时加前缀0x
例如,以下语句输出六位十 进制整数:
printf(“%6d\n”,111); printf(“%-6d\n”,111); 输出结果为: ┗┛┗┛┗┛111 (输出右对 齐,左边填空格) 111┗┛┗┛┗┛ (输出左对 齐,右边填空格)
输出八进制或十六进制时, 可以使用以下形式: printf(“%#o,%#x\n”,10,1 6); 输出结果为: 012,0x10
宽度指示符
宽度指标符:用来设置输出数据项的最小 宽度,通常用十进制整数来表示输出的位 数。如果输出数据项所需实际位数多于指 定宽度,则按实际位数输出,如果实际位 数少于指定的宽度则用空格填补。
运行时按以下方式输入a、b、c的值:
1┗┛2<Enter> (输入x,y的值)
1,2
(输出x,y的值)
scanf函数的格式说明
(1)格式字符:表示输入数据的类型,其字符和含义如表:
格式字符 d,i u o x,X c s
f e,E,g,G
说明 输入有符号的十进制整数 输入无符号的十进制整数 输入无符号的八进制整数 输入无符号的十六进制整数(大小写作用相同) 输入单个字符 输入字符串,将字符串送到一个字符数组中,在输 入时以非空白字符开始,以第一个空白字符结束。 字符串以串结束标志’\0’作为其最后一个字符
复习:运算符和表达式
3. 算术表达式和运算符的优先级与结合性: 1)用算术运算符和括号将运算对象(也称操 作数)连接起来的、符合C语法规则的式子, 称为C算术表达式 2)运算对象包括常量、变量、函数等 3)C语言规定了运算符的优先级和结合性
复习: 运算符和表达式
4.不同类型数据间的混合运算:
(1) +、-、*、/ 运算的两个数中有一个数为float或 double型,结果是double型。系统将float型数 据都先转换为double型,然后进行运算(float型数
示例程序
输出语句 printf(“%.5d\n”,888); printf(“%.0d\n”,888); printf(“%8.3f\n”,888.88); printf(“%8.1f\n”,888.88); printf(“%8.0f\n”,888.88); printf(“%.5s\n”,”abcdefg”); printf(“%5s\n”,”abcdefg”);