首页 > 其他分享 >【C语言从入门到入土】第四章数组

【C语言从入门到入土】第四章数组

时间:2024-06-09 20:32:16浏览次数:23  
标签:初始化 12 入门 int C语言 入土 数组 printf array

第四章 数组

———————-数组的引入

你所有的压力,都是因为你太想要了,你所有的痛苦,都是因为你太较真了。有些事不能尽你意,就是在提醒你改转弯了。

如果事事都如意,那就不叫生活了,珍惜所有不期而遇,看淡所有的不辞而别。

文章目录


在这里插入图片描述

4.1如何定义一个数组

1.相同的数据类型,,,关于中括号[ ]的解释
  • 定义的时候表示数组中元素的总个数,int a[10];
  • 下标法表示数组中的某个元素,从0开始计数

在这里插入图片描述

2.数组如何遍历
  • 下标法访问
  • 结合循环控制语句
  • 数组的地址为连续的
/****************************
*****第一步;先给数组赋值******
**第二步;把数组的值给打印出来**
*****过程中用到的是for循环****/
#include<stdio.h>
int main(){
    int a[10];
    int b;
    /*1.给数组赋值*/
    for(b=0;b<=9;b++)//一个数组里面有十个,从0开始,所以到9一共是10个,,刚好
    {
      a[b]=100+b;  
    }
    puts("赋值完成");
    for(b=0;b<=9;b++){
        puts("a[b]=%d",a[b]);这个有坑,,puts只能输出纯字符
        printf("a[b]=%d\n",a[b]);//这个也有坑,b是输出不出来
		printf("a[%d]=%d\n",b,a[b]);//这样可以输出,可以看下面运行结果
    }
    puts("done");
    
    return 0;
}

运行结果,,,好好看好好学

在这里插入图片描述

3.初始化的方式

1.全部赋值,,,数很多的时候会很麻烦

在这里插入图片描述

2.部分赋值,,优先向前排,其余剩下的赋值为0

在这里插入图片描述

3.初始化为0

在这里插入图片描述

4.写法,由数组元素的个数来确定数组的长度

在这里插入图片描述

4.数组的各种初始化方式以及數組的大小计算(代码)

sizeof() 关键字,,可以计算括号里面数据的内存空间大小!!!!!注意他不是函数,面试可能会问

#include<stdio.h>
int main()
{
    int array1[5]={1,2,3,4,5};	//1.全部赋值
    int array2[5]={1,2,};		//2.部分赋值
    int array3[5]={0};			//3.全部赋值为0
    int log;
    log =sizeof(array1)/sizeof(array1[5]);	//数组的个数,或者长度= 数组的总大小/一个数组的大小
    printf("array:%d\n",log);
     for(int a=0;a<5;a++){
         printf("地址%p,,数字%d\n",&array1[a],array1[a]);
     }
    return 0;
}

在这里插入图片描述

4.2编程案例

1.数组初始化及逆序输出

在这里插入图片描述

#include <stdio.h>
int main()
{
	int array[10];
    for(int a =0;a<=9;a++){	//初始化数组
        array[a] =a;
    }
    for(int a =0;a<=9;a++){//前面定义的变量到后面就不能用了
        printf("正常顺序为%d  ",array[a]);
    }
    printf("\n");
    for(int c =9;c>=0;c--){
        printf("逆序输出为%d ",array[c]);
        
    }
    
    return 0;
}

在这里插入图片描述

2.斐波那契数列

在这里插入图片描述

#include<stdio.h>
int main(){
    int array[30];
    int array[0]=0;	//赋值不需要定义
    int array[1]=1;
    for(int a=3;a<=30;a++){	//最好做一个数组长度的计算
        array[a]=array[a-1]+array[a-2];//应该是2,,其实2已经是第三个数了
    }
    for(int a=0;a<=30;a++){
        printf("%d  ",array[a]);
    }
    return 0;
}

报错了我滴宝,,,!!注意了

在这里插入图片描述

再来一次

#include<stdio.h>
int main(){
    int array[30];
    array[0]=0;//不需要加数据类型
    array[1]=1;
    //int arraysize =sizeof(array[])/sizeof(array[0]);//错误写法
    int arraysize =sizeof(array)/sizeof(array[0]);
    for(int a=2;a<=arraysize;a++){	
        array[a]=array[a-1]+array[a-2];
    }
    for(int a=0;a<=30;a++){
        printf("%d  ",array[a]);
    }
    return 0;
}

在这里插入图片描述

3.冒泡排序法,面试要考滴

现在来分析一下,,有这么四个数,12,8,13,9————-从小到大排列

这个数组的长度为4,数组从0开始,所以正好到3

1.首先我们来进行第一轮第一次比较,把 i 设为行(轮数),,j 设为列(比较的次数),,

12跟8进行比较,得到的结果为,,,12跟后面的13比较,得到的结果为,,,13跟9开始比较,得到一个结果,,此刻,最大的一个数冒出水面

2.开始第二轮第一次比较,此时只剩下3个数 8,12,9,,,8跟12开始比较,得出8,12,9,,,然后第二次比较12跟9,得出8,9,12

最大的一个数,12冒出水面

3.开始第三轮第一次比较,此刻为8,9两个数,比较得出,8,9,,9是最大数

i j0123
08,12,13,98,12,13,98,12,9,1313
18,12,98,9,1212
28,99
3

分析上述

通过以此,我们不难看出,原理其实就是,第一个数跟第二个比较,如果满足条件就不需要交换,如果不满足就需要交换,然后第二个数跟第三个比较,第三个跟第四个比较,以此类推

