Bootstrap

##笔记day06-C语言基础:随机数、一维、二维数组、字符数组

day07笔记

1)rand 生成随机数

1rand()随机函数
头文件:
    #include <stdlib.h>
函数原型:
    int rand(void);
函数功能:
    生成大于等于0的随机整数
参数:
    void
返回值:
    生成的随机整数
    
2)srand 更新随机数种子(srand()函数用于给rand()函数设定种子)
头文件:
    #include <stdlib.h>
    #include <time.h>
    //使用 <time.h> 头文件中的 time() 函数即可得到当前的时间(精确到秒)
函数原型:
    void srand(unsigned int seed);
	//它需要一个 unsigned int 类型的参数。在实际开发中,我们可以用时间作为参数,只要每次播种的时间不同,那么生成的种子就不同,最终的随机数也就不同。
函数功能:
    播种随机数种子
参数:
    seed
返回值:
    void
eg:
	int main()
{
    strand(time(NUll));//生成随机数种子,并随系统时间进行更新time(NULL)
    int a = rand()%100;//rand生成随机数,并设置随机数的范围0~99
    printf("%d\n",a);
    return 0;
}

七、数组

存储大量同类型的数据

1.一维数组

1)数组的定义
   <存储类型><数据类型>数组名[数组元素个数]
    存储类型:auto register static extern
    数据类型:char short int long float double 自定义类型
    数组名:标识符,满足命名规则
    []:在定义数组时,[]中是数组大小
    元素个数:该数组中最大存储的元素个数
    int arr [10];//定义了能够存储10个整形数据的整型数组
	sizeof(arr);//sizeof求数组的空间大小 40字节
2)数组的初始化
    1.完全初始化
    int arr[5] = {1,2,3,4,5};
    2.非完全初始化
        //非完全初始化,未初始化的元素值为0
    int arr[5] = {1,2,3};//按照顺序从第一个元素开始赋值
	int arr[5] = {[1] = 2,[3] = 4};//对第2个和第4个元素赋值
    int arr[5] = {0};
	int arr[] = {1,2,3};
3)数组元素的访问
    数组名[下标]:
	下标:0 ~ 最大元素个数-1
        int arr[10];
		//访问数组中的最后一个元素,arr[9]
	eg:打印数组的元素(循环)
        int arr[5]={1,2,3,4,5};
		int len = sizeof(arr)/sizeof(arr[0]);//求数组元素个数
        int i = 0;
        while(i<len){
        printf("%d\n",arr[i]);
        i++;}
4)可变数组
eg1:键盘上输入数组存储的元素个数
    int main(int argc, char *argv[])
{ 
    int n = 0;
    scanf("%d",&n);
    int arr[n];
    for(int i = 0; i < n; i++){
        arr[i] = i + 1;
    }
    for(int i = 0; i< n; i++){
        printf("%d ",arr[i]);
    }
    return 0;
} 
eg2:从键盘上输入和打印数组元素
    int main(int argc, char *argv[])
{ 
    int n;
    int arr[n];

    scanf("%d",&n);

    for(int i = 0; i < n; i++){
        scanf("%d",&arr[i]);   
    }
    for(int i = 0; i< n; i++){
        printf("%d ",arr[i]);
    }
    return 0;
}
eg3:求数组元素最大值以及下标
int main(int argc, char *argv[])
{ 
    int n;
    int arr[n];
    int max = 0;
    int index;

    scanf("%d",&n);

    for(int i = 0; i < n; i++){
        scanf("%d",&arr[i]);
    }
    for(int i = 0; i < n; i++){
        if(max < arr[i]){
            max = arr[i];
            index = i;
        }
    }
    printf("最大值为:%d,下标为:%d\n",max,index);

    return 0;
} 

2.二维数组


3.字符数组

char str[6] = {'h','e','l','l','o'};
char str[6] = {"hello"};
char str[6] = "hello";
eg:
int main(int argc, char *argv[])
{ 
    char str[5] = "hello";
    char str1[5] = "world";
    char str2[6] = "hello";

    printf("str = %s\n",str);

    return 0;
} 
结果:helloworldhello
     str数组没有预留'\0'的空间
;