#include<stdio.h> void fun(int a[], int m, int b[], int n, int c[]); int main() { int m,i,n; int a1[10]; int b1[10]; int c1[20]; scanf("%d",&m); for(i=0;i<m;i++) { scanf("%d",&a1[i]); } scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&b1[i]); } fun(a1, m, b1,n, c1); for(i=0;i<m+n;i++) { printf("%d ",c1[i]); } printf("\n"); return 0; } /* 请在这里填写答案 */
时间: 2023-06-20 18:03:42 浏览: 38
以下是函数fun的实现:
```c
void fun(int a[], int m, int b[], int n, int c[])
{
int i,j,k;
i=j=k=0;
while(i<m && j<n)
{
if(a[i]<b[j])
{
c[k++]=a[i++];
}
else
{
c[k++]=b[j++];
}
}
while(i<m)
{
c[k++]=a[i++];
}
while(j<n)
{
c[k++]=b[j++];
}
}
```
该函数实现了将两个已经按升序排列的数组a和b归并到一个新的数组c中,并使c也按升序排列。具体实现方法是,用三个变量i、j、k分别表示数组a、b、c的下标,初始值都为0。然后,如果a[i]小于b[j],就将a[i]存入c[k],i和k都加1;否则,将b[j]存入c[k],j和k都加1。不断重复这个过程,直到其中一个数组的所有元素都被存入c中。最后,如果a数组还有剩余元素,就将剩余元素存入c中,如果b数组还有剩余元素,也将剩余元素存入c中。最后,c数组中的所有元素就是排好序的了。
相关问题
#include<stdio.h> void fun (int *a,int *b); int main() { int a,b; scanf("a=%d,b=%d",&a,&b); fun(&a,&b); printf("a=%d b=%d\n",a,b); return 0; } void fun(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp; }c语言
这段代码实现了通过指针将两个变量的值进行交换的功能。首先在主函数中输入两个整数a和b,然后调用fun函数,将a和b的地址作为参数传递给fun函数。在fun函数中,将a所指向的变量值赋给temp,然后将b所指向的变量值赋给a所指向的变量,最后将temp的值赋给b所指向的变量。因此,通过指针操作,成功实现了a和b的值交换。最后在主函数中输出交换后的结果。
用c语言续写:通过函数放计算并返回数组最大值的位置,在主函数中输出最大值及其位置:#include<stdio.h>#include<stdlib.h>void PutRes (void);int fun (int*,int);int fun(int*p,int n){
int max = *p; // 假设第一个元素为最大值
int pos = 0; // 最大值的位置
for (int i = 1; i < n; i++) {
if (*(p+i) > max) { // 如果当前元素大于最大值
max = *(p+i); // 更新最大值
pos = i; // 更新最大值的位置
}
}
return pos; // 返回最大值的位置
}
void PutRes(void) {
int arr[10] = {1, 9, 2, 8, 3, 7, 4, 6, 5, 0};
int maxPos = fun(arr, 10); // 获取最大值的位置
printf("数组最大值为:%d,位置为:%d", arr[maxPos], maxPos);
}
int main() {
PutRes();
return 0;
}
阅读全文