printf"=%d, b=%d,cl=5c, c2=%c, x"%6 2f, y=6.2f, z=6. 2A\n),abclc2 运行情况如下: uu10u凵u20Aa1.5u-3.751.5·67.8 (此行为输入的数据) a=10,b=20,c1=A.c2=a,x=1.50, 3.75,y=67.80〔此行为输出 说明:按%5d格式的要求输人a与b时,要先键人三个空格,然后再键人10 与20。%*f是用来禁止赋值的。在输入时,对应于%*f的地方,随意打人了一个 数1.5,该值不会赋给任何变量 4.8设圆半径r=1.5,圆柱高k=3,求圆周长、國面积圆球表面积、圆球体积、圆柱体 积。用 scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数 字。请编程序 { float pi.h, r,I,s,sq, vqVZ rinf(请入圆半径r圆柱高h:\n"); scanf(%f,r&r,&h) vz=pi始r"r*h; printf(圆面积为:s=%6.2n”,s); printf(圆球表面积为:sq=%6.z升n",sq); printf(圆球体积为:sv=%6.2fn",vq); printf(”圆柱体积为:sz=%6.2fn",vz) 运行结果 请输人圆半径r,圆柱高h 圆周长为 圆面积为 圆球表面积为:sq=28.27 圆柱体积为 z=21.21
4.9输入一个华氏温度,要求输出摄氏温度。公式为 输出要有文字说明.取2位小数 解 printf("请输入一个华氏温度:\n") f("%,8.f (f·32) 注意5和9要用实型表示,否则59的值为 printf(“摄氏温度为:%5,2fn,c); 行结果 请输入一个华氏温度 摄氏温度为:25.56 4.10编程序,用 getchar函数读人两个字符给cl、c2,然后分别用 putchar函数和 printf 函数输出这两个字符。并思考以下问题:(1)变量cl、c2应定义为字符型或整型 抑成二者皆可?(2)要求输出ci和c2值的ASCI码,应如何处理?用 putchar函 数还是 printf函数?(3)整型变量与字符变量是否在任何情况下都可以互相代替 如char“cl,c2;"与“intc1,c2;"是否无条件地等价? 解 f include <stdio. h> 请输人两个字符c1,c2:\n") el=getchar() printf(用 putchar语句输出结果为:\n"); printf("用 printf语句输出结果为:n"); printl("%c,为cn”,c!,c2); 运行结果: 请输入两个了符
用 putchar语句输出结果为: 用 printf语句输出结果为: 请注意连续用两个 getchar函数时怎样输人字符。不应当用以下方法输人: 因为笫一行将a和回车符输入到内存的输人缓冲区,因此c1得到a,c2得到 个回车符。在输出c2时就会产生一个回车换行,而不会输出任何可显示的字 符。在实际操作时,只要输入了“a”后,屏幕显示马上从用户屏切换到TC窗口, 程序接着执行下去。因为系统认为用户已输入了两个字符,所以我们连续输入ab 两个字符然后再按回车键,就保证了c1和c2分别得到字符a和b 回答思考问题: (1)cl和c2可以定义为字符型或整型,二者皆可。 (2)在 print函数中用%d格式符输出,即 printf("%d, %d\n",cl, c2); (3)字符变量在计算机内占一个字节,而整型变量占两个字节,因此整型变量 在可输出字符的范围内(ASCI码为0~255之间的字符)是可以与字符数据互相 转换的。如果整数在此范围外,则不能代替。请分析以下三个程序。 程序1 i int cl, c2 ·定义为整型, printf("请输入两个整数cl,c2:n"); scanf("d, %d, &cl, &c2 rnrf("按字符轴出结果为:n”); pinf"按ASC码输出结果为:n"); printf("%d, %odn,cl, c2); 运行结果: 请输入两个整数c1,c2 按字符输出结果为 按ASCI仍输出结果为 97,98
定义为字符型 定义为整型 printf(请输入两个字符c,c2:\n") scanf("%c,为c,8:c1,8&,c2); il=clr *将字符型赋值给整型变量美 print("按字符输出结果为;\n") printf("isc, c\n, il, 12) 将整型变量按字符输出 printf("按整数输出结果为:\n") printf("%d,%dn',c1,c2);’*将字符变量按整型输出 运行结果 请输人两个字符c1,c2: 按字符输出结果为: 按整数输出结果为: 程序3 r cl, c2 定义为字符型莱 char il i2 定义为整型 prin(”请输人两个整数i1,2:\n"); 将整数赋给字符变量/ printf("按字符输出结果为:{n”); printf(按整数输出结果为:\n"); printf("%d, %d\n"cl, c2):> 运行结果 请输人两个整数i,i2: 按字符输出结果为:
按整数输出结果为 33.74 请注意c1和c2是字符变量,只占一个字节,只能存放0~255范围内的整数 而现在输入给i和i2的值已超过0~255的范围,所以只将i和i在内存中两个 字节的低8位赋给c1和c2。可以看到:289-255=33,330-255=74;而与 AsCII 码33和74相应的字符为“!”和“J”。请读者注意分析。 24·