c语言练习6
2010-11-21 22:31
281 查看
5、有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前m个数(如下图所示)。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个整数。
![](file:///C:/DOCUME~1/shuai/LOCALS~1/Temp/ksohtml/wps_clip_image-2894.png)
程序1:
#include"stdio.h"
int main()
{
int swap(int a[],int m);
int a[10],i,m;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
swap(a,m);
return 0;
}
int swap(int a[],int m)
{
int *p,i,j;
for(p=a+10-m,i=0;i<m;i++)
printf("%d",*p++);
for(p=a,i=0;i<10-m;i++)
printf("%d",*p++);
}
程序2:(指针)
#include<stdio.h>
#include<malloc.h>
typedef struct tagLinkList
{
int *data;
struct tagLinkList *next;
}LinkList;
void insert(LinkList *head,int *x);
void swap(LinkList *head,int m);
int main()
{
int m,n,i,f[100];
LinkList *head,p;
head=((LinkList*)malloc(sizeof(LinkList)));
head->data=NULL;
head->next=NULL;
scanf("%d%d",&n,&m);
printf("n=%d;m=%d/n",n,m);
for(i=0;i<n;i++)
{
scanf("%d",&f[i]);
printf("%d ",f[i]);
insert(head,f+i);
}
printf("/n");
swap(head,m);
p=*(head->next);
while(p.next!=NULL)
{
printf("%d ",*(p.data));
p=*(p.next);
}
printf("%d/n",*(p.data));
return 0;
}
void insert(LinkList *head,int *x)
{
LinkList *p,*temp;
temp=(LinkList *)malloc(sizeof(LinkList));
if(head->next==NULL)
{
head->next=temp;
}
else
{
p=head;
while(p->next!=NULL)
{
p=p->next;
}
p->next=temp;
}
temp->data=x;
temp->next=NULL;
}
void swap(LinkList *head,int m)
{
LinkList *p,*q;
int i=0;
while(i<m)
{
p=head;
while (p->next!=NULL)
{
q=p;
p=p->next;
}
q->next=NULL;
p->next=head->next;
head->next=p;
i++;
}
}
![](file:///C:/DOCUME~1/shuai/LOCALS~1/Temp/ksohtml/wps_clip_image-2894.png)
程序1:
#include"stdio.h"
int main()
{
int swap(int a[],int m);
int a[10],i,m;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
swap(a,m);
return 0;
}
int swap(int a[],int m)
{
int *p,i,j;
for(p=a+10-m,i=0;i<m;i++)
printf("%d",*p++);
for(p=a,i=0;i<10-m;i++)
printf("%d",*p++);
}
程序2:(指针)
#include<stdio.h>
#include<malloc.h>
typedef struct tagLinkList
{
int *data;
struct tagLinkList *next;
}LinkList;
void insert(LinkList *head,int *x);
void swap(LinkList *head,int m);
int main()
{
int m,n,i,f[100];
LinkList *head,p;
head=((LinkList*)malloc(sizeof(LinkList)));
head->data=NULL;
head->next=NULL;
scanf("%d%d",&n,&m);
printf("n=%d;m=%d/n",n,m);
for(i=0;i<n;i++)
{
scanf("%d",&f[i]);
printf("%d ",f[i]);
insert(head,f+i);
}
printf("/n");
swap(head,m);
p=*(head->next);
while(p.next!=NULL)
{
printf("%d ",*(p.data));
p=*(p.next);
}
printf("%d/n",*(p.data));
return 0;
}
void insert(LinkList *head,int *x)
{
LinkList *p,*temp;
temp=(LinkList *)malloc(sizeof(LinkList));
if(head->next==NULL)
{
head->next=temp;
}
else
{
p=head;
while(p->next!=NULL)
{
p=p->next;
}
p->next=temp;
}
temp->data=x;
temp->next=NULL;
}
void swap(LinkList *head,int m)
{
LinkList *p,*q;
int i=0;
while(i<m)
{
p=head;
while (p->next!=NULL)
{
q=p;
p=p->next;
}
q->next=NULL;
p->next=head->next;
head->next=p;
i++;
}
}
相关文章推荐
- c语言练习(4)
- 初学的c语言一些简单的练习题(自我练习)
- C语言练习篇-8函数指针练习
- C语言练习:字串在父串中的个数
- 第04天C语言(07):while练习2
- 排成一圈数3退出最后一人位置问题--C语言谭浩强版练习8.5
- C语言第一章基本概念练习。
- 第05天C语言(10):递归练习02
- C语言练习(5月17日更新)
- c语言练习
- C语言编程练习——冒泡排序和选择排序
- C语言:循环控制练习 等边三角形
- C语言编程(练习1:字符串和字符串函数)
- C语言变量和数据类型练习1
- C语言练习之程序编写
- c语言练习
- C语言第三次作业练习
- C语言编程练习——查找介于n1与n2(0<n1<n2<32768)之间所有满足下列条件的整数:
- 我的C语言队列练习
- C语言学习历程——编程练习3——03