全局变量 保存在全局变量存储区,占用静态储存单元,程序结束才会释放(关掉程序才释放)
局部变量 保存在栈中,只有在函数被调用时才动态分布空间,调用结束,变量空间释放(在程序运行过程中就能释放)
1、全局变量 在这个文件中可以使用,但只能在其定义后的函数
2、局部变量 函数内部变量,函数内部可以使用
块作用域变量,整个块内部可以使用
3、静态变量 使用关键字static修饰,变量值一直保留在内存中,不因作用域而销毁
4 寄存器变量 : register int b=10; 响应更快
5 宏定义 # define SIZE 100 全文件中SIZE都为100,且不可重新赋值,当想更改文件中SIZE的值时只需更改宏定义中的值,全文件中就都会跟着改变,较为方便
数据类型转换
1、 +、-、*、/ 运算的两个数中有一个为float型或者double型,结果就是double型
2、 int型和float或double 型运算,先将int型和float型转为double型再运算
3、整型有符号转为无符号再运算
(系统总是向着精度更高的数据类型转换)
float型有效数字6-7位 意思是包括整数部分在内只有6-7位, 如654321.12只有小数点后一 匹配格式 %f 位是可靠的
double型有效数字15位 同理,包括整数在内15位
匹配格式%lf 或%e 科学计数法2e003,%.3f 调节小数点后位数
一个字=两字节 f=四位 因为f=15=1 1 1 1
作业
1、输入两个数计算最大公约数和最小公倍数
#include <stdio.h>
int main()
{
int m,n,i=1,l=0,p=1;
printf("请输入两个正整数,以空格隔开\n");
scanf("%d %d", &m,&n);
for(i=1;i<m&&i<n;i++)
{
if(m%i==0&&n%i==0)
l=i;
}
printf("最大公约数是%d\n", l);
for(p=1;;p++)
{
if(p%m==0&&p%n==0)
break;
}
printf("最小公倍数是%d\n", p);
return 0;
}
2、1 2 3 4能组成多少个没有重复数字的三位数
#include <stdio.h>
int main()
{
int i,j,k,num,count=0;
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
for(k=1;k<5;k++)
if(i!=j&&i!=k&&j!=k)
{
printf("%d%d%d\n", i,j,k);
count++;
}
}
printf("共有%d个\n", count);
return 0;
}