基本算法-数组、字符串、二维数组

文章介绍了如何使用C语言通过宏定义和for循环实现二维数组的最大值查找、数组倒转显示以及判断输入字符串是否为回文的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、二维数组:

自定义一个二维数组,然后输出最大值和对应索引值,

思路:

1、采用宏定义,确定一个二维数组的行和列;

2、使用双重for循环进行遍历;

3、初始化最值的行和列的索引值;

#define M 3
#define N 3

代码示例(仅供参考);

int main()
 {
    int i;
    int j;
    int max = 0;
    int index_max_i = 0;
    int index_max_j = 0;
    int arr[N][M] = {23,46,646,66,656,6,6,454,56};
     for ( i = 0; i < N; ++i)
     {
         for ( j = 0; j < M; ++j)
         {
             if(max < arr[i][j])
             {
                max = arr[i][j];
                 index_max_i = i;
                 index_max_j = j;
             }
         }
     }
     printf("arr_max=%d\n",max);
     printf("arr[%d][%d]\n",index_max_i,index_max_j);
     return 0;
}
2、把一个二维数组倒转显示。
1 2 3 4
5 6 7 8
 ==> 5 1   10  00
     6 2   11  01
     7 3   12  02
     8 4   13  03

思路:

注意题目,是倒转显示,并不是吧数组到=倒转,因此只要打印出格式就行了;

1、定义行和列为M,N,用宏定义确定数组长度

2、根据题目信息,需要先遍历列,再遍历行;

3、遍历过程中列不会发生变化,由:5 1 10 00 ->00  10 可以看出0变1,1变0,即在循环中可以用1-j表示

代码示例:(仅供参考):

#define M 2
#define N 4
    int main(){
        int temp;
        int i;
        int j;
        int arr[M][N] = {1,2,3,4,5,6,7,8,};
        for (i = 0; i < N; ++i)
        {
            for (j = 0; j < M; ++j)
            {
                printf("%4d ",arr[1-j][i]);
            }
            printf("\n");
        }
        return 0;
    }

2、符串数组

1、键盘输入一个字符串,判定是否为回文字符串;

思路:

1)使用gets函数输入一个字符串数组

2)用宏定义确定一个数组长度

#define MAX 20

3)采用while循环得到字符串的长度,得到 int len

4)定义一个flag作为条件判定

5)采用for循环,比较第i个字符和第len-1-i个

代码示例:(仅供参考)

 int main()
    {
        char string[MAX];
        gets(string);
        int len = 0;
        int i = 0;
        int flag = 0; //shi
        while (string[i] != '\0')
        {
            len++;
            i++;
        }
        printf("size=%d\n", strlen(string) );
        for  (i = 0; i < len/2 ; ++i)
        {
            if(string[i] != string[len-1-i])
            {
                flag = 1;
                break;
            }
        }
        if(0 == flag)
        {
            printf("字符串是回文字符串\n");
        }
        else
        {
            printf("不是回文字符串,,\n");
        }

    }

2、把一个字符串倒序输出。例:abcdef -->fedcba

思路:

1)采用gets函数输入一个字符串,用宏定义输入字符串数组长度

#define MAX 20

2)采用while循环得到字符串的长度,得到 int len

3)仅仅为反向输出,因此只要反向遍历字符串中的单个字符一一输出即可;

 int main()
    {
        char str[MAX];
        int i = 0;
        int len = 0;
        printf("请输入字符串:\n");
        gets(str);


        while (str[i] != '\0')
        {
            len++;
            i++;
        }
        for (int i = len-1; i >= 0; --i) {
            printf("%c",str[i]);
        }

        return 0;
    }

注:代码仅供参考,学习过程还是需要自己思考为主;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值