指针应用程序设计
1、用间接引用求出两个数中的最大数。
main()
{int x,y,max,*p1,*p2;
p1=&x;
p2=&y;
scanf("%d%d",p1,p2);/*或scanf("%d%d",&x,&y);*/
if(*p1>*p2)
max=*p1;
else
max=*p2;
printf("max=%d\n",max);
}
2、用间接引用求出三个数中的最大数。
main()
{int x,y,z,max,*p1,*p2,*p3;
p1=&x;
p2=&y;
p3=&z;
scanf("%d%d%d",p1,p2,p3);/*或scanf("%d%d%d",&x,&y,&z);*/
if(*p1>*p2)
max=*p1;
else
max=*p2;
if(*p3>max)
max=*p3;
printf("max=%d\n",max);
}
3、用间接引用将两个数按升序排序并输出。
main()
{float a,b,t,*p1,*p2;
p1=&a;
p2=&b;
scanf("%f%f",p1,p2);/*或scanf("%f%f",&a,&b);*/
if(*p1>*p2)
{t=*p1;*p1=*p2;*p2=t;}
printf("%f,%f\n",*p1,*p2);
}
4、用间接引用将三个数按升序排序并输出。
main()
{float a,b,c,t,*p1,*p2,*p3;
p1=&a;
p2=&b;
p3=&c;
scanf("%f%f%f",p1,p2,p3);/*或scanf("%f%f%f",&a,&b,&c);*/
if(*p1>*p2)
{t=*p1;*p1=*p2;*p2=t;}
if(*p1>*p3) /*不能写作else if(*p1>*p3)*/
{t=*p1;*p1=*p3;*p3=t;}
if(*p2>*p3) /*不能写作else if(*p2>*p3)*/
{t=*p2;*p2=*p3;*p3=t;}
printf("%f,%f,%f\n",*p1,*p2,*p3);
}
5、编写交换两个变量值的函数,并调用该函数交换主函数中两个变量的值(不能使用全局变量传递数据)。
void swap(int *p1,int *p2)
{int t;
t=*p1;
*p1=*p2;
*p2=t;
}
main()
{int a,b;
scanf("%d%d",&a,&b);
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);
}
5A、编写交换两个变量值的函数,并调用该函数对三个数按升序排序(不能使用全局变量传递数据)。
void swap(float *p,float *q)
{float t;
t=*p;
*p=*q;
*q=t;
}
main()
{float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if(a>b) swap(&a,&b);
if(a>c) swap(&a,&c); /*不能写作else if(a>c)*/
if(b>c) swap(&b,&c); /*不能写作else if(b>c)*/
printf("%f,%f,%f\n",a,b,c);
}
6、编写求两个数中最大数的函数,并调用该函数求出主函数中两个数中的最大数(不能使用全局变量或return语句传递数据)。
void max(int x,int y,int *p)
{int m;
if(x>y)
m=x;
else
m=y;
*p=m;
}
main()
{int a,b,r;
scanf("%d%d",&a,&b);
max(a,b,&r);
printf("r=%d\n",r);
}
7、编写求三个数中最大数的函数,并调用该函数求出主函数中三个数中的最大数(不能使用全局变量或return语句传递数据)。
void max(int x,int y,int z,int *p)
{int m;
if(x>y)
m=x;
else
m=y;
if(z>m)
m=z;
*p=m;
}
main()
{int a,b,c,r;
scanf("%d%d%d",&a,&b,&c);
max(a,b,c,&r);
printf("r=%d\n",r);
}
8、从键盘输入十个整数存入一维数组中,再按反序输出(要求用指针访问数组元素)。
方法一:
main()
{int x[10],i;
for(i=0;i<=9;i++)
scanf("%d",x+i);/*scanf("%d",&x[i]);*/
for(i=9;i>0;i--)
printf("%d,",*(x+i));/*printf("%d,",x[i]);*/
}
方法二:
main()
{int x[10],i,*p=x;
for(i=0;i<=9;i++)
scanf("%d",p+i);/*p值不变*/
for(i=9;i>0;i--)
printf("%d,",*(p+i));
}
方法三:
main()
{int x[10], *p;
for(p=x;p<=x+9;p++) /*p值变化*/
scanf("%d",p);
for(p=x+9;p>=x;p--) /*p值变化*/
printf("%d,",*p);
}
方法四:
main()
{int x[10],i,*p;
p=x;
for(i=0;i<=9;i++)
{scanf("%d",p); /*p值变化*/
p++;
}
p=x+9;
for(i=9;i>0;i--)
{printf("%d,",*p); /*p值变化*/
p--;
}
}
9、从键盘输入十个整数存入一维数组中,求出其中的最大数并输出(要求用指针访问数组元素)。
方法一:
main()
{int a[10],max,i;
for(i=0;i<=9;i++)
scanf("%d",a+i); /*或scanf("%d",&a[i]);*/
max=*(a+0); /*或max=*a;*/
for(i=1;i<=9;i++)
{if(*(a+i)>max)
max=*(a+i);
}
printf("max=%d\n",max);
}
方法二:
main()
{int a[10],*p=a,max,i;
for(i=0;i<=9;i++)
scanf("%d",p+i); /*或scanf("%d",&a[i]);*/
max=*(p+0); /*或max=*p;*/
for(i=1;i<=9;i++)
if(*(p+i)>max)
max=*(p+i);
printf("max=%d\n",max);
}
10、从键盘输入11个整数存入一维数组中,再将该数组的
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
前后倒置并输出(要求用指针访问数组元素)。
方法一:
main()
{int a[11],i,j,t,*p;
p=a;
for(i=0;i<=10;i++)
scanf("%d",p+i); /*或scanf("%d",&a[i]);*/
i=0;j=10;
while(i
main()
{char a[80],t,*p,*q;
int n;
gets(a);
n=strlen(a);
p=0;q=a+n-1;
while(p=q)
printf("yes.\n");
else
printf("no.\n");
}
14、编写字符串复制的函数(要求用指针实现),并调用此函数复制一个字符串。
void scopy(char *b,char *a)
{while(*a!='\0')
{*b=*a; /*未复制'\0'*/
a++;b++;
}
*b='\0';
}
main()
{char a[80],b[80];
gets(a);
scopy(b,a);
puts(b);
}
15、编写连接两个字符串的函数(要求用指针实现),并调用此函数连接两个字符串。
void scat(char *a,char *b)
{while(*a!='\0')
a++;
while(*b!='\0')
{*a=*b; /*未复制'\0'*/
a++;b++;
}
*a='\0';
}
main()
{char a[80],b[80];
gets(a);
gets(b);
scat(a,b);
puts(a);
}
16、编写将一个字符串前后倒置的函数(要求用指针实现),并调用此函数将一个字符串前后倒置。
void srev(char *p)
{char t,*q;
int n;
n=strlen(p);
q=p+n-1;
while(p
本文档为【文件指针应用程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。