继上上篇博客的putchar语句,当时有个实例程序要写,今天给补上:
#include <stdio.h>
void main()
{
char a = 'B',b = 'o',c = 'k';
putchar(a);
putchar(b);
putchar(b);
putchar(c);
putchar('\t');
putchar(a);
putchar(b);
putchar('\n');
putchar(b);
putchar(c);
}
当时我看PPT的时候,一脸懵逼,这不都一样呢吗?最后觉得实践出真知,于是得出下列的结果
getchar函数(键盘输入函数)
顾名思义,这个函数就是从键盘上输入一个字符
其一般形式为:
getchar();
通常将输入的字符赋予一个字符变量,构成赋值语句。
char c;
c = getchar();
例【7.1】
#include <stdio.h>
void main()
{
char c;
printf(“input a character\n”);
c = getchar();
putchar©;
}
输出结果,就是字符串c里面的内容。如图所示:
格式输入与输出
printf函数(格式输入函数):
其关键字最后一个字母f即为format之意。其功能是按用户指定的格式,将指定的数据显示到显示屏上。
1、printf函数调用的一般形式
printf函数是一个标准库函数,它的函数原型在“stdio.h”中。其作为特例,并不要求在使用printf函数之前必须包含stdio.h文件
一般形式为:
printf(“格式控制字符串”,输出表列)
格式控制字符串用于指定输出格式。格式控制串可由格式字符串跟非格式字符串两种组成。%后面跟各种格式字符,用来说明输出数据的类型、形式、长度、小数位数等。如:
”%d“表示按十进制整型输出
”%ld“表示按十进制长整型输出
”%c“表示按字符型输出等
非格式字符串在输出时原样照印,在显示中起作用。要求格式字符串和各输出项在数量和类型上应该一一对应。
例【7.2】
#include <stdio.h>
void main()
{
int a = 88,b = 89;
printf("%d,%d\n",a,b);
printf("%d,%d\n",a,b);
printf("%c,%c\n",a,b);
printf("a=%d,b=%d\n",a,b);
}
输出结果:
第一个跟第二个输出按照十进制整型输出,第三个则是按照字符型输出,所以会输出a,b
格式字符串
1)类型:类型字符以输出数据的类型,其格式符和意义如下表所示:
2)标志:标志字符有四种:-、+、#和空格,其意义如下表所示:
3)输出最小宽度:用十进制整数来表示输出的最小位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0
4)精度:精度格式符以”.“开头,后跟十进制整数。若输出数字,则表示小数的位数,若输出字符,则表示输出字符的个数,若实际位数大于所定义的精度数,则截去超过的部分。
5)长度:长度格式符为h,l两种,h表示短整型量输出,l表示长整型量输出。
例【7.3】
#include <stdio.h>
void main()
{
int a = 15;
float b = 123.1234567;
double c = 12345678.1234567;
char d = 'p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
printf("c=%lf,%f,%8.4lf\n",c,c,c);
printf("d=%c,%8c\n",d,d);
}
输出结果:
进行解释一下:首先对于第一个printf中,%d按十进制输出,%5d的意思就是输出的最小位数为5,然而a等于15,所以少了三位就用三个空格来补。(如果换成%3d,则输出的结果将是15前面有一个空格),%o则是结果以八进制数输出,%x则结果是以十六进制输出。第二个printf里面,%f是以浮点形式输出,%lf是以长浮点型输出,%5.4lf中5代表整数部分的最大位数可以是5位,而小数部分则只能是4位,超出的部分要舍去, %e是以指数形式输出。第三个printf中,前面的%lf跟%f的概念是一致的,%8.4lf我们也能够推测到整数部分最大位数为8位,而小数部分则只能是4位。第四个printf中,%c是以字符形式输出,%8c是指输出的最小位数为8位,因此前面有控制台打印出来的结果中间空了7个空格
注意:使用printf函数有一个需要注意的问题,输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右也可以从右到左。
例如:
#include <stdio.h>
void main()
{
int i = 8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,i--,-i++,-i--);
}
输出结果:
相对应的:
#include <stdio.h>
void main()
{
int i = 8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}
来看一下最后的输出结果:
对照一下,结果果然不一样。嗯,说实话,i++,i–这种东西我真的是很迷,已经被搞两次了,崩溃。
scanf函数(格式输入函数)
scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。