头歌C语言指针综合实训(公共C实验五)

第1关 通过指针变量间接访问变量 

#include <stdio.h>
int main()
{ 
	int x,y;
	int *p;             //定义指针变量p
	p=&x;             //使指针变量p指向一个变量x
    /***** 请在以下填写通过p输入输出x值代码 *****/
	/********** Begin **********/
    scanf("%d",p);
    printf("%d\n",*p);
    /********** End **********/
    p=&y;             //使指针变量p指向另一个变量y
	/***** 请在以下填写通过p输入输出y值代码 *****/
	/********** Begin **********/
    scanf("%d",p);
    printf("%d",*p);
    
    /********** End **********/
	return 0;
}

第2关 交换两个指针变量的值

​
#include <stdio.h>
int main()
{ 
	int a=100,b=200;
	int *p1, *p2, *p;
	p1=&a;
	p2=&b;
	scanf("%d%d",p1,p2);
	 /***** 交换p1、p2的值 *****/
	/********** Begin **********/
    p=p1;p1=p2;p2=p;
    
    /********** End **********/   
    printf("%d %d\n",*p1,*p2);
	return 0;
}

​

第3关 利用指针方法求数组的最大值和最小值

#include<stdio.h>
#define M 3
main()
{
	int a[M],i;
	int *max,*min;
	for(i=0 ;i<M; i++)
	{
		scanf("%d",&a[i]);
	}
     /***** 将指针变量max,min初始化 *****/
	/********** Begin **********/
    max=&a[0],min=&a[0];
    
    /********** End **********/
	/***** 将每个数组元素依次与max,min指向的数组元素比较,使max,min分别指向的最大、最小的数组元素 *****/
	/********** Begin **********/
    for(i=0;i<M;i++)
    {
        if(a[i]>*max)
        max=&a[i];
        else if(a[i]<*min)
        min=&a[i];
    }
    
    /********** End **********/
	/***** 通过指针变量max,min输出最大值和最小值 *****/
	/********** Begin **********/
    printf("min=%d\nmax=%d",*min,*max);
    
    /********** End **********/
	return 0;
}

第4关 通过指针变量存取一维数组元素 

#include <stdio.h>
int main()
{
	int a[10],*p;	
	/*****输入10个整数存入数组a *****/   
    for(  p=a;p<a+10;p++     )          // p指向a[0]
	{
		scanf("%d",p);
	}
        
	/*****输出数组a 的所有数组元素的值*****/
    /********** Begin *********/
    for(p=a;p<a+10;p++)
    {
        printf("%d ",*p);
    }
    /********** End **********/
	printf("\n");
	return 0;
}

第5关 用指针实现数组元素逆置  

#include <stdio.h>
#define N 10
int main()
{
	/********** Begin **********/
  int a[N],*i,*j,t,*p=a,k;  
  for(;p<a+N;p++)
  {
    scanf("%d",p);
  }
  for(i=&a[0],j=&a[N-1];i<j;i++,j--)
  {t=*i;*i=*j;*j=t;}
  for(p=a;p<a+N;p++)
  {
    printf("%d ",*p);
  }
  /********** End **********/
   return 0;
 }

 第6关 不同数据类型所占内存的字节数

