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]);
}