1.scanf()函数的返回值

 

关于scanf返回值:scanf返回接收到的变量值的个数, scanf的返回值由参数决定。例如: 


scanf("%d%d", &a,&b);   


如果a和b都被成功读入,那么scanf的返回值就是2   

如果只有a被成功读入,返回值为1   

如果a和b都未被成功读入,返回值为0   

如果遇到错误或遇到end of file,返回值为EOF。且返回值为int型。

 


2.printf()函数的返回值

 

原理同scanf()函数的返回值,不同的是printf()函数返回一个int值,表示被打印的字符数。

例如分析下面这个程序结果:


#include <iostream>
#include <string.h>
#include <stdio.h>

using namespace std;

int main()
{
    int i = 43;
    printf("%d\n",printf("%d\n",printf("%d\n",i)));
    return 0;
}



结果为:


C语言/C++基础知识_字符串


i=43,先输出43;43为两个字符再加上'\n',一共三个字符,所以输出3;2和'\n'两个字符,所以输出2。



3.C++中的小数点表示


C++中小数点表示需要头文件#include <iomanip>

Cout<<fixed<<setprecision(2)<<x<<endl;



4.delay函数与Sleep函数


Sleep()函数: 第一个字母S必须大写,VC里用Sleep()这个函数替代了C语言中的delay()(头文件是dos.h)这个函数。 Sleep()函数头文件是#include ,和delay()用法一样,Sleep()里的参数是以毫秒为单位的。




5.memset()函数


函数原型:void *memset(void *s,int ch,size_t n);

作用就是把数组s中的元素以字节为单位进行填充,填充的数字为ch,返回的是指向s的指针。


比如:当我们定义char s[N];时,我们memset(s,1,sizeof(s)); 那么我们输出每一个s[i]答案会是1,但是如果我们定义int s[N];时,答案却是16843009,原因很简单,memset()函数是以字节为单位进行填充的,也就是说在int数组s中,因为int占4字节,那么就是00000001000000010000000100000001。


6.qsort()函数


当然qsort()函数是对指定的任何数组进行排序。头文件是stdlib.h

函数原型是:void qsort(void *s,size_t n,sizeof(s[0]),cmp);

第一个参数是参与排序的数组名,第二个参数是参与排序的元素个数,第三个参数是单个元素的大小,第四个参数就是比较函数。对于cmp函数,是这样定义的:

int cmp(void const *a,void const *b)
{
    return *(Node *)a - *(Node *)b;
}




7.strchr()和strstr()函数

char *strchr(char *str,char c)
函数功能:从字符串str中寻找字符character第一次出现的位置。

返回说明:返回指向第一次出现字符character位置的指针,如果没找到则返回NULL。

char *strstr(char *str1, char *str2);  
功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。
返回值:返回该位置的指针,如找不到,返回空指针。


8.itoa函数和atoi函数

itoa函数:

原 型:char *itoa(int value, char *string,int radix);                      
功 能:把一整数转换为字符串。
itoa函数有3个参数:第一个参数是要转换的数字,第二个参数是目标字符串,第三个参数是转移数字时所用的基数
返回值:指向num这个字符串的指针。

atoi函数:
原型: int atoi(const char *nptr);
功 能: 把字符串转换成整型数.
头文件: #include <stdlib.h>
名字来源:array to integer 的缩写.
函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。


9.sprintf函数的用法

在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf有用得多。
char* who = "I";
char* whom = "CSDN";
sprintf(s, "%s love %s.", who, whom); //产生:"I love CSDN. "
在printf中指定格式输出很重要:%04d代表输出4位,不足的加前导零。
 
10.atan2()函数
本函数返回的是一个范围为-PI~PI的角度,比如直线的两个端点坐标分别是A(x1,y1)和B(x2,y2)
那么,atan2(y2-y1,x2-x1)就表示直线AB与x轴正方向所成的角度大小,如果x2-x1=0,那么角度为90度。