C语言-指针练习(附答案)

目录

1.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。最后输出这10个整数。

2.两个变量交换

4.有一个班,3个学生,各学4门课,计算总平均分以及输出第n个学生的成绩。

5.判断输入的字符串是否为回文

6.解密藏头诗,如“一叶轻舟向东流,帆梢轻握杨柳手,风纤碧波微起舞,顺水任从雅客悠”


1.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。最后输出这10个整数。

#include<stdio.h>
int main()
{
int a[10];
int *p;
p=a;
int *min,*max;
int i,t;
max=a;min=a;
for(i=1;i<10;i++)
scanf("%d",p++);
{
if(*max<*p)
max=p;
if(*min>*p)
min=p;}
t=*max;*max=a[9];a[9]=t;
t=*min;*min=a[0];a[0]=t;
for(p=a;p<a+10;p++)
printf("%d",*p);
}

2.两个变量交换

#include<stdio.h>
void swap(int *pa,int *pb);
int main()
{
	int a;
	int b;
	scanf("%d%d",&a,&b);
	swap(&a,&b);
	printf("a=%d,b=%d",a,b);
	return 0;
}
void swap(int *pa,int *pb)
{
	int t=*pa;*pa=*pb;*pb=t;
}

3.用指针变量输出a[3][4]中的每一个元素

#include<stdio.h>
int main()
{
	int *p;
	int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
	int i,j;
	for(p=a[0];p<a[0]+12;p++)
	{
		if((p-a[0])%4==0)
			printf("\n");
		printf("%-4d",*p);}
	return 0;}

4.有一个班,3个学生,各学4门课,计算总平均分以及输出第n个学生的成绩。

#include<stdio.h>
int main(){
	int a[3][4] ={65,55,23,57,52,67,63,80,90,42,75,92};
	int (*p)[4]=a;
	int i,j;
	float ave,s=0;
	for(i=0;i<3;i++){
	 for(j=0;j<4;j++)
	 s+=*(*(p+i)+j);
	}
ave=s/12;
printf("平均分:%f\n",ave);

int n;
scanf("%d",&n);
for(j=0;j<4;j++)
	 printf("%d ",*(*(p+(n-1))+j));
return 0;
}

5.判断输入的字符串是否为回文

#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
char *p1=a,*p2=a;
gets(a);
p1=a;p2=a+strlen(a)-1;
while(p1<=p2&&*p1==*p2)
{
p1++;
p2--;
}
if(p1<=p2)
printf("No");
else
printf("Yes");
return 0;}

6.解密藏头诗,如“一叶轻舟向东流,帆梢轻握杨柳手,风纤碧波微起舞,顺水任从雅客悠”

#include<stdio.h>
int main()
{
	char *p[4]={"一叶轻舟向东流","帆梢轻握杨柳手","风纤碧波微起舞","顺水任从雅客悠"};
char a[10];
int i;
for(i=0;i<4;i++)
{
a[i*2]=*(p[i]);
a[i*2+1]=*(p[i]+1);
}
a[2*i]='\0';
printf("%s",a);
return 0;}

  • 25
    点赞
  • 306
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值