这代码问题 #include<stdio.h> void func(int a[];int n) { int i,j,k; for(i=9,j=0;j<i;i--,j++) { k=a[i]; a[i]=a[j]; a[j]=k; } } void func(int a[];int n) int main() { int a[]; int n,i; func(a,n); for(i=0;i<n;i++) printf("%d",a[i]); return 0; }
时间: 2024-03-16 11:42:05 浏览: 15
这段代码有很多问题:
1. 在函数定义中,C语言不支持用分号表示参数列表的结束,应该使用逗号。
2. 在函数定义中,应该先声明参数类型,再声明参数名称。
3. 在函数调用时,应该传入参数值,而不是未初始化的变量。
4. 在主函数中定义数组时,应该指定数组的大小。
5. 在主函数中调用函数时,应该传入数组的地址,而不是数组的值。
6. 在输出数组元素时,应该使用空格或换行符分隔每个元素。
下面是修正后的代码:
```
#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[i];
a[i] = a[j];
a[j] = k;
}
}
int main() {
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = 10, i;
func(a, n);
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
这段代码的作用是将数组元素倒序输出,修正后的代码能够正常工作。
相关问题
#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` 函数以实现修改。
请完整写出这段代码#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"。