那么,我们分析他的轮数,一共有四个数,比较了三轮,四(数字的个数)-1 = 三轮;;;现在看次数,第一轮比较了3次;第二轮2次;第三次1次,次数依次在递减,这个次数跟轮数有什么关系呢??

3=4(数组长度)-1(猜出来的数) 2=4 - 2(多出来一个1哪里来的?) 1=4-3(又多出来一个2?)什么规律??????????轮数为i < len-1,,,那次数呢?,,j < len - 1-x,这个x与轮数有什么关系,,,j < len - 1 -i;

/*从小到大排序*/
#include <stdio.h>
int main(){
    int array[]={12,8,13,9};
    int tmp;
    int len =sizeof(array)/sizeof(array[0]);
    for(int i=0;i<len-1;i++)
    {
        for(int j =0;j<len-1-i;j++)
        {
            if(array[j]>array[j+1])
            {
                tmp = array[j+1];
                array[j+1] = array[j];
                array[j]=tmp;
            }   
        }
  }
    /*给个反馈*/
      for(int a =0;a<len;a++)
  {
	    printf("%d  ",array[a]);
  }

return 0;
}
4.简单排序法,面试题

怎么比呢?永远都是第一个数依次跟第234…后面的数相比较,,如果满足就换,不满足就不动,反正永远是第一个跟后面的比较,然后所有的都比较完之后,开始第二个数依次跟后面的比较,,,,以此类推,最后排完整个

还是四个数,8 12 13 9,,从大到小排序

i j0123
012 8 13 912 8 99 813
113 8 12 912 8 912
213 8 12 99
3

我们由现象去分析本质,,去推导出一个可以适用于所有数排序的规律

二维数组

1.什么时候要用二维数组

在这里插入图片描述

在这里插入图片描述

2.怎么样定义一个二维数组

在这里插入图片描述

在这里插入图片描述

3.二维数组的初始化
3.1.按行列的初始化

在这里插入图片描述

3.2.没明确行列,类似一维数组

在这里插入图片描述

3.3.部分赋初值

1.在这里插入图片描述

2.在这里插入图片描述

3.在这里插入图片描述

4.可以不写行,但是一定要写列

在这里插入图片描述

4.二维数组的遍历

在这里插入图片描述


标签:初始化,12,入门,int,C语言,入土,数组,printf,array
From: https://blog.csdn.net/v13111329954/article/details/139511120

相关文章

  • c语言基础篇A
    A1.程序和程序设计语言程序程序=算法+数据结构+程序设计方法+语言工具和环境数据结构:数据的类型和数据的组织形式算法:对数据操作的方法和步骤程序设计语言的种类第一代语言:机器语言第二代语言:汇编语言第三代语言:高级语言——面向过程语言——面向对象语言第四代语言:非......
  • c语言基础篇B
    B1.数据的输入与输出c语言本身不提供输入输出语句,输入和输出操作是由c函数库中的函数来实现的在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中include"stdio.h"或者includeB2.printf()函数(格式输出函数)函数作用:输出若干个任意类型的数......
  • 开源模型应用落地-LangSmith试炼-入门初体验-Prompts(六)
    一、前言  在许多应用程序中,特别是在大型语言模型(LLM)应用程序中,收集用户反馈以了解应用程序在实际场景中的表现是非常重要的。  本章是LangSmith系列最后一篇文章,通过学习Prompts功能,用户可以上传、浏览、检索和管理提示(Prompt)。这个Prompts功能简化了提示(Prompt)的......
  • 【30天精通Prometheus:一站式监控实战指南】第16天:snmp_exporter从入门到实战:安装、配
    亲爱的读者们......
  • 【JavaWeb入门】了解HTTP
    HTTP协议简介超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wi......
  • 零基础非科班也能掌握的C语言知识19 动态内存管理
    动态内存管理1.为什么要有动态内存分配2.malloc和free2.1malloc2.2free3.calloc和realloc3.1calloc3.2realloc4.常见的动态内存的错误4.1对NULL指针的解引用操作4.2对动态开辟空间的越界访问4.3对非动态内存开辟的空间free4.4使用free释放⼀块动态开辟内存的⼀部分4......
  • STM32单片机开发入门(四) 示波器的介绍及使用方法
    文章目录一.概要二.探头补偿校准三.电压测量四.波形的测量与分析五.串口通讯波形测量解析六.触发捕捉瞬时信号七.小结一.概要示波器主要用于观察电信号的波形变化。在显示屏上,工程师可以直接看到电信号的全过程,从而进行定性和定量的分析。这种仪器通常用于显示电压......
  • 实验6 C语言结构体、枚举应用编程
    #defineN3//运行程序输入测试时,可以把这个数组改小一些输入测试#include<stdlib.h>typedefstructstudent{intid;//学号charname[20];//姓名charsubject[20];//考试科目doubleperf;//平时成绩......
  • 数据结构严蔚敏版精简版-线性表以及c语言代码实现
    线性表、栈、队列、串和数组都属于线性结构。线性结构的基本特点是除第一个元素无直接前驱,最后一个元素无直接后继之外,其他每个数据元素都有一个前驱和后继。1 线性表的定义和特点如此类由n(n大于等于0)个数据特性相同的元素构成的有限序列称为线性表。线性表中元素的个数n定......
  • C# WPF入门学习主线篇(十六)—— Grid布局容器
    C#WPF入门学习主线篇(十六)——Grid布局容器欢迎来到C#WPF入门学习系列的第十六篇。在前几篇文章中,我们已经探讨了Canvas、StackPanel、WrapPanel和DockPanel布局容器及其使用方法。本篇博客将介绍另一种功能强大且灵活的布局容器——Grid。通过本文,您将学习如何使用......