实验3 格式化输入输出操作。
一:实验目的。
1:掌握printf函数的格式及其用法。
2:掌握scanf函数的格式及其用法。
3:掌握各种格式转换字符含义及其用法。
二:实验内容提要。
格式输出函数printf
作用:向终端输出若干个任意类型的数据。
形式:printf(“格式控制字符串”,表达式1,表达式2,,,表达式n)。
功能:按照格式控制字符串的要求将表达式一,到表达式n的值显示在计算机屏幕上。
注意:格式控制字符串主要包含常规字符,和格式控制符。
以%开头,以格式转换字符结尾的例如 %d,%5.2f ,%c为格式控制符。
格式控制字符串中除格式控制符以外的则为普通字符,则输出在显示屏上的时候则按照原样输出。
常规字符:包括可显示字符和用转义字符表示的字符。
格式控制符的基本格式:
— 0 l/h 格式转换字符。
是格式说明的引导符号。
表示输出的数据左对其,默认时为右对其。
0 右对其时如果实际宽度小于width,则在左边的空位上补0;
m 表示输出数据的域宽。
n 对于整数则至少要输出n位,对于实数则是指定小数点后的位数,对于字符串则表示只输出字符串的前n个字符。
l 在d,o,x,u 前指定输出为长整型。 在e,f,前制定输出精度为double型。
h 在d,o,x,u前指定输出为短整型数。
使用printf函数时注意以下几点。
1) 格式控制字符串可以不包含任何的格式控制符。
2) 当格式控制字符串中既包含有常规字符,又包含格式控制符的时候表达式的个数与格式控制符的个数要一致。对应的顺序是从左到右的格式控制符对应从左到右的表达式。
3) 如果格式控制符的个数多余表达式的个数的时候,则余下的格式控制符的值将是不确定的随机数。
4) 表达式的数据类型要和格式控制符的类型一致,否则出错。
printf函数中格式转换字符及其含义。p76 表4-1所示。
格式转换符含义对应的表达式数据类型。
d 或者 %i 以十进制输出一个整型数据有符号整型。
x,%x以十六进制输出一个无符号整型数据无符号整型。
o(字母o) 以八进制输出一个无符号整型数据无符号整型。
u以十进制形式输出一个无符号整型数据无符号整型。
c输出一个字符型数据字符型。
s输出一个字符串字符串。
f以十进制小数形式输出一个浮点型数据浮点型。
e,%e 以指数形式输出一个浮点型数据浮点型。
格式输入函数scanf
作用:按照格式控制字符串的要求将数据从终端传送到变量地址所指定的内存空间。
形式:scanf(“格式控制字符串”,变量一的地址,变量二的地址,,,变量n地址)。
功能:在第一个参数格式控制字符串的控制下,接受用户的键盘输入,并将输入的数据依次存放在变量一到变量n的内存空间中。
注意:格式控制字符串主要包含常规字符,和格式控制符。但是这里和printf中的含义就完全不相同了。
常规字符要求我们在键盘输入数据的时候要原样输入这些数据。
格式控制符用来控制用户输入的数据,不同的格式控制符要求输入不同形式的数据。
格式控制字符对输入的要求。
d 或者 %i要求用户输入一个十进制的整数。
x,%x要求用户输入一个十六进制的无符号整数。
o要求用户输入一个八进制的无符号整数。
u要求用户输入一个十进制的无符号整数。
c要求用户输入一个字符。
s要求用户输入一个字符串。
e要求用户用指数的形式输入一个实数。
格式控制符的基本格式:
* m l/h
是格式说明的引导符号。
抑制符输入的数据不会赋值给相应的变量。
m 制定输入数据的域宽,遇到空格或不可转换字符则结束。
l 在d,o,x,u 前指定输出为长整型。 在e,f,,g前制定输出精度为double型。
h 在d,o,x,u前指定输出为短整型数。
在这里要注意下和printf的区别。
实验题目:1: 在编译环境环境中写程序。
printf(“1+2=%d,1-2=%d,1*2=%d”,1+2,1-2);
printf(“1+2=%d,1-2=%d”1+2,1-2,1*2),大家在屏幕上输出了什么结果为什么会这样?,得出什么结论?(在空白处写上实验结果。)
答:2:定义3个整形变量a,b,c 依次赋值为 72,73,74;
然后以字符形式输出看得出什么结果。如果以%f输出呢?结果是什么呢?得出什么结论?
答:3:定义个无符号整型变量 a = 65535 普通整型 b=-2 然后分别以%d,%o,%x,%u 将其输出,然后大家看看结果是什么?希望大家知道结果怎么得来的。
提示 unsigned int a =65535;
int b=-2;
printf(“%d,%o,%x,%u”,a,a,a,a);
4: 下面定义好了变量,请按要求输出结果(下面为部分程序,要求上机按要求补上剩下的程序。
1) 请在屏幕上打印出a+b和a-b的结果并且要求保留小数点后4位小数。
2)请以字符型和整型2种方式输出c,i。
(3) 请在屏幕上输出 china,提示(使用%s输出)。
void main()
float a,b;
char c =’a’;
int i =97;
a=31.11,b=28.33;
5:大家分别运行下列2段程序,得出结果。写出程序(1)和程序(2)在输入输出上的不同点。
void main()
int a;
float b;
scanf(“%d%f”,&a,&b);
printf(“a=%d,b=%f”,a,b);
void main()
int a;
float b;
scanf(“a=%d,b=%f”,&a,&b);
printf(“%d%f”,a,b);
答:程序一和程序2在输入输出上的不同点是:
6:char a,b;
scanf(“%3c%3c”,&a,&b);
printf(“%c%c”,a,b);
请问在键盘输入的是 aaabbbccc 回车。最后以字符形式输出a,b 结果是什么。
请上机试验之后得出结论 a= b= ;
原因:7:char a,b,c;
scanf(“%c%c%c”,&a,&b,&c);
printf(“%c%c%c”,a,b,c);
假设输入 w空格o空格w ,请问最后在屏幕上输出的结果是什么?为什么会这样?
答: 8:输入数据的时候遇到以下情况,系统认为该数据结束:
(1) 遇到空格,回车,或者tab;
(2) 遇到输入域宽度结束,例如“%4d“,只取4列。
(3) 遇到非法输入,比如,在输入数值数据时,遇到字母或者非数值符号。
例如: scanf(“%d”,a); 如果输入为53e1;则a的值将是53;
大家自己在c编译环境中试试8中所说的(1)(2)(3)验证下是否正确。
C语言上机实验
一实验目的。1 掌握关系运算符,逻辑运算符和条件运算符的用法。2 掌握if语句的用法。3 掌握switch语句的用法。二实验内容提要 1 关系运算符。比较二个量的运算符称为关系运算符。关系运算符含义优先级结合性 大于低左结合性 大于等于低左结合性 小于低左 小于等于低左 等于高左!不等于高左。用关系...
C语言上机实验
一实验目的。1 掌握关系运算符,逻辑运算符和条件运算符的用法。2 掌握if语句的用法。3 掌握switch语句的用法。二实验内容提要。1 关系运算符。比较二个量的运算符称为关系运算符。关系运算符含义优先级结合性。大于低左结合性。大于等于低左结合性。小于低左。小于等于低左。等于高左。不等于高左。用关系...
C语言上机实验
实验三简单的c程序设计 目的与要求 1 理解c语言程序的顺序结构。2 掌握常用的c语言语句,熟练应用赋值 输入 输出语句。上机内容 一般实例 例1 按格式要求输入 输出数据。include main int a,b flost x,y char c1,c2 scanf a d,b d a,b sca...