一致。
常用函数
常用的函数主要有printf() scanf() system()(考试不会考……)rand()随机数生成函数 getchar() putchar() gets() puts()等。平时用的函数主要是这些,另外的我的习惯还是自己写一部分函数,比如一个矩阵的输出,赋值,等等。
首先介绍一下printf() 格式化输出函数
首先先说明一下,如果我从网上摘文档给你贴上的话你看起来肯定比书上不会强多少,效果有限,
所以我per内容都给你贴出来,这样你看起来能清楚点。
首次先介绍整数的输出: %d 这个就是用于输出的标志。这个字符会被函数扫描识别并将其对
应的内容按参数的内容写入显存从而显示在屏幕上。列子如下:
现在是不是很清楚了?这里格式参数位于%和d中间有负号就是左对齐,默认就是右对齐。那么
如果一个数的十进制长度超过了我们预定的数呢?那么下面的演示你就清楚了。
这里a1预定的数字是12345,一个五位数。而我们设定的是4位,这种情况下,函数不会舍弃
a1中的数字,而是全部显示出来。知道了吗?
浮点数输出 %f 浮点数有两种,一类是单精度float,另一类是double。这两种都是用%f
输出的,要注意。下面还是用一个实际的例子演示一下:
第一个输出语句是规定了一个总长度为5空格大小的位置而小数部分没有声明。从上图你可以发
现,函数把数据全部输出了,而且对齐时全部是左对齐。而第二个数据输出时,是右对齐,小数部分只输出了一位。而第三个数据则是全部输出了。由此可得,若不说明小数部分,那么小数部分则默认输出6位,总体长度=整数部分+1+6(小数部分默认),这里的1是小数点占得一位。第一个数据在输出时,因为总体长度超过给定数据,所以在占满原有部分的基础上,全部输出。
而第二个数据输出时约定好总长度为5,小数部分一位,则输出时只保留一位小数。这里的数据是12.34,输出显示结果为“ 12.3”,此时4被舍去。这里进位时是否会有四舍五入呢?看看这个语句便知:
可以发现,12.35在输出时被改写成了12.4.所以进位在这里是存在的,考试可能会出。至于左右对齐的情况在不超出时与整数部分相同,不再作介绍。
另外还有其它多种格式的输出,但是数字只介绍这两种了。下面介绍字符输出。 %c 单个字符输出。 这里还是用示例演示:
这里还是可以规定输出部分所占位置的大小,而且也可以控制输出的左右对齐。而且规则依旧和前面一样,另外,这里不会有超出问题……
%s字符串输出。还是实例比较形象:
这里我用的是一个指针来装填一个字符串,因为字符串的本质就是一个字符类型的指针。这个在后面的数组与指针中会讲。
据图可知,基本规则和前面是一致的,对齐方式,还有溢出处理原则。 这里我只是很基础的介绍了一下printf(),其余的你可以自己看一看 下面介绍scanf()函数。
scanf()函数有两类参数,一个是字符串指针,另外一个是地址列表
这是一个用于从读取键盘输入的函数,可以读取数字(整、浮点)、字符。其中最前面的那个字符串就是用于输入规范格式的,就是这个scanf(“%d”,&a);中的“%d”。
这里的scanf()是函数名,返回值是读取数据的个数,而最后要注意的是要用&(地址符)+数据名。这里简单说一下数据的地址。
在C语言中,地址基本都是用指针来表示的,因为指针本身的值就是地址。常规变量都是只提供
了数据名,而非地址。获取变量地址的方法是用地址符&+变量名实现的。
如果你有兴趣看一下一个数据的地址可以使用下面的方式实现:
这是就是你可以看到的地址了以上输出都是用的16进制数据,都是计算机的地址。其实关于地址这里在详细地讲一下,你可以发现这些数据的位数都是8位的,那么这个数据的总容量就是16^8.你可以算出来,16^8=2^32。内存的基本单元是字节,一字节是8位=1B,平时你用的存储卡基本是2GB,4GB吧,那么我们算一下。已知1KB=2^10B,1MB=2^10KB,1GB=2^10MB,所以1GB=2^30B。怎么样,你发现这是很大的一个数据了吧。我的计算机是2GB的内存,那么我的计算机内存容量就是2^31B。这里2^31虽然比2^32小,但是在转化为16进制的时候,也是需要有8位的宽度开能放下。不知道8086CPU听说过没,这是一个16位CPU,他的内存寻址只有1MB大小,所以其内存最大就是FFFFF了。以上扯得有点远,你随便看看就是了。
以上你看完了应该能有一个对于地址的初步认识了吧,下面你要记得的就是如果需要提取一个数据的地址,那么就用&(地址符)加上数据名就可以了。
scanf()函数中的第一个参数在网上有一种比较好的叫法,叫做格式控制。其实就是一个字符串,然后将首地址传入函数处理就是了。那么下面我们说格式控制。格式控制主要还是依靠转义字符作参数其中常用的有%d(整形数据读取)%c(单个字符读取)%f(浮点数,包括double)%s(字符串),以下是演示函数:
代码在这里,你可以自己上机试一试:
#include
char c; float f; char s[10]; scanf(\ printf(\
getchar();//用于读取‘\\n’enter键的输入 scanf(\ printf(\ scanf(\ printf(\
scanf(\ printf(\ system(\ return(0); }
虽然有点乱,但相信你还是能看懂的。这里需要注意的是在scanf(\后两句的getcahr()函数,这个是用于截取’\\n’的,不然将会被下面的scanf(“%c”,&c);截取读入,导致我们所不希望出现的结果。最后的那个字符串的读入需要注意的是字符串名就是字符串的首地址,这个比较特殊,所以不需要用地址符&了。
下面就是getchar()了。他和purchar,puts,gets这些函数一样,都是系统提供的函数,下面详细介绍一下。
getchar()函数的使用方法很简单,功能也很有限。我们先看一下他的函数原型:
__CRT_INLINE int __cdecl getchar (void);
在这里你可以看到,getchar的函数原型中参数是void,所以getchar不需要参数。至于前面的类型就不用关心了,只要知道返回值是一个字符即可。下面是程序示例:
很简单吧,至于putchar(),就是简单输出一个字符,功能也比较有限,我很少用。这里putchar是需要参数的,参数可以是整形,也可以是字符类型,不过在函数声明里是一个int类型的参数,在这一点上需要小小注意一下。如果你带入一个整形的参数,那么输出的时候就会输出其对应的字符,以下的程序会演示效果: