0506C语言练习:字符串A中删除字符串B中所有相同字母等

字符串A中删除字符串B中所有相同字母(无论大小写)
/**
 * @func:	字符串A中删除字符串B中所有相同字母(无论大小写)
 * @date 2024/05/06
 * @version 1.0 :版本
 * CopyRight (c)  2023-2024   [email protected]   All Right Reseverd
 */
void repeat(char *a, const char *b)
{
  char *tmp = a;   // 用来写入新字符串的指针
  char *temp_b = b; // 用来遍历b字符串的临时变量
  while (*a)
  {
int found = 0; // 标记是否找到了匹配的字符,如果找到,赋值为1,并退出循环;如果没找到则进行赋值操作
for (temp_b = b; *temp_b; temp_b++)
{
if (*temp_b == *a ||
((*temp_b >= 'A' && *temp_b <= 'Z' && *a >= 'a' && *a <= 'z' && *temp_b + 32 == *a) ||
(*temp_b >= 'a' && *temp_b <= 'z' && *a >= 'A' && *a <= 'Z' && *temp_b - 32 == *a)))
// 判断条件,当遇到b的字符串为字母时,且其大/小写与a字符串相同时进行操作,与方案1相比,进行了优化
{
found = 1; // 找到了匹配的字符
 break;   // 退出本循环,忽略遇到的相同字符
}
}
if (!found)
{
*tmp++ = *a; // 如果没有找到匹配,即没有重复的字符,则复制字符
}
a++; // 总是移动 a 指针到下一个字符
}
*tmp = '\0'; // 设置字符串的末尾为 '\0'
}

int main()
{
  char a[] = "helloworld"; // 使用字符数组而不是字符串指针,否则无法修改
  const char *b = "lo";
  repeat(a, b);
  printf("%s\n", a); // 直接打印字符串
  return 0;
}

统计二维数组 int w【N】【N】周边元素值的平均值,但要注意的是不要重复计算四个角上的元素值。

/**
 * @func:计算二维数组的周边元素平均值
 * @date 2024/05/06
 * @version 1.0 
 * CopyRight (c)  2023-2024   [email protected]   All Right Reseverd
 */
#define N 3
int main()
{
    int w[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int i = 0;
    int sum = 0;
    for (i = 0; i < N; i++) // 把第一行和最后一行加上
    {
        sum = sum + w[0][i] + w[N - 1][i];
    }
    for (i = 1; i < N - 1; i++) // 把左侧和右侧除了角部的数加上
    {
        sum = sum + w[i][0] + w[i][N - 1];
    }
    int ave=sum/(4N-4);
    printf("%d \n", sum);
}

计数排序法:

/**
 * @func:计数排序一个数组
 * @date 2024/05/06
 * @version 1.0 
 * CopyRight (c)  2023-2024   [email protected]   All Right Reseverd
 */
void CountSort(int A[], int B[], int bufsize)
{
    int count = 0; // 记录个数
    for (int n = 0; n < bufsize; ++n)
    {
        count = 0; // 计数器清0
        // n作为数组A的元素下标
        for (int m = 0; m < bufsize; ++m)
        {
            if (A[m] < A[n])
                count++;
        }
        B[count] = A[n];
    }
}
int main(int argc, char *const argv[])
{
    int i;
    int A[9] = {8, 6, 7, 11, 12, 13, 14, 2, 1};
    int B[9] = {0};//利用另外一个数组来存储排序后的元素
    int n = sizeof(A) / sizeof(A[0]);
    for (i = 0; i < 9; i++)
        printf("%d ", A[i]);
    puts(""); // 前后两次遍历,进行对比
    CountSort(A, B, n);
    for (i = 0; i < 9; i++)
        printf("%d ", B[i]);
}

热门相关:剑道邪尊Ⅱ   重生之男神追妻忙   首席的亿万老婆   我的阁楼通异界   天龙邪尊