C语言一/二维数组经典例题及解析

一、一维数组基本知识

基本格式:

数据类型  数组名[常量表达式];  eg.int a[5];  

格式要求:

常量表达式必须是整形常量(表达式)或字符常量(表达式),但不可为实型或变量也不可以为空。

注意事项:

  • 数组元素个数等于数组长度
  • 元素引用时从0开始
  • 赋值后面跟的是大括号
  • 数组不可整体赋值
  • 引用数组元素时,数组下标可以是变量
  • a[0]叫做该数组的首元素,a[n]叫做尾元素
  • 初始化时直接赋值可以使常量表达式为空
  • 赋值位数不可多余规定位数,但是可以少(未赋值默认为0)

二、一维数组经典例题讲解

1.攻擂法求最值

#include <stdio.h>
int main()
{
   
    int a[5],i,x=0;
    int max=a[0];    //首先定义a[0]为最大值
    for (i=0;i<5;i++)
    {
   
        printf("请输入第%d个值:\n",i+1);
        scanf("%d",&a[i]);
        if (a[i]>max)    /*利用循环依次和定义的最大值进行比较*/
        {
   				//若求最小值,将>改为<即可
            max=a[i];    //若大于则该值取代原先最大值,并且将新的最大值的下角标赋值给x
            x=i;
        }
    }
    printf("最大值为:%d\n",max);
    
    printf("最大值下角标为:%d\n",x);
}

运行结果:
在这里插入图片描述

2.一维数组的逆置

#include <stdio.h>
int main()
{
   
    int a[5]={
   1,2,3,4,5};
    int i,j,t;
    for (i=0,j=4;i<j;i++,j--)      //核心代码,作用为依次交换中间值两边的数值达到逆置的作用
    {
   
        t=a[i];a[i]=a[j];a[j]=t;     //利用第三变量实现指定数值的交换
    }
    printf("该数组的逆置为:\n");
    for (i=0;i<5;i++)            //输出语句
    {
   
        printf("%d",a[i]);
    }
}

运行结果:
在这里插入图片描述

3.循环左/右移动

循环右移:若该数组元素为1,2,3,4,5 经过循环右移后数组元素将会变成 5,1,2,3,4

#include <stdio.h>
int main()
{
   
    int a[5]={
   1,2,3,4,5};
    int i,k;
    k = a[4];      //因为最右值将会被覆盖,所以先赋值给第三方变量进行保存
    for (i=3;i>=0;i--)
    {
   
        a[i+1]=a[i];    //将所有值都向右移动一位
    }
    a[0] = k;          //再将刚才保存的数组尾元素赋值给首元素从而完成右移
    for (i=0;i<5;i++)
    {
                              
        printf("%d",a[i]);       //输出语句
    }
}

运行结果:
在这里插入图片描述

循环左移:若该数组元素为1,2,3,4,5 经过循环右移后数组元素将会变成 2,3,4,5,1

//向右移动 若该数组元素为1,2,3,4,5 经过循环右移后数组元素将会变成 2,3,4,5,1
#include <stdio.h>
int main()
{
   
    int a[5]={
   1,2,3,4,5};
    int i,k;
    k = a[0];         //因为最左值将会被覆盖,所以先赋值给第三方变量进行保存
    for (i=1;i<5;i++)
    {
   
        a[i-1]=a[i];     //将所有值都向左移动一位,需要注意覆盖方向
    } 
    a[4] = k;             //再将刚才保存的数组尾元素赋值给尾元素从而完成左移
    for (i=0;i<5;i++)
    {
   
        printf("%d",a[i]);
    }
}

运行结果:
在这里插入图片描述

4.查找数组元素(折半查找法)

前提:原数组条件元素必须是有序的(升序降序都可以),局限性特别大,但思想可以借鉴

//前提:原数组条件元素必须是有序的(升序降序都可以)
//局限性特别大,但思想可以借鉴
#include <stdio.h>
int main()
{
   
    int a[10]={
   1,2,3,4,5,6,7,8,9,10};
    int i=0,j=9,m,k=0
  • 65
    点赞
  • 495
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦同学学学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值