C语言经典例题-5

1.交换数组

将数组A中的内容和数组B中的内容进行交换。(数组大小一样)

c 复制代码
#include <stdio.h>

void swap(int arr1[],int arr2[], int sz)
{
    int tmp = 0;
    for (int i = 0;i < sz;i++)
    {
        tmp = arr1[i];
        arr1[i] = arr2[i];
        arr2[i] = tmp;
    }
}

void print(int arr1[], int arr2[], int sz)
{
    for (int i = 0;i < sz;i++)
    {
        printf("%d ", arr1[i]);
    }
    printf("\n");
    for (int i = 0;i < sz;i++)
    {
        printf("%d ", arr2[i]);
    }
}

int main()
{
    int arr1[] = { 3,13,23,33,43,53,63,73,83,93 };
    int arr2[] = { 2,12,22,32,42,52,62,72,82,92 };
    int sz = sizeof(arr1) / sizeof(arr1[0]);
    swap(arr1, arr2, sz);
    print(arr1, arr2, sz);
    return 0;
}
2.统计二进制中1的个数

写一个函数返回参数二进制中1的个数。

如:15 0000 1111 4个1

c 复制代码
#include <stdio.h>

//int Number(int b)
//{
//    int count = 0;
//    while (b)
//    {
//        if (b % 2 == 1)
//        {
//            count++;
//        }
//        b = b / 2;
//    }
//    return count;
//}

int Number(int b)
{
    int count = 0;
    int i = 0;
    for (i = 0;i < 32;i++)
    {
        if(((b >> i) & 1 )== 1)
    {
        count++;
    }
    }
    return count;
}

int main()
{
    int a = -1;
    //10000000 00000000 00000000 00000001   原码
    //11111111 11111111 11111111 11111110   反码
    //11111111 11111111 11111111 11111111   补码
    int ret = Number(a);
    printf("%d\n", ret);
    return 0;
}
3.交换两个变量(不创建临时变量)

不允许创建临时变量,交换两个整数的内容

c 复制代码
#include <stdio.h>

int main()
{
    int a = 10;
    int b = 20;
    printf("%d %d\n", a, b);

    a = a ^ b;
    b = a ^ b;
    a = a ^ b;

    printf("%d %d\n",a, b);
    return 0;
}
4.打印菱形
c 复制代码
#include <stdio.h>

int main()
{
    int i = 0;
    int line = 0;
    scanf("%d", &line);
    for (i = 0; i < line; i++)
    {
        int j = 0;
        for (j = 0; j<line -1 - i; j++)
        {
            printf(" ");
        }
        for (j = 0; j < 2 * i + 1; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    for (i = 0; i < line - 1; i++)
    {
        int j = 0;
        for (j = 0; j <= i; j++)
        {
            printf(" ");
        }
        for (j = 0; j < 2 * (line - 1 - i) - 1; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
5.字符串左旋

题目内容:实现一个函数,可以左旋字符串中的k个字符。

例:

ABCD左旋一个字符得到BCDA

ABCD左旋两个字符得到CDAB

c 复制代码
#include <stdio.h>

void string_left_rotate(char* str, int k)
{
    int i = 0;
    int len = strlen(str);
    for (i = 0; i < k; i++)
    {
        char tmp = *str;
        int j = 0;
        for (j = 0; j < len - 1; j++)
        {
            *(str + j) = *(str + j + 1);
        }
        *(str + len - 1) = tmp;
    }
}

int main()
{
    char arr[] = "ABCD";
    int k = 1;

    string_left_rotate(arr, k);
    printf("%s\n", arr);
    return 0;
}
相关推荐
GG不是gg5 分钟前
排序算法之基础排序:冒泡,选择,插入排序详解
数据结构·算法·青少年编程·排序算法
随意起个昵称27 分钟前
【双指针】供暖器
算法
倒霉蛋小马31 分钟前
最小二乘法拟合直线,用线性回归法、梯度下降法实现
算法·最小二乘法·直线
codists1 小时前
《算法导论(第4版)》阅读笔记:p82-p82
算法
埃菲尔铁塔_CV算法1 小时前
深度学习驱动下的目标检测技术:原理、算法与应用创新
深度学习·算法·目标检测
float_com1 小时前
【背包dp-----分组背包】------(标准的分组背包【可以不装满的 最大价值】)
算法·动态规划
丶Darling.2 小时前
Day119 | 灵神 | 二叉树 | 二叉树的最近共公共祖先
数据结构·c++·算法·二叉树
思茂信息3 小时前
CST软件对OPERA&CST软件联合仿真汽车无线充电站对人体的影响
c语言·开发语言·人工智能·matlab·汽车·软件构建
L_cl3 小时前
【Python 算法零基础 3.递推】
算法
川川菜鸟3 小时前
2025长三角数学建模C题完整思路
c语言·开发语言·数学建模