0506C語言練習:字串A中刪除字串B中所有相同字母等

Rice_rice發表於2024-05-06
字串A中刪除字串B中所有相同字母(無論大小寫)
/**
 * @func:	字串A中刪除字串B中所有相同字母(無論大小寫)
 * @date 2024/05/06
 * @version 1.0 :版本
 * CopyRight (c)  2023-2024   ni456xinmie@163.com   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   ni456xinmie@163.com   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   ni456xinmie@163.com   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]);
}

相關文章