有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。
C程序设计(第五版)谭浩强著,第八章第四题。#include<stdio.h>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;
·
C程序设计(第五版)谭浩强著,第八章第四题。
#include<stdio.h>
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<stdio.h>
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]);
}
更多推荐
已为社区贡献2条内容
所有评论(0)