一、第四章p56-58页的习题—。 4-1 (1)分析并写出下列程序运行结果 #include <> main() { char c1='a',c2='b',c3='c'; /*定义三个字符*/ printf(\ /*格式化输出三个字符*/ } 结果: (2) #include <> main() { int a=12,b=15; printf(\ /*格式化输出a=12%,b=15%*/ } 结果: (3)假设程序输入123456 #include <> main() { int a,b; scanf(\ /*对输入的数取前两位赋给a,跳过长度为2 的字符串,再取两位数赋给b*/ printf(\} 结果: 4-2分析下面程序,请指出错误原因和程序错在哪里,并改正错误 改正后: #include <> main() { long a,b; float x,y; scanf(\ getchar(); scanf(\ printf(\ printf(\} 错误分析: 1、定义long 型,输入时要写成 %ld ,输入时不能加入 \\n ,取址符号 & 丢掉,scanf 函数中不 .n,规定精度 2、输出a,b对应为long型,输出格式符为 %ld ,x,y对应为float型,输出格式为%f,%f 3、在两个scanf() 函数中,输入4个数时,会在两个整数和两个浮点型数之间加入逗号,但加入逗号后,第二条scanf() 语句会认为逗号也为有效输入项,后面的浮点型数就不会被读入,所以要加入getchar() 函数将逗号吸收掉。 4-3、填空题 (1)要使下面程序在屏幕上显示1,2,34,则从键盘输入的数据格式应为 1234 #include <> main() { char a,b; int c; scanf(\ printf(\} 结果: (2)在与上面程序的键盘输入相同的情况下,若将程序中的第7条语句修改为 Printf(“%-2c%-2c%d\\n”,a,b,c); 则屏幕输出为 1 2 34 (3)要使上面程序的键盘输入数据格式为1,2,34,输出语句在屏幕上显示的结果也为1,2,34,则应将程序中的第六条语句修改为 scanf(\ (4)在(3)的程序基础上,程序仍然输入1,2,34,若将程序中的第7条语句修改为 Pirntf(“\\’%c\\’,\\’%c’\\,%d\\n”,a,b,c); 则程序的屏幕输出为 ’1’,’2’,34 (5) 要使上面程序的键盘输入无论用哪种格式输入数据,程序在屏幕上的输出结果都为1,2,34,则将程序中的第6条语句修改为 scanf(\; 第1种输入方式:1,2,34 (以逗号作为分隔符) 第2种输入方式:1 2 34 (以逗号作为分隔符) 第3种输入方式:1 2 34 (以逗号作为分隔符) 第4种输入方式:1 2 34 (以回车作为分隔符) 二、收集资料,总结printf和scanf函数的用法。 一、print格式化输出函数 1、print(“要输出的字符序列”) 注意:“要输出的字符序列”必须用英文的双引号括起来,其作用是在屏幕上原样输出“要输出的字符序列”。 例如:printf(“I love china!”); 屏幕结果:I love china! 2、printf(“输出格式控制符”,输出列表项) 注意:“输出格式控制符”必须用英文的双引号括起来,其作用是按照输出格式来输出后面的输出列表项的值。 Printf(“%d,%d”,x,y);的作用是:以%d的格式输出变量x,y的值,中间以逗号分隔。 “输出格式控制符”可以是: (1) 格式符:即由%和格式字符组成,如:%d,%f等 (2) 普通字符:如printf(“a=%d,b=%d\\n”,a,b);中的“a=”、“b=”都是普通字符,普通字符原样输出。 格式符字 说 明 输出带符号位的十进制整数(整数前无符号) 以八进制无符号形式输出整数(无前导o) 以十六进制无符号形式输出整数(无前导ox),用x则输出的a~f是小写的形式,用X出的a~f是大写的形式 d , i O X或x U C S F E 或 E G或 g % 以十进制无符号型输出整数 输出一个字符 输出字符串的字符,遇到“\\0”时结束输出,或者输出由精度指定的字符数 以小数形式输出单精度或双精度数,隐含输出六位小数,当指定精度为0时,小数部分含小数点)都不输出 以标准形式输出单双精度数,当用E时,指数部分的e用E表示,小数位数保留6位由系统决定采用%f,%e,%E的格式,以使输出宽度最小,当用G时,指数部分e用E输出百分号% (3) 转义字符:如printf(“a=%d,b=%d\\n”,a,b);中的“\\n”。其含义是“换行”。 C语言中常使用的格式字符共用9种。 在格式说明中,在%和上述格式字符之间还可以插入修饰符,如下表: 修饰符 说 明 L或 l 输出长整形,放在d,o,x,u之前;输出double型,放在f、e之前 h 输出短整型,放在d,o,x,u之前 m 输出数据宽度 n 对于实数,表示输出n位小数,对于字符串,表示截取字符个数 - 输出的数据在域内左对齐 Printf()函数常用的格式符如下: (1) d格式符用来输出十进制整数 %d:以整数的实际位数输出 %+d:以整数的十进制实际位数输出,输出的正整数前带“+” %md:输出的整数有m列并右对齐,当m大于整数的宽度时,多余的位数用空格填补,当m小于整数的宽度时,则按实际宽度输出 %-md:输出的整数有m列并左对齐,当m大于整数的宽度时,多余的位数用空格填补,当m小于整数的宽度时,则按实际宽度输出 例如:printf(“?\\n,%-8d\\n”,2009,2009); 结果为: 2009 2009 %ld或%Ld:按实际位输出长整形数据 %hd:按实际位数输出短整型数据 %mld或%mLd:输出的长整型数据有m列并右对齐,当m大于整数的宽度时,多余的位数用空格填补,当m小于整数的宽度时,则按实际宽度输出 %-mld或%-mLd:输出的长整型数据有m列并左对齐,当m大于整数的宽度时,多余的位数用空格填补,当m小于整数的宽度时,则按实际宽度输出 例如: long x=123456; printf(\ 结果: 123456 123456 %0md: 输出的整数有m列并右对齐,当m大于整数的宽度时,多余的位数用0填补,当m小于整数的宽度时,则按实际宽度输出 注意:没有%-0md (2)o,x,u的格式符用法与d相同,只是o,x,u不考虑符号位 例如: 结果: (3)c格式符用来输入一个字符。用法: %c:输出一个字符 %mc:输出的字符占m列并右对齐,多余的空位用空格填补 %-mc: 输出的字符占m列并左对齐,多余的空位用空格填补 例如:printf(“%-4c\\nL\\n”,‘A’,‘A’); 结果:A A (4)s格式符用来输出一个字符串。用法: %s:以字符串的实际长度输出一个字符串 %ms: 输出的字符串占m列并右对齐,当m大于字符串的宽度时,多余的位数用空格填补,当m小于字符串的宽度时,则按实际宽度输出 %-ms:输出的字符串占m列并左对齐,当m大于字符串的宽度时,多余的位数用空格填补,当m小于字符串的宽度时,则按实际宽度输出 例如: 结果: %:在m列的位置上输出一个字符串的前n个字符,并右对齐,m>n时,多余的位数用空格填补;m
相关推荐: