C语言基础------练习2
1.实现求数组中的第二大值
代码运行结果:
代码解析:
//定义数组并计算长度
int arr[] = {3, 5, 1, 8, 7, 2, 9, 4, 6};
int n = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
//定义一个数组 arr 并计算其长度 n。
//检查数组长度
if (n < 2)
{
printf("数组中没有足够的元素来找到第二大值。\n");
return 1;
}
//如果数组长度小于2,则无法找到第二大值,输出提示信息并退出程序。
//初始化最大值和第二大值
int first = INT_MIN; // 最大值
int second = INT_MIN; // 第二大值
//使用 INT_MIN 初始化最大值和第二大值,确保任何数组元素都大于初始值。
//遍历数组
for (int i = 0; i < n; i++)
{
if (arr[i] > first)
{
second = first; // 更新第二大值
first = arr[i]; // 更新最大值
} else if (arr[i] > second && arr[i] != first)
{
second = arr[i]; // 更新第二大值
}
}
/*遍历数组中的每个元素:
如果当前元素大于 first,则更新 second 为 first,并将 first 更新为当前元素。
如果当前元素大于 second 且不等于 first,则更新 second 为当前元素。
输出结果
if (second == INT_MIN)
{
printf("数组中没有第二大的值。\n");
} else {
printf("数组中的第二大值是: %d\n", second);
}
如果 second 仍然是 INT_MIN,说明数组中没有第二大的值。
否则,输出第二大值。
运行结果
假设数组为 {3, 5, 1, 8, 7, 2, 9, 4, 6},输出将是:
数组中的第二大值是: 8
*/
2.终端输入带空格的字符串,删除字符中的空格
代码运行结果:
代码解析:
/*
定义字符数组
char input[100]; // 用于存储输入的字符串
char output[100]; // 用于存储删除空格后的字符串
定义两个字符数组 input 和 output,分别用于存储输入的字符串和删除空格后的字符串。
提示用户输入字符串
printf("请输入一个带空格的字符串: ");
fgets(input, sizeof(input), stdin);
使用 fgets 函数从终端读取带空格的字符串。fgets 会读取直到遇到换行符或达到指定的最大长度。
删除空格
j = 0;
for (i = 0; input[i] != '\0'; i++)
{
if (input[i] != ' ' && input[i] != '\n')
{
output[j++] = input[i];
}
}
output[j] = '\0'; // 添加字符串结束符
初始化 j 为0,用于跟踪 output 数组的索引。
遍历 input 数组中的每个字符:
如果当前字符不是空格 ' ' 且不是换行符 '\n',则将其复制到 output 数组中,并递增 j。
最后,添加字符串结束符 '\0' 到 output 数组的末尾。
输出结果
printf("删除空格后的字符串: %s\n", output);
打印删除空格后的字符串。
运行示例
假设用户输入如下:
请输入一个带空格的字符串: Hello World
输出将是:
删除空格后的字符串: HelloWorld
*/