c地4章课后题_第1页
c地4章课后题_第2页
c地4章课后题_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、第四章p56-58页的习题4.14.3。4-1(1 )分析并写出下列程序运行结果#i nclude <stdio.h>main ()char c1='a',c2='b',c3='c:/* 定义三个字符 */prin tf("a%cb%cc%c n",c1,c2,c3);/* 格式化输出三个字符 */结果:labhcc *ress any kej/ to continue(2)#i nclude <stdio.h>main ()int a=12,b=15;printf("a=%d%,b=%d%n&q

2、uot;,a,b);/* 格式化输出 a=12%,b=15%*/结果:12x,b=15kress ani/ key to continue(3) 假设程序输入123456#i nclude <stdio.h>main ()int a,b;2的字符scan f("%2d%*2s%2d", &a, &b);/*对输入的数取前两位赋给a,跳过长度为串,再取两位数赋给b*/prin tf("%d,%dn",a,b);结果:12345612,56ress any kmy to cant inue4-2分析下面程序,请指出不对原因和程序错

3、在哪里,并改正不对 改正后:#i nclude <stdio.h>main ()long a,b;float x,y;sca nf("%ld,%ld", &a,& b);getchar();sca nf("%5f,%5f', &x, &y);prin tf("a=%ld,b=%ldn",a,b); prin tf("x=%f,y=%fn",x,y);不对分析:1、 定义long型,输入时要写成%ld,输入时不能加入 n,取址符号 &丢掉,scanf函数 中不.n,要

4、求精度2、 输出a,b对应为long型,输出格式符为%ld ,x,y对应为float型,输出格式为%f,%f3、在两个scanf()函数中,输入 4个数时,会在两个整数和两个浮点型数之间加入逗号,但 加入逗号后,第二条 scanf()语句会认为逗号也为有效输入项,后面的浮点型数就不会被读入, 所以要加入getchar()函数将逗号吸收掉。4-3、填空题(1) 要使下面程序在屏幕上显示1,2,34,则从键盘输入的数据格式应为1234#i nclude <stdio.h>main () char a,b; int c; sca nf("%c%c%d",&a,

5、&b, &c); prin tf("%c,%c,%dn",a,b,c); 结果:L234Lj.2,34Presskeij to continue(2) 在与上面程序的键盘输入相同的情况下,若将程序中的第7条语句修改为Printf( %-2c%-2c%dn ”a,b,c);则屏幕输出为1 2 34(3) 要使上面程序的键盘输入数据格式为1, 2,34,输出语句在屏幕上显示的结果也为1,2,34,则应将程序中的第六条语句修改为scan f("%c%*c%c%*c%d", &a,&b,&c)(4) 在(3)的程序基础上,

