C语言复习——指针

本文提供两个编程练习实例:一是使用指针实现三人报数问题;二是编写函数实现一维数组内元素的平移。通过这两个实例,读者可以更好地理解指针与数组的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编程练习:

1.用指针实现报数问题

/*用指针的方法解决3人报数问题*/
#include <stdio.h>

int main()
{
	int i = 0;
	int k = 0;
	int m = 0;
	int n = 0;
	int num[50];
	int *p;

	printf("please input num:\n");
	scanf("%d",&n);
	p = num;

	for(i = 0;i < n;i++)
	{
		*(p+i) = i+1;//给数组每个成员编号
	}

	i = k = m = 0; //i是数组计数,k是循环3次计数,m是退出的人计数

	while(m < n-1)  // *n是总人数,退出的人数要比总人数少一个人结束循环
	{
		if(*(p+i) != 0)
	    {
			k++;            //成员的值不为0则k+1
		}
		if(k == 3)      
		{
			*(p+i) = 0;
			k = 0;
			m ++;
		}
		i ++;

		if(i == n)         //如果i到了成员最后,返回最前面
		{
			i = 0;
		}
		while(*p == 0)
		{
			p ++;      //找值不为0的数,即最后留下的数
		}
	}

	printf("%d is left\n",*p);

	return 0;
}
2.

/*请编写函数fun,函数功能是:移动一维数组中的内容;若数组中n个整数,要求把下标0~p的数组元素平移到数组的最后*/
#include <stdio.h>
#define N 80

void fun(int *w,int p,int n)
{
	int i = 0;
	int k = 0;
	int t = 0;
	
	for(i = 0;i <= p;i ++)          //循环移动p位数到最后
	{
		t = w[0];                  //移动第一位数到最后一位
		for(k = 1;k < n;k ++)
		{
			w[k-1]=w[k];
		}
		w[n-1] = t;
	}

}

int  main()
{
	int a[N];
	int n;
	int p;
	int i = 0;
     
	printf("plase input n :\n");   //输入要输入的数字的个数
	scanf("%d",&n);

	printf("please input n number:\n");    //分别输入n个数
	for(i = 0;i < n;i ++ )
	{
		scanf("%d",&a[i]);
	}

	printf("plase input p:\n");
	scanf("%d",&p);

	fun(a,p,n);
	for(i = 0;i < n;i++)
	{
		printf("%d ",a[i]);
	}

	printf("\n");

	return 0;

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值