#include <stdio.h> void func(int a[], int n) { int i,j, k; for (i = n - 1, j = 0; j < i; i--,j++) { k = a[j]; a[j] = a[i]; a[i] = k; } } int main() { int a[10]={1,2,3,4,5,6,7,8,9,10}; int n=10,i,x; scanf("%d",&x); func(a,n); for (i = 0; i < n; i++) printf("%d ", a[i]); printf("\n"); return 0; } 改良这代码,将数组a中n个整数按相反顺序存放,用指针变量作实参 符合题目要求
时间: 2024-04-07 12:29:55 浏览: 19
#include <stdio.h>
void func(int* a, int n) {
int i, j, k;
for (i = n - 1, j = 0; j < i; i--, j++) {
k = *(a + j);
*(a + j) = *(a + i);
*(a + i) = k;
}
}
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = 10, i, x;
scanf("%d", &x);
func(a, n);
for (i = 0; i < n; i++)
printf("%d ", *(a + i));
printf("\n");
return 0;
}
相关问题
请完整写出这段代码#include <stdio.h> void func(int m) int i; for( i=2 if( m%i==0 break; ;i<=m-1;i+. if( i==m printf("yes\n");else printf("no\n"); int main int m,i; scanf(" ",&m);
完整代码如下:
```c
#include <stdio.h>
void func(int m) {
int i;
for(i = 2; i <= m-1; i++) {
if(m % i == 0) {
break;
}
}
if(i == m) {
printf("yes\n");
} else {
printf("no\n");
}
}
int main() {
int m, i;
scanf("%d", &m);
func(m);
return 0;
}
```
这段代码实现了一个判断素数的函数 `func` 和一个主函数 `main`。其中,`func` 函数接受一个整数参数 `m`,并输出该数是否为素数。主函数从标准输入读入一个整数 `m`,并调用 `func` 函数进行判断。如果 `m` 是素数,则输出 "yes",否则输出 "no"。
#include <stdio.h> void func(int num) { *(int*)num = 6666; } int main() { int num = 1234; func((int)&num); printf("%d\n",num); }
这段代码存在一个问题。在函数 `func` 中,`num` 是作为指针传递给函数的。但是在函数中,它被强制转换为 `int*` 类型并尝试修改其值。然而,`num` 本身是一个整数值,而不是一个有效的内存地址。
这样的操作是非法的,并且可能导致程序崩溃或产生未定义的行为。如果您想要修改 `num` 的值,您可以将 `num` 声明为指针类型,并传递其地址给 `func` 函数。以下是修正后的代码:
```c
#include <stdio.h>
void func(int* num)
{
*num = 6666;
}
int main()
{
int num = 1234;
func(&num);
printf("%d\n", num);
return 0;
}
```
这样修改后,函数 `func` 中的参数 `num` 将接收到 `num` 的地址,然后通过解引用指针来修改 `num` 的值。在主函数中,我们将 `num` 的地址传递给 `func` 函数以实现修改。