一维数组的定义:类型说明 数组名 【数组长度】。例如 int a【10】
其中a[0]一定是低地址,a[9]一定是高地址。``
#include <stdio.h>
int main()
{
#if 0
int a[10]; //定义有10个整形元素的数组,在内存里连续存储
int a[0]; //错误
int k;
int a[k] = {0};//数组的长度确定
#endif
//数组初始化
//int a[10] = {0,1,2,3,4,5,6,7,8,9};//对所有元素初始化
//int a[10] ; //未初始化的局部变量是垃圾值,未初始化的全局变量是0
//int a[10] = {0,1,2};//对部分元素初始化,未初始化的为0
//int a[] = {1,2,3,4,8,8};//可以不指定长度一定初始化
int a[10] = {0}; //对所有元素初始化为0
int i;
for(i = 0; i < sizeof(a)/sizeof(int);i++)
{
printf("%d\n",a[i]);
}
printf("%p\n",&a[0]);
printf("%p\n", a); //表示数组首元素地址,于&a[0]意义相同
printf("%p\n",&a); //表示整个数组地址
printf("%p\n",&a[0]+1);
printf("%p\n", a+1);
printf("%p\n",&a+1);
return 0;
}
其中&a[0]+1,a+1只加了一个元素地址,而&a+1加了整个数组地址
数组的冒泡排序:
#include <stdio.h>
#define SIZE 10
int main()
{
int a[SIZE] = {0};
int i,j,tmp;
for(i = 0 ; i < SIZE;i++)
{
scanf("%d", &a[i]);
}
for(i = 0 ; i<SIZE;i++)
{
for(j = 0 ; j < SIZE - i - 1; j++)
{
if(a[j] < a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
for(i = 0 ; i<SIZE;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
srand(time(NULL));
rank();
产生随机数;其中rank()%(a-b)+1+a表示产生a-b随机数`
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int flag[53] = {0};
int pork, i;
srand(time(NULL));//以当前时间作为随机数种子产生随机数,
如果NULL换成一个数,然产生随机数但一旦数确定,随机数相同
for(i = 0; i < 52; i++)
{
pork = rand() % 52 + 1;//产生一个随机数,后对52取余,值在0-51(rand%52)
while(flag[pork] == 1) //牌产生过了
{
pork = rand() % 52 + 1;//重新产生
}
flag[pork] = 1;
if(pork >= 1 && pork <=13)
{
printf("红桃%d ",pork);
}
else if(pork > 13 && pork < 27)
{
printf("黑桃%d ",pork - 13);
}
else if(pork > 26 && pork < 40)
{
printf("梅花%d ", pork - 26);
}
else
{
printf("方片%d ", pork - 39);
}
}
return 0;
}