6、程序仍然输入1,2,34,若将程序中的第 7条语句修改为Pirntf( ' '%c',%dn ”a,b,c);则程序的屏幕输出为T,'2',34(5) 要使上面程序的键盘输入无论用哪种格式输入数据,程序在屏幕上的输出结果都为1,2,34,则将程序中的第 6条语句修改为scanf("%c%*c%c%*c%d",&a,&b,&c)。第1种输入方式:1,2,34 (以逗号作为分隔符)第2种输入方式:1 2 34 (以逗号作为分隔符)第3种输入方式:1234 (以逗号作为分隔符)第4种输入方式:1234 (以回车作为分

7、隔符)二、收集资料,汇总报告 printf和scanf函数的用法。一、print格式化输出函数1、print(要输出的字符序列”注意:“要输出的字符序列”必须用英文的双引号括起来,其作用是在屏幕上原样输出“要 输出的字符序列”。例如: printf( “ love china! ”;屏幕结果:I love china !2、printf (“输出格式控制符”,输出列表项)注意:“输出格式控制符”必须用英文的双引号括起来,其作用是按照输出格式来输出后面 的输出列表项的值。Printf( %d,%d ”,x,y);的作用是:以%d的格式输出变量x, y的值,中间以逗号分隔。“输出格式控制符”可以是

8、:(1)格式符:即由%和格式字符组成,如:%d,%f等(2)普通字符:如 printf( a=%d,b=%dn ”,a,b);中的“ a= ”、“b= ”都是普通字符,普通 字符原样输出。格式符字输出带符号位的十进制整数(整数前无符号) 以八进制无符号形式输出整数(无前导o)以十六进制无符号形式输出整数(无前导ox),用x则输出的af是小写的形式,用出的af是大写的形式以十进制无符号型输出整数输出一个字符输出字符串的字符,遇到“ 0”时结束输出,或者输出由精度指定的字符数以小数形式输出单精度或双精度数,隐含输出六位小数,当指定精度为0时,小数部分E或EG或g%含小数点)都不输出以标准形式输出单

9、双精度数,当用 E时,指数部分的 e用E表示,小数位数保留 6由系统决定采用 f,%e,%E 的格式,以使输出宽度最小,当用G时,指数部分 e 用 E输出百分号%(3)转义字符:如 printf( a=%d,b=%dn ”,a,b);中的“ n”。其含义是“换行”。C语言中常使用的格式字符共用9种。在格式说明中,在 %和上述格式字符之间还可以插入修饰符,如下表:修饰符说明L或l输出长整形,放在 d,o,x,u 之前。输出double型,放在f、e之前h输出短整型,放在 d,o,x,u之前m输出数据宽度n对于实数,表示输出n位小数,对于字符串,表示截取字符个数输出的数据在域内左对齐Printf

10、()函数常用的格式符如下:(1) d格式符用来输出十进制整数%d以整数的实际位数输出%+d以整数的十进制实际位数输出,输出的正整数前带“+”%md输出的整数有 m列并右对齐,当 m大于整数的宽度时,多余的位数用空格填补,当m小于整数的宽度时,则按实际宽度输出%-md输出的整数有 m列并左对齐,当 m大于整数的宽度时,多余的位数用空格填补,当 m小于整数的宽度时,则按实际宽度输出例如:printf( “ 8dn,%-8dn ”,2009,2009);结果为: 20092009%ld或%Ld:按实际位输出长整形数据%hd:按实际位数输出短整型数据%mld或%mLd输出的长整型数据有m列并右对齐,当

11、 m大于整数的宽度时,多余的位数用空格填补,当m小于整数的宽度时,则按实际宽度输出%-mld或-mLd输出的长整型数据有m列并左对齐,当 m大于整数的宽度时,多余的位数用空格填补,当m小于整数的宽度时,则按实际宽度输出例如:long x=123456;prin tf("%8ldn%-8ldn",x,x);结果:123456123456%0md输出的整数有 m列并右对齐,当 m大于整数的宽度时,多余的位数用 0填补,当m小 于整数的宽度时,则按实际宽度输出注意:没有 %-0md(2) o,x,u的格式符用法与d相同,只是o,x,u不考虑符号位例如:ttlnclude <

12、stdio.h>main()<short int x=-1;printf (l<%iidnthon%hxn%huXnll,x pxpxpx);>结果:k77777tfff65535r+Press amy kw卯 to continue(3) c格式符用来输入一个字符。用法:%c:输出一个字符%mc输出的字符占m列并右对齐,多余的空位用空格填补%-mc输出的字符占m列并左对齐,多余的空位用空格填补例如:printf(“ %-4cn%4cn ”, A', A );结果:AA(4) s格式符用来输出一个字符串。用法:%s :以字符串的实际长度输出一个字符串%ms:输出

13、的字符串占 m列并右对齐,当m大于字符串的宽度时,多余的位数用空格填补,当m小于字符串的宽度时,则按实际宽度输出%-ms :输出的字符串占 m列并左对齐,当 m大于字符串的宽度时,多余的位数用空格填 补,当m小于字符串的宽度时,则按实际宽度输出例如:*include <stdio(nain()<结果:has ichas icPress 我ny key to conti%m.ns:在m列的位置上输出一个字符串的前n个字符,并右对齐,m>n时,多余的位数用空格填补。m<n时,输出n位实际长度的字符串。%-m.ns:在m列的位置上输出一个字符串的前n个字符,并左对齐,m>

14、;n时,多余的位数用空格填补。m<n时,输出n位实际长度的字符串。例如:ttinclude <stdio.h>main()<printf-2sn%-8 -2snaaf "basic11 pbaslc'*);结果:babaPress any key to continue(5) f格式符以小数形式输出单双精度实数%f:输出单精度实数,整数部分全部输出,小数部分保留6位,在有效范围内的小数部分要进行四舍五入。%lf或1上输出双精度实数,整数部分全部输出,小数部分保留6位,在有效范围内的小数部分要进行四舍五入。例如:include <stdio-h&g

15、t;main()<float x=12T23却5;double i/=12.1235;print;>结果:L2.123450L2.123450ss ansr key to cent inue%m.nf:在m列的位置上输出一个实数保留n位小数并右对齐,系统自动对在有效数据范围内的小数部分进行四舍五入。当m大于实际宽度时,则多余位用空格填补,当M小于实际宽度时,实数的整数部分按实际宽度输出。%-m.nf:在m列的位置上输出一个实数保留n位小数并左对齐,系统自动对在有效数据范围内的小数部分进行四舍五入。当m大于实际宽度时,则多余位用空格填补,当M小于实际宽度时,实数的整数部分按实际宽度输

16、出,且结果左对齐。例如:include <stdio-h>nainOfloat X=123.4567;printf (k>%8.2FnV8 >2Fn1.2Fn",x ,x ,x);结果:123.46.23,4623-46lress 円ny kwy to con t in lie%.nf:实数的整数部分按实际输出,小数部分保留n位,自动对在有效范围内的小数进行四舍五入保存,结果左对齐。(6) e格式符用来以指数形式输出一个实数,用法同 f格式符。例如:printf( “ %e ,12.122344);结果:1.212234e+001(7) g格式符用来输出实数,

17、系统根据实数的大小,自动选择f格式符或e格式符输出,输出时选择占宽度较小的一种格式输出,且不输出无意义的0汇总报告:1、数据类型应与格式说明符匹配,否则会出错。2、int型数据可以用口格式输出,一个 unsigned型数据可用d,%o,%x格式输出3、除了 X,E,G丄可以大写以外,其他格式必须小写4、 如果需要输出“ ',应在格式符内连续使用两个“',女口:Printf( “ %5.2f% ,3.0/100); 结果:33.33%二、seanf()输入函数格式输入函数scanf()用于从键盘输入数据,该输入数据按指定的输入格式赋给相应的输 入项。其输入格式为:Scanf( “

18、输入格式控制符”,输入项地址列表)。注意:“输入格式控制符”必须用英文的双引号括起来,他的作用是按照输入格式从键盘 从键盘键入若干类型的数据给后面的输入项。例如:int a,b;Scanf( “a=%d,b=%d ,&a,&b);运行时从键盘输入 a=3,b=5按enter键,则变量a和b的值分别是3和5。“输入格式控制符”可以是:(1)格式符:由 呀口格式字符构成,如 %d和%f等(2)普通子符:如printf(a-%d,b-%dn ,a,b);中的 a= , , 、 b= 都是普通子符,输入时要按原样输入。下表是scanf()格式说明格式字符说明d和i输入带符号的十进制整数O输入不带符号位的八进制整数X和x输入不带符号位的十六进制整数,大小写形式相冋u输入不带符号位的十进制整数c输入单个字符s输入字符串f输入实数,以小数形式或指数形式E e g G与f作用相同,e与f,g可以相互替换,大小写形式相同在格式说明中,在 和上述格式字符之间还可以插入下表的修饰符格式字符说明L或1输入长整形,放在d,o,x,u的前面。输入double型,放在f,e 之前h输入短整型,放在 d,o,x,u之前m用来指定输入数据的宽度*表示输入项在读入后不赋给相应的变量输入scanf()函数要注意以下几点:(1) 地址表列要用地址

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论