void swap(int *pt1,int*pt2) { int p; p=*ptl;*ptl=*pt2;*pt2=p; } void change(int *ql,void *q2,int *q3) { if(* ql< *q2)swap(ql,q2); if(* ql< *q3)swap(ql,q3); if(* q2< *q3)swap(q2,q3); } main() { int a,b,c,*pl,*p2,*p3; scanf("%d,%d,%d",&a,&b,&c); p1=&a;p2=&b;p3=&c; change(pl,p2,p3); printf("\n%d,%d,%d\n",a,b,c); return 0; }这段程序错误在哪,如何修改
时间: 2023-12-15 08:07:12 浏览: 124
这段程序存在以下几个错误:
1. 在函数 `swap` 中,变量 `p` 没有声明,应先声明再赋值。
2. 在函数 `swap` 中,变量 `pt1` 的指针符号写成了 `l`,应该是 `*pt1`。
3. 在 `main` 函数中,指针变量 `pl` 没有初始化,应该是 `p1=&a`。
4. 在 `main` 函数中,调用函数 `change` 时传入的第一个参数是 `pl`,应该是 `p1`。
修改后的程序如下:
```
#include <stdio.h>
void swap(int *pt1, int *pt2) {
int p;
p = *pt1;
*pt1 = *pt2;
*pt2 = p;
}
void change(int *q1, int *q2, int *q3) {
if (*q1 < *q2) swap(q1, q2);
if (*q1 < *q3) swap(q1, q3);
if (*q2 < *q3) swap(q2, q3);
}
int main() {
int a, b, c, *p1, *p2, *p3;
scanf("%d,%d,%d", &a, &b, &c);
p1 = &a;
p2 = &b;
p3 = &c;
change(p1, p2, p3);
printf("\n%d,%d,%d\n", a, b, c);
return 0;
}
```
相关问题
函数的功能是交换变量a和b的值,且能返回交换的结果,正确的函数是()。 A. void swap(int *a, int *b) { int *p; *p=*a; *a=*b; *b=*p; } B. void swap(int a, int b) { int t; t=a; a=b; b=t; } C. void swap(int *a, int *b) { int *p; p=a; a=b; b=p; } D. void swap(int *a, int *b) { int t; t=*a; *a=*b; *b=t; }
正确的函数是D. void swap(int *a, int *b) { int t; t=*a; *a=*b; *b=t; }。
解析:
A选项中,定义了一个指针p,但并没有为它分配内存,在执行“*p=*a”时会出现未定义的行为,导致程序出错。
B选项中,参数a和b是按值传递的,函数中对它们的修改不会影响到函数外部的实参,因此无法实现交换变量的功能。
C选项中,定义了一个指针p,但在执行“p=a”时只是把指针p指向了a所指向的内存地址,而没有实现变量a和b的值的交换。
D选项中,定义了一个临时变量t,将a所指向的值赋给t,再将b所指向的值赋给a,最后将t的值赋给b,实现了变量a和b值的交换。同时,函数返回值为void,即没有返回值,符合题目要求。
因此,选项D是正确的函数。
【程序改错】 功能:以下程序把两个数按由大到小的顺序输出来. #include stdio.h /****=*****ERROR*===* void swap(int *p1*p2) int p; p=*p1;*p1=*p2;*p2=p;
【程序改错】
功能:以下程序把两个数按由大到小的顺序输出来.
1. 缺少了头文件的尖括号 "<>"。
2. swap函数的参数中,指针类型的声明缺少了逗号。
3. swap函数中,变量p没有声明类型。
4. swap函数中,变量p的赋值语句缺少了分号。
5. swap函数中,指针变量*p1和*p2所指向的值应该互换。
改正后的程序如下:
```c
#include <stdio.h>
void swap(int *p1, int *p2);
int main(void) {
int a, b;
scanf("%d%d", &a, &b);
if (a < b) {
swap(&a, &b);
}
printf("%d %d\n", a, b);
return 0;
}
void swap(int *p1, int *p2) {
int p = *p1;
*p1 = *p2;
*p2 = p;
}
```
阅读全文