#include "stdio.h" void main( ) { int a,b; int *p1=&a,*p2=&b,*t; a=10; b=20; t=p1; p1=p2; p2=t; printf("%d,%d\n",a,b); }
时间: 2024-01-24 22:01:39 浏览: 32
这段代码的输出结果是 "10,20"。
代码中定义了两个整型变量 a 和 b,以及两个指向整型变量的指针 p1 和 p2,以及一个指向整型变量的指针 t。
首先,将 a 赋值为 10,b 赋值为 20。
接着,将 p1 指向 a,将 p2 指向 b,将 t 指向 p1。
然后,将 p1 指向 p2,将 p2 指向 t,也就是指向 a。
最后,输出 a 和 b 的值,由于没有改变 a 和 b 的值,所以输出结果为 "10,20"。
相关问题
【程序改错】 功能:以下程序把两个数按由大到小的顺序输出来. #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;
}
```
#include<stdio.h> void swap1(int *p1, int *p2) { int t; t = *p1; *p1 = *p2; *p2 = *p1; } void main() { int a = 3; int b = 5; int* pa = &a, * pb = &b; if (a < b) swap1(pa,pb); }
这段代码中的swap1函数实现的是交换两个整数的值,但是代码中存在问题。在交换两个整数的值时,需要将第一个整数的值存储到一个临时变量中,然后再将第二个整数的值赋给第一个整数,最后再将临时变量的值赋给第二个整数。但是代码中的第三行 "*p2 = *p1;" 实际上是将第一个整数的值赋给了第二个整数,这样会导致两个整数的值相同,而不是实现交换。正确的代码应该是:
```
void swap1(int *p1, int *p2) {
int t;
t = *p1;
*p1 = *p2;
*p2 = t;
}
```
此外,main函数中没有输出结果的语句,你可以添加一个printf语句来输出交换后的结果。