#include <stdio.h>
//(1,2,3常量的分类)
//(复习)
//int main()
//{
//int num1=0;
//int num2=0;
//int s=0;
//scanf("%d%d",&num1,&num2);
//s=num1+num2;
//printf("s=%d\n",s);
//return 0;
//}
/*(1)
int main()
{
int num=4;
//3;字面常量 100; 3.14;//
const int num2=6;//const-常属性->修饰常变量
printf("%d\n",num);
printf("%d\n",num2);
return 0;
}*/
/*(2)
#define MAX 10//define定义的标识符常量
int main()
{
int arr[MAX]={0};
printf("%d\n",MAX);
return 0;
}*/
//(3)枚举常量(一一例举)
//性别:男女
//星期:1.2,3,4,5,6,7
//enum->枚举关键
/*enum Sex
{
MALE,
FEMALE
};
int main()
{
enum Sex s=FEMALE;
printf("%d\n",MALE);//male默认值为0
printf("%d\n",FEMALE);//female默认值为1(按先后顺序排列)
return 0;
}
*/
//(字符串+转义字符+注释)
//字符串类型->由双引号引起的一串字符"abcdef";/"hello bit";/"";(空字符串)
/*int main()
{
char arr1[] ="abc";//"abc"--'a''b''c''\0'->'\0'是字符串的结束标志(不算内容)
//char arr2[] ={'a','b','c'};->结果为abc隐bc->原因:结尾没有结束标志->出现随机现象
//printf("%d\n",strlen(arr2));arr2->长度为随机值
char arr2[] ={'a','b','c',0};
printf("%s\n",arr1);
printf("%s\n",arr2);
printf("%d\n",strlen(arr1));//strlen->计算字符串长度
return 0;
}*/
//转义字符->转变原来意思->一套转义字符为一个字符
int main()
{
printf("abc\n");//(\n->将n原意转变为换行)
printf("c:\test\32\test.c");//(\t->相当于tab键:水平制表)
printf("c:\\test\\32\\test.c");//(\\->反斜杠防止转义)
return 0;
}
#include <stdio.h>
/*int main()
{
printf("%c\n",'\x61');//\xdd(作为十六进制->转变为十进制对应ASCII表中对应的值)
return 0;
}*/
//选择语句
/*int main()
{
int input =0;
scanf("%d",&input);
printf("加入比特\n");
printf("你要好好学习吗?(1/0)>;");
if (input == 1)
printf("好工作\n");
else
printf("卖红薯\n");
return 0;
}*/
//循环语句(今天学while循环)
/*int main()
{
int line =0;
printf("加入比特\n");
while(line<20000)
{
printf("敲一行代码:%d\n",line);
line++;
}
if(line>=20000)
printf("好工作\n");
return 0;
}*/
//函数(创造的方法。例如:Add)
//库函数,自定义函数
/*int Add(int x,int y)
{
int z=x+y;
return z;
}//实现加法的函数
int main()
{
int num1=0;
int num2=0;
int a =100;
int b =200;
int sum=0;
int s=0;
scanf("%d%d",&num1,&num2);
s=num1+num2;
printf("s=%d\n",s);
sum=Add(a,b);
printf("sum=%d\n",sum);
return 0;
}*/
//数组:一组相同类型元素的集合
/*int main()
{
//int a=1;
//int b=2;
//int c=3;
int arr[10] ={1,2,3,4,5,6,7,8,9,10};//定义一个存放10个整数数字的数组
//数组中第一个数对应下标为0,第二个为1...最大的位n-1;
//char ch[20]; float arr2[5];
//printf("%d\n",arr[5]);//[x]->x为下标
int i=0;
while(i<10)
{
printf("%d\n",arr[i]);
i++;
}
return 0;
}*/
//操作符(+,-,*,/(取商),%(取余))
//移(二进制)位操作符 <<左移 >>右移
/*int main()
{
int a=1;//整型1占4个字节=32个比特位(00000000000000000000000000000001)
int b = a<<3;//(00000000000000000000000000000001)向左平移3个二进制位,后面用零补齐(00000000000000000000000000001000)对应十进制8
printf("%d\n",a);
printf("%d\n",b);
return 0;
}*/
// 位操作(二进制)
//& 按位与(有零就是零,全一才是一)
//| 按位或(有一就是一,全零才是零)
//- 按位非
//赋值
/*int main()
{
int a=10;
a=20;
a=a+10;//方法一(复合赋值符)
a+=10;//方法二(等价于方法一)
return 0;
}*/
//单目操作符(!,-,+,&,sizeof())
//双目操作符(对两个数进行操作,单三亦是同理)
//三目操作符
#include <stdio.h>
/*//万用
int main()
{
return 0;
}
*/
//(两个数比较大小方法一:不用函数)
/*int main()
{
int num=19;
int num2=29;
if(num>num2)
printf("较大值为:%d\n",num);
else
printf("较大值为:%d\n",num2);
//字符串的结束标志:'\0'->转义0
return 0;
}*/
//(两个数比较大小方法二:使用函数)
/*int Max(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int main()
{
int num1=10;
int num2=20;
int max=0;
max=Max(num1,num2);
printf("max=%d\n",max);
return 0;
}*/
/*
int main()
{
int a=0;//int->4个字节,32bit位
int b=~a;//~-按(2进制)位取反(b是有符号的整型)
//00000000000000000000000000000000
//11111111111111111111111111111111(补码)(补码->反码:减1)
//11111111111111111111111111111110(反码)(反码->原码:符号位不变,其他位按位取反)
//10000000000000000000000000000001(原码)(左边第一位为1符号为负值,左边第一位为0符号为正值)
//负数在内存中存储时,存储的是二进制的补码
printf("%d\n",b);//(结果为-1 ;原码,反码,补码)(使用时打印的是这个数的原码)
return 0;
}
*/
/*
int main()
{
int a=10;
int b=a++;//后置加加:b先使用10,然后a再自增
int c=++a;//前置加加:a先加加,c再使用
printf("a=%d\n b=%d\n c=%d\n",a,b,c);
return 0;
}
*/
//强制类型转换
/*int main()
{
int a=(int)3.14//3.14为double类型,转为int可能数据丢失,因此强制转换
return 0;
}*/
/*
int main()
{ //真——非0
//假——0
//&&——逻辑与(全真为真)
//||——逻辑或(有一真为真)
int a=0;
int b=5;
int c=a&&b;
int d=a||b;
printf("c=%d\nd=%d\n",c,d);
return 0;
}
*/
//条件操作符exp1?exp2:exp3;(三者为三个表达式->当exp1为真时,执行exp2;当exp1为假时,执行exp3)
int main()
{
int a=100;
int b=20;
int max=0;
max =(a>b?a:b);
if (a>b)
max=a;
else
max=b;
printf("max=%d\n",max);
return 0;
}
//逗号表达式
#include <stdio.h>
/*
int main()
{
return 0;
}
*/
/*
int main()
{
register int a=10;//register建议把a定义成寄存器变量
int b=10;//int定义的变量是有符号的(signed int的缩写)
unsigned int num=1;//无符号变量(可无视符号)
//struct ——结构体关键字
//union——联合体
//typedef——类型(重)定义
typeder unsigned int u_int;
unsigned int num=29;
u_int num2=22;
return 0;
}
*/
//static修饰局部变量时,局部变量的生命周期变长,出去不被销毁
//static修饰全局变量时,改变了作用域,只能在源文件内部使用
/*
void test()
{
static int a=1;//static——a变为静态的局部变量
a++;
printf("a=%d\n",a);//结果为:2,3,4,5,6
}
int main()
{
int i=0;
while (i<5)
{
test();
i++;
}
return 0;
}
*/
/*
//#define MAX 100
//#define //可以定义宏——带参数
Max(int x,int y) //函数的定义的方式
{
if(x>y)
return x;
else
return y;
}
#define MAX(X,Y) (X>Y?X:Y)//宏的定义方式
int main()
{
int a=16;
int b=23;
int max=Max(a,b);
printf("max=%d\n",max);
return 0;
}
*/
int main()
{
int a=10;
int* p=&a;//有一种变量是用来存放地址的——指针变量
printf("%p\n",&a);//打印出的地址为16进制
printf("%p\n",p);
*p=20;//*——解引用:找到p中存放的地址对应的变量,然后可以进行操作
printf("a=%d\n",a);
return 0;
}
#include <stdio.h>
/*
int main()
{
double d=3.14;
double* pd=&d;
*pd=5.2;
printf("%lf\n",d);
printf("%d\n",sizeof(pd));//32_4;64_8
return 0;
}
*/
//结构体:我们自己创造出来的类型
//struct 结构体关键字
/*
struct Book//创建一个结构体类型
{
char name[20];//名字:C语言设计
short price;//价格55
};//;不可少
int main()
{
struct Book b1={"C语言程序设计",55};
//利用利用结构体类型——创建一个该类型的结构体变量
struct Book* pb=&b1;
printf("书名:%s\n",b1.name);
printf("价格:%d元\n",b1.price);
printf("%s\n",pb->name);//指针在结构体里的应用
printf("%d\n",pb->price);
b1.price=15;
printf("修改后的价格为:%d元\n",b1.price);
return 0;
}
*/