编程序并上机调试运行程序(都要求用指针处理)。
(1). 使用指针方法,交换储存在整型变量a,b中的数值。
#include<stdio.h>
void swap(int *pa,int *pb);
int main(void)
{
int a =5;
int b =10;
swap(&a, &b);
printf("a=%d,b=%d\n",a,b);
return 0 ;
void swap(int *pa,int *pb)
{
int i=*pa;
*pa=*pb;
*pb= i;
}
}
(2). 输入三个整数,按由小到大的顺序输出,要求用指针作为实参,调用函数实现。(指针作为实参的格式参考教科书例8.6,排序算法参考例4.11,三个整数a,b,c通过scanf()由键盘输入,分别匹配给三个指针变量,通过对指针变量作为实参的按地址传递,和在自定义函数里对形参的操作,实现排序)。
#include<stdio.h>
#include<stdlib.h>
int main(int* argc, char* argv[])
{
int a, b, c, * p1 = &a, * p2 = &b, * p3 = &c;
int temp;
printf("请输入三个整型变量:\n");
scanf_s("%d%d%d", p1, p2, p3);
if (*p1 > *p2) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
if (*p1 > *p3) {
temp = *p1;
*p1 = *p3;
*p3 = temp;
}
if (*p2 > *p3) {
temp = *p2;
*p2 = *p3;
*p3 = temp;
}
printf("%d %d %d\n", *p1, *p2, *p3);
return 0;
}
(3). 用指针方法(数组名按地址传递)对n个整数排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入,最后在主函数中输出。(参考教科书例7.7)
#include <stdio.h>
int main()
{
void sort(int **pn,int n);
int i,n;
int num[15],*pnum[15],**p;
printf("Please input n:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",num+i);
for(i=0;i<n;i++)
*(pnum+i)=num+i;
p=pnum;
sort(p,n);
printf("the result after sorted:\n");
for(i=0;i<n;i++)
printf("%d ",*(*(p+i)));
printf("%\n");
return 0;
}
void sort(int **pn,int n)
{
int i,j,*t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(*(*(pn+i))>*(*(pn+j)))
{
t=*(pn+i);
*(pn+i)=*(pn+j);
*(pn+j)=t;
}
}