#include <stdio.h> 
int main ()
{
	char a2, b2[5],c2[10],d2[3][4],e2[2][5];
	double a3, b3[5],c3[10],d3[3][4],e3[2][5];
	float a4, b4[5],c4[10],d4[3][4],e4[2][5];
	/*****输出a2,b2, b2[0],c2,d2,d2[0], d2[0][0],e2,e2[0],e2[0][0]所占内存的字节数*****/
	/********** Begin *********/
	printf("a2 = %d\n",sizeof(a2) );
    printf("b2 = %d\n",sizeof(b2) );
    printf("b2[0] = %d\n",sizeof(b2[0]));
    printf("c2 = %d\n",sizeof(c2));
    printf("d2 = %d\n",sizeof(d2));
    printf("d2[0] = %d\n",sizeof(d2[0]));
    printf("d2[0][0] = %d\n",sizeof(d2[0][0]));
    printf("e2 = %d\n",sizeof(e2));
    printf("e2[0] = %d\n",sizeof(e2[0]));
    printf("e2[0][0] = %d\n",sizeof(e2[0][0]));
	/********** End **********/

	/*****输出a3,b3, b3[0],c3,d3,d3[0],d3[0][0],e3,e3[0],e3[0][0]所占内存的字节数*****/
	/********** Begin *********/
	printf("a3 = %d\n",sizeof(a3));
    printf("b3 = %d\n",sizeof(b3));
    printf("b3[0] = %d\n",sizeof(b3[0]));
    printf("c3 = %d\n",sizeof(c3));
    printf("d3 = %d\n",sizeof(d3));
    printf("d3[0] = %d\n",sizeof(d3[0]));
    printf("d3[0][0] = %d\n",sizeof(d3[0][0]));
    printf("e3 = %d\n",sizeof(e3));
	printf("e3[0] = %d\n",sizeof(e3[0]));
    printf("e3[0][0] = %d\n",sizeof(e3[0][0]));
	/********** End **********/

	/*****输出a4,b4, b4[0],c4,d4,d4[0], d4[0][0],e4,e4[0],e4[0][0]所占内存的字节数*****/
	/********** Begin *********/
	printf("a4 = %d\n",sizeof(a4));
    printf("b4 = %d\n",sizeof(b4));
    printf("b4[0] = %d\n",sizeof(b4[0]));
    printf("c4 = %d\n",sizeof(c4));
    printf("d4 = %d\n",sizeof(d4));
    printf("d4[0] = %d\n",sizeof(d4[0]));
    printf("d4[0][0] = %d\n",sizeof(d4[0][0]));
    printf("e4 = %d\n",sizeof(e4));
    printf("e4[0] = %d\n",sizeof(e4[0]));
    printf("e4[0][0] = %d\n",sizeof(e4[0][0]));
	/********** End **********/
	return 0;
}

 第7关 用指向数组的指针遍历二维数组

#include <stdio.h>
int main()
{
    int a[3][4],i,j;
    int(*p)[4];        //定义p为指针,指向一个长度为4的整型数组
    p = a;
    /********** Begin *********/
    for(i=0;i<3;i++)
    {
       for(j=0;j<4;j++)
       {
           scanf("%d",(*(a+i)+j));
       } 
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
            printf("%d ",a[i][j]);
        }printf("\n");
    }
    /********** End **********/
    return 0;
}

 第8关 计算不同类型的指针变量所占内存的字节数

#include <stdio.h> 
int main ()
{ 
	char * a2,**b2,*c2[4], (*d2)[5];
	double * a3,**b3,*c3[4], (*d3)[5];
	float * a4,**b4,*c4[4], (*d4)[5];
	/*****输出a2,b2,c2,d2所占内存的字节数*****/
	/********** Begin *********/
	printf("a2 = %d \n",sizeof(a2));
    printf("b2 = %d \n",sizeof(b2));
    printf("c2 = %d \n",sizeof(c2));
    printf("d2= %d \n",sizeof(d2));
	/********** End **********/
	/*****输出a3,b3,c3,d3所占内存的字节数*****/
	/********** Begin *********/
	printf("a3 = %d \n",sizeof(a3));
    printf("b3 = %d \n",sizeof(b3));
    printf("c3 = %d \n",sizeof(c3));
    printf("d3 = %d \n",sizeof(d3));
	/********** End **********/
	/*****输出a4,b4,c4,d4所占内存的字节数*****/
	/********** Begin *********/
	printf("a4 = %d \n",sizeof(a4));
    printf("b4 = %d \n",sizeof(b4));
    printf("c4 = %d \n",sizeof(c4));
    printf("d4 = %d \n",sizeof(d4));
	/********** End **********/
	return 0;
}

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值