/*
常见的运算符
+ - *
/ 整除 a = 1/2 a == 0
% 取余 a = 1%2 a == 1%2
= 赋值
a += 1 a = a+1;
a -= 2
a *= 2
a /= 2
a++; ++在变量后面表示先赋值,后运算;
++a; ++在变量后面表示先运算,后赋值;
a>b?a:b 判断a>b, 如果为真,输出啊a,如果为假,输出b
#define ADD(a,b) ((a)+(b)) //宏定义,简单的替换
&& || !
!1--------0
!0--------1
*/
#include<stdio.h>
int main()
{
int a, b, c;
a = 0;
b = 0;
c = 0;
b = a++;//等效于 b = a; a = a+1;
c = ++a;//a = a+1 c = a;
printf("a = %d b = %d c = %d\n", a, b, c); //a = 2 b = 0 c = 2
return 0;
}
宏定义
#define MIN 10 //宏定义 将10替换成MIN
#define ADD(a,b) (a+b)
int main()
{
int c;
c = ADD(3,4)*ADD(5,6);
printf("c = %d\n", c);//C = 77
printf("%d\n", MIN);//10
}
int main()
{
int a;
scanf("%d", &a);
if(!(a>0)) //等效于a<=0
{
printf("<=0\n");
}
else
{
printf(">0\n");
}
return 0;
}
int main()
{
int a=1, b=2, c=3, d=4, e=5;
int add;
if((a+b>0) && (a-b<0) || (a%2==0)) //1 &&1 1 || 1 不确定优先级就加()
}
数组 int arr[100];
arr 是数组名 -------表示数组的首地址,表示数组第一个数的首地址
数组的初始化:
1.全部初始化 int arr[5]={1, 2, 3, 4, 5};
2.部分初始化 int arr[5]={1,2,3}; 如果数组部分初始化,未赋值的部分默认初始化为0
3.只定义,不初始化 int arr[5]; 直接打印的话会出现5个很大或者很小的随机数
4.未指定数组大小 int arr[]; 不允许定义未知长度大小的数组。
5.未指定数组长度,直接初始化
int arr[5]={0};
int arr[]={1, 2, 3, 4, 5}; 数组的初始化 在定义的时候直接初始化,可以不指定数组的长度,
系统可以根据你初始化的个数来判断数组的长度。
强调: 我的数组长度为5,意思就是,我存五个整形数.
int main()
{
int i = 0;
int arr[5] = {0};
for(i=0;i<5;i++)
{
scanf("%d", &arr[i]);
}
for(i=0; i<5; i++)
{
printf("%d\n", arr[i]);
}
printf("%p %p %p\n",arr, &arr[0], &arr[1]);//0xbfdaafcc 0xbfdaafcc 0xbfdaafd0 打印地址
return 0;
}
假设我们班有十个人,现在对他们c语言进行考试,将考试结果付给保存在数组中。其中,数组的下标对应的就是他们的学号,他们的成绩分别为90,91,82,45,66,.....我发现有两个同学的成绩录入反了,分别是第三个和第六个。将它修改之后录入到终端上。
int main()
{
int i;
int temp;
int stu[10]={0};
printf("please input student test:\n");
for(i=0; i<10; i++)
{
scanf("%d", &stu[i]);
}
temp = stu[2];
stu[2] = stu[5];
stu[5] = temp;
for (i=0; i<10; i++)
{
printf("%d\n", stu[i]);
}
return 0;
}