取随机数
srand();
int num = rand();//这样执行多次都是一个相同的数
如果每次都不同要每次取一个种子
所以一般与时间连用
#include<time.h>
srand(time(NULL));//调用时间,NULL这里指默认时间
exit(0)//正常退出程序,非0就是不正常退出(闪退)
system 管理员
system(“pause”);暂停
system(“cls”);清屏
system(“color 4E”);修改背景及字体色
system(“shutdown\r\t180”);180秒后关机
内置函数补充 动态数组
malloc()动态内存分配 编译时没有内存 程序运行后再分配内存
#include<stdlib.h>
例:
#include<stdlib.h>
{
int * num;
nums=(int*)malloc(sizeof(int) * 5);//为前面的指针动态分配20个字节的空间
//而且元素是不确定的
scanf.........
free(num);//释放内存
}
calloc 与malloc类似
区别在于如果未给num里的空间赋值,calloc会默认为0,malloc是乱码
函数三要素
1:返回值类型
2:函数名
3:参数列表(有可能没有)
//计算圆面积的函数
void function();
int main()
{
function();//调用函数
}
void function()
{
double r , s;
printf("请输入......");
scanf("%lf",&r);
s=3.14*pow(r,2);
printf("%d",s);
}
如果函数用返回值,则必须用对应的类型来接收
return会终止函数并返回,可以返回空值
参数
形式参数:有类型,没有确定数值
实际参数:有类型,有确定数值
递归函数
函数自己调用自己叫递归函数
代码块
int main()
{
int num=9;
{
int num=90;
}
prinyf("%d",num);
}
结果是9
因为两个花括号的num并不是同一空间
int num1=9;
{
{int2=90;}
printf("%d",num1+num2);
}
此时会报错,因为未定义num2
而如果printf在里面则不会报错,所以小括号可以访问大括号,
反之不行
变量
一个变量在离开花括号时就被销毁了,这种变量称为自动变量
局部变量:例如函数中的变量,只在函数中起作用
全局变量:一旦定义就只作用于该文件,不可以跨文件
变量的储存类型
auto int型的默认储存类型 auto int num==int num
register 寄存器 速度更快
static 静态储存 与全局变量相似 只作用于定义的文件
extern 外部变量 作用于所有文件
函数与数组
在向函数传递数组时传递的是地址,而且函数无法返回一个数组
字符串
例:char name1[]={‘j’,‘k’,‘l’,\0};//没有\0就只是一个字符数组
char name2[]=“jkl”;//两者等价,而且大小都是4
双引号不是字符串的一部分
{
char words[50]="abc";
scanf("%s",words);
printf("%s",words);
}
结果是输入jkl,输出jkl
abc已经被覆盖
gets 逐字符输入
puts 逐字符输出
gets(words);//等价于scanf(“%s",words);
PS:gets无论多么长的字符串都能接收
fgets 头文件 string
从标准输入流中读取
例:fgets(words,10,stdin);
即无论输入多少,都只读取9个到words里,第10个是\n,没有\0了