第四章:掌握输入输出函数的使用
实验时间:2009年3月16日实验地点:
实验人:专业:班级:
实验题目:掌握输入输出函数的使用
实验目的:通过实验掌握输入输出函数的使用,对常用的格式字符要区别记忆。
实验过程:
例3.1 输出单个字符
#include <stdio.h> 为什么要加头文件“include <stdio.h>”,它是什么意思
main()
{char a,b,c;
a='b';b='o';c='y';
putchar(a);putchar(b);putchar(c);
}
将例3.1程序最后一行改为
putchar(a);putchar(…\n‟);putchar(b);putchar(…\n‟);putchar(c); putchar(…\n‟);
例3.2输入单个字符
#include <stdio.h>
main()
{char c;
c=getchar();
putchar(c);
}
例3.3无符号数据的输出
main ( )
{unsigned int a = 65535;int b = -2 ;
printf(”a=%d,%o,%x,%u\n”,a,a,a,a);
printf(”b=%d,%o,%x,%u\n”,b,b,b,b);}
输出:
a=-1,177777,ffff,65535
b=-2,177776,fffe,65534 备注:以%o输出,由a的补码(二进制)转化为八进制(无符
号)记得复习下进制间的转换
例3.4 字符数据的输出
main ( )
{char a =…a‟;int b = 97;
printf(”%c,%d\n”,a,a);
printf(”%c,%d”,b,b);}
输出:
a,97
a,97
例3.5字符串的输出。
main()
{printf(“%3s,%7.2s,%.4s,%-5.3s\n”,”china”,"china","china","china");}
例3.6输出实数时的有效位数。
main()
{float x,y;
x=111111.111;y=222222.222;
printf("%f",x+y);}
例3.7 输出双精度数时的有效位数。
main()
{double x,y;
x=1111111111111.111111111;
y=2222222222222.222222222;
printf("%f",x+y); 双精度也是用%f输出
}
例3.8输出实数时指定小数位数。
main()
{
float f=123.456;
printf(“%f %10f %10.2f %.2f %-10.2f\n”,f,f,f,f,f);
}P80
main()
{
float f=123.456;
printf("%e%10e %10.2e %.2e %-10.2e",f,f,f,f,f); }
当未规定小数点后的位数时,系统自动输出6位小数。
Printf(“%e”,123.456); 会输出1.23456e+02 ,其中小数点也算一位
例3.9用scanf函数输入数据。
main ( )
{ int a,b,c; scanf(“%d%d%d”,&a,&b,&c); 使用scanf函数时不要丢掉& printf(“%d,%d,%d\n”,a,b,c);} 输出的形式由双引号内的形式决定。
输入:
1 2 3
输出
1,2,3
但是输入:
1,2,3
输出:
1,-858993460,-858993460
说明输入要与格式控制符匹配
例3.10输入三角形的三边长,求三角形面积
#include <math.h>
main()
{float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=1.0/2 (a+b+c);
area=sqrt(s (s-a) (s-b) (s-c));
printf(“a=%7.2f,b=%7.2f,c=%7.2f,
s=%7.2f\n”,a,b,c,s);
printf(“area=%7.2f\n”,area);}
例3.11 从键盘输入一个大写字母,要求改用小写字母输出。
前面已介绍过大小写字母间转换的方法,根据此思路编出下面的程序。
#include <stdio.h>
main()
{
char cl,c2;
cl=getchar();
printf("%c,%d\n",cl,cl);
c2=cl+32;
printf("%c,%d\n",c2,c2);
}
例3.12 求ax2+bx+c=0方程的根。
a,b,c由键盘输入,设b2-4ac>0。
#include <math.h> 使用了数学函数才要加(sqrt )
main();
{
float a,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;
printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}
练习:
3.5 请写出下面程序的输出结果:
main()
{int a=5,b=7;
float x=67.8564,y=-789.124;
char c='a';
long n=1234567;
unsigned u=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);十六进制和八进制的转换方法在
计算机笔记本上
printf("%ld,%lo,%x\n",n,n,n);长整型有32位比普通整型多一倍
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","coMputer","coMputer");}
3.6 用下面的scanf函数输入数据,使a=10,b=20,c1='a',c2='a',x=1.5,y=-3.75,z=67.8,请问在键盘上如何输入数据?
scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
%*f P84
3.7设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序。
3.7 输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9(f-32),输出要有文字说明,取2位小数。