用c语言写一个找第n小的函数
时间: 2024-02-21 10:00:09 浏览: 10
以下是使用 C 语言编写的一个找第 n 小的函数:
```c
#include <stdio.h>
int findNthSmallest(int arr[], int size, int n) {
int i, j, temp;
for(i = 0; i < size - 1; i++) {
for(j = i + 1; j < size; j++) {
if(arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr[n - 1];
}
int main() {
int arr[] = {5, 3, 9, 2, 8};
int n = 3;
int size = sizeof(arr) / sizeof(arr[0]);
printf("The %dth smallest element is %d\n", n, findNthSmallest(arr, size, n));
return 0;
}
```
在上述代码中,我们使用了选择排序来对数组进行排序,然后返回数组中第 n 小的元素。主函数中,我们定义了一个数组,然后指定我们要找的第 n 小的元素是 3,最后输出第 3 小的元素。
相关问题
用c语言写一个小数第n位的题目
以下是一个C语言程序,用于找到给定小数的第n位。
```c
#include <stdio.h>
#include <math.h>
int main()
{
double num;
int n;
printf("Enter a decimal number: ");
scanf("%lf", &num);
printf("Enter the position of the digit to be found: ");
scanf("%d", &n);
int digit = (int)(num * pow(10, n-1)) % 10; // 计算第n位数字
printf("The digit at position %d is %d.\n", n, digit);
return 0;
}
```
程序首先要求用户输入一个小数和要查找的数字的位置。然后,它使用pow函数将小数乘以10的n-1次方,将其转换为整数,并使用模运算符获取给定位置上的数字。最后,程序输出结果。
注意:此程序仅适用于小数点后有限位数的数字。如果小数点后的位数很多,可能会有精度问题。
用c语言写一个针对float数据大小端转换的函数
以下是一个针对float数据大小端转换的C语言函数:
```c
#include <stdio.h>
#include <stdint.h>
void swap_float(float* f) {
union {
float f;
uint32_t i;
} u;
u.f = *f;
u.i = ((u.i & 0xff000000) >> 24) |
((u.i & 0x00ff0000) >> 8) |
((u.i & 0x0000ff00) << 8) |
((u.i & 0x000000ff) << 24);
*f = u.f;
}
int main() {
float f = 3.14159;
printf("Before swap: %f\n", f);
swap_float(&f);
printf("After swap: %f\n", f);
return 0;
}
```
这个函数使用了一个联合体将float类型和uint32_t类型进行了转换,然后通过位运算将字节顺序进行了转换。在函数中,我们传入一个指向float类型变量的指针,然后对这个float变量进行大小端转换。最后,我们在主函数中测试了一下这个函数的正确性。