习题 8.4 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图8.43。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。

C程序设计(第四版) 谭浩强 习题8.4 个人设计

习题 8.4 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图8.43。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。

代码块:

方法1:

#include 
void sort(int *s, int n, int x);     //定义排序函数
int main()
{
	int n[10], *p, m;
	for (p=n, printf("Please enter 10 numbers: "); p=s+x; *k--=*i--);
	for (j=0; j

方法2:(利用动态分配内存和指针)

#include< stdio.h>
#include 
void input(int *pNum, int n);                    //定义输入函数
void print(int *pNum, int n);                    //定义输出函数
void exchange(int *pNum, int mov, int n);        //定义交换函数
int main()
{
    int *numb, len, move_num;                    //定义数组,数组长度,移动个数
	printf("Please enter length: ");             //此两行输入数组长度
	scanf("%d", &len);
	numb=(int *)malloc(len*sizeof(int));         //给数组分配空间
    input(numb, len);                            //调用输入函数
	printf("Please enter move number: ");        //此两行为输入移动的长度
	scanf("%d", &move_num);
    exchange(numb, move_num, len);               //调用交换函数
    print(numb, len);                            //调用输出函数
    system("pause");
    return 0;
}
//输入函数
void input(int *pNum, int n)
{
    int *p;
	for (p=pNum, printf("Please enter %d numbers: ", n); p=mov; *(pNum+j--)=*p--);
	for (p=pNum, i=0; p

方法3:

#include 
#include 
void sort(int *s, int n, int x);     //定义排序函数
int main()
{
    int n[10], *p, m;
    for (p=n, printf("Please enter 10 numbers: "); p10; printf("Error! Retry!\nPlease enter move number: "), scanf("%d", &m));
    sort(n, 10, m);                                                             //调用排序函数
    for (p=n, printf("Sort by: "); p=s+n-x||k>=s+x; t[j++]=*i--, *k--=*m--);
    for (j=0, m=s+x-1; j

你可能感兴趣的:(C程序设计,(第四版),谭浩强,课后答案)