用c语言利用指针变量*p1,*p2对整型变量a和b赋值、数值交换及输出。
时间: 2024-02-09 07:11:47 浏览: 98
好的,下面是用C语言利用指针变量*p1,*p2对整型变量a和b赋值、数值交换及输出的代码:
```c
#include <stdio.h>
int main() {
int a, b, temp;
int *p1, *p2;
printf("请输入两个整数:\n");
scanf("%d %d", &a, &b);
p1 = &a;
p2 = &b;
printf("交换前:a=%d, b=%d\n", a, b);
temp = *p1;
*p1 = *p2;
*p2 = temp;
printf("交换后:a=%d, b=%d\n", a, b);
return 0;
}
```
首先,我们定义了两个整型变量a和b,以及两个指向整型变量的指针变量p1和p2。
然后,通过scanf函数从键盘输入两个整数,并将它们分别赋值给a和b。
接着,将p1指向a所在的内存地址,将p2指向b所在的内存地址。
在交换a和b的值时,我们先定义了一个临时变量temp,将p1所指向的值赋给temp,再将p2所指向的值赋给p1,最后将temp的值赋给p2。
最后,通过printf函数输出交换前和交换后的a和b的值。
相关问题
用c语言不改变整型变量a, b, c的值,利用指针变量*p1,*p2,*p3交换实现上述三个数由大到小的排序和输出。
好的,下面是用C语言利用指针变量*p1,*p2,*p3交换实现整型变量a, b, c由大到小的排序和输出的代码:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a, b, c;
int *p1, *p2, *p3;
printf("请输入三个整数:\n");
scanf("%d %d %d", &a, &b, &c);
p1 = &a;
p2 = &b;
p3 = &c;
if (*p1 < *p2) swap(p1, p2);
if (*p1 < *p3) swap(p1, p3);
if (*p2 < *p3) swap(p2, p3);
printf("排序后:\n%d %d %d\n", *p1, *p2, *p3);
return 0;
}
```
首先,我们定义了三个整型变量a、b和c,以及三个指向整型变量的指针变量p1、p2和p3。
然后,通过scanf函数从键盘输入三个整数,并将它们分别赋值给a、b和c。
接着,将p1指向a所在的内存地址,将p2指向b所在的内存地址,将p3指向c所在的内存地址。
在排序时,我们利用了swap函数来交换指针所指向的值。如果p1所指向的值小于p2所指向的值,就调用swap函数交换p1和p2所指向的值。同理,如果p1所指向的值小于p3所指向的值,就调用swap函数交换p1和p3所指向的值,最后如果p2所指向的值小于p3所指向的值,就调用swap函数交换p2和p3所指向的值。
最后,通过printf函数输出排序后的a、b和c的值。
1:通过指针变量访问整型变量。要求主函数定义两个整型变量a,b;两个指向整型的指针变量p1,p2。分别输出a,b的值和用指针变量输出a,b的值。画出该程序 c 语言算法图
好的,以下是该程序的C语言代码和算法图:
```c
#include<stdio.h>
int main()
{
int a = 10, b = 20;
int *p1 = &a, *p2 = &b;
printf("a = %d, b = %d\n", a, b);
printf("*p1 = %d, *p2 = %d\n", *p1, *p2);
return 0;
}
```
算法图如下:
```
开始
定义整型变量a,b
定义指向整型的指针变量p1,p2
用&p1将a的地址赋值给p1
用&p2将b的地址赋值给p2
输出a和b的值
输出p1指向的值和p2指向的值
结束
```
阅读全文