用c语言写代码,完成其中的函数fun2 (int a[],intn, int b[]int c[]),实现: 1)将数组a中大于-20的元素,依次存放到数组b中: 2)将数组b中的元素按照从小到大的顺序存放到数组c中; 3)函数返向数组h中的元素个数
时间: 2024-06-06 12:10:55 浏览: 28
int fun2(int a[], int n, int b[], int c[]) {
int i, j, count = 0;
// 将大于-20的元素存放到数组b中
for (i = 0, j = 0; i < n; i++) {
if (a[i] > -20) {
b[j++] = a[i];
}
}
// 将数组b中的元素按从小到大的顺序存放到数组c中
int len = j;
for (i = 0; i < len; i++) {
int min = i;
for (j = i + 1; j < len; j++) {
if (b[j] < b[min]) {
min = j;
}
}
int temp = b[i];
b[i] = b[min];
b[min] = temp;
c[i] = b[i];
}
// 返回数组c中的元素个数
return len;
}
相关问题
用c语言 写一个递归函数int fun(int n),将正整数n反转。
以下是用 C 语言编写的递归函数,用于将正整数 n 反转:
```c
#include <stdio.h>
int fun(int n) {
if (n < 10) {
return n;
} else {
int digit = n % 10;
int newNum = fun(n / 10);
while (newNum >= 10) {
newNum /= 10;
}
return digit * power(10, numDigits(newNum)) + newNum;
}
}
int power(int base, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= base;
}
return result;
}
int numDigits(int n) {
int count = 0;
while (n > 0) {
count++;
n /= 10;
}
return count;
}
int main() {
int n = 12345;
printf("Original number: %d\n", n);
int reversed = fun(n);
printf("Reversed number: %d\n", reversed);
return 0;
}
```
可以看到,该函数使用了三个辅助函数:power 函数用于计算 10 的幂,numDigits 函数用于计算一个数字的位数,以及一个 while 循环,用于将新数字缩小到一位。
c语言 编写一个函数void fun(int a[],int n); ,要求对a指向的数组中n个元素逆序进行存放。
好的,下面是 C 语言代码实现:
```c
#include <stdio.h>
void fun(int a[], int n) {
int i, j, temp;
for (i = 0, j = n-1; i < j; i++, j--) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
int main() {
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int i;
printf("原数组:");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
fun(arr, 10);
printf("逆序后的数组:");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序定义了一个函数 `fun`,它接受两个参数:一个整型数组和数组的长度。该函数会对传入的数组进行逆序存放操作。
在 `main` 函数中,我们定义了一个长度为10的数组,并输出原数组的值。然后调用 `fun` 函数对数组进行逆序存放操作,并再次输出逆序后的数组的值。
运行该程序,输出结果如下:
```
原数组:1 2 3 4 5 6 7 8 9 10
逆序后的数组:10 9 8 7 6 5 4 3 2 1
```
阅读全文