栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。

C程序设计(第五版)谭浩强著,第八章第四题。

#include
int main()
{
	int i,n,m, a[10000], * p = a;
	void swap(int a[], int n,int m);
	printf("请输入n的值: ");
	scanf_s("%d", &n);
	printf("请输入n个整数: ");
	for (i = 0; i < n; i++)
		scanf_s("%d",p++);//输入
	printf("使得前面各数顺序往后移m个位置,请输入m:");
	scanf_s("%d", &m);
	swap(a, n,m);
	p = a;
	printf("调换后的顺序为:");
	for (i = 0; i < n; i++,p++)
		printf("%5d", *p);//输出
	return 0;
}
void swap(int a[], int n,int m)
{
	int *p,b[1000],*p1;
	int i;
	for (p=&a[n-m],p1=b,i=0; i < m; i++,p++,p1++)
		*p1=*p;//将输入数组a后面的m个数放入b数组中
	for (i = n - m - 1,p=&a[n-m-1]; i >= 0; i--,p--)
		a[i + m] = *p;//将a数组前面的n-m个数往后移动m个数
	for (i = 0,p1=b,p=a; i < m; i++,p1++,p++)
		*p=*p1;//将b数组中存放的m个数放到a数组的前m个元素中
}

由于对指针掌握不熟练,在此之前先写了个用数组来实现的

#include
int main()
{
	int swap(int a[],int n);
	int a[9], i;
	printf("请输入九个整数;");
	for (i = 0; i < 9; i++)
		scanf_s("%d",&a[i]);
	printf("n");
	swap(a, 9);
	printf("调换后的顺序为:");
	for (i = 0; i < 9; i++)
		printf("%3d", a[i]);
	return 0;
}

int swap(int a[], int n)
{
	int i,m=3;
	int b[9];
	for (i = n - m; i < n; i++)
		b[i] = a[i];//将输入数组a后面的m个数放入b数组中
	for (i = n - m - 1; i >= 0; i--)
		a[i + m] = a[i];//将a数组前面的n-m个数往后移动m个数
	for (i = 0; i < m; i++)
		a[i] = b[n - m + i];//将b数组中存放的m个数放到a数组的前m个元素中
	return(a[i]);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691884.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号