一题C语言题目,数组a中有n个元素,取k个元素进行调换,例如:n=7,k=5,a[]={1,2,3

数组a中有n个元素,取k个元素进行调换,例如:n=7,k=5,a[]={1,2,3,4,5,6,7};结果:a[7]={6,7,1,2,3,4,5}

#include <stdio.h>
main()
{
int n,k,i;
int a[200],b[200];
printf("请输入元素个数n:");
scanf("%d",&n);
printf("请输入调换的元素个数k:");
scanf("%d",&k);
for(i=0;i<n;i++)
a[i]=i+1;
printf("调换前的数组a[%d]={",n);
for(i=0;i<n;i++)
{
printf("%d,",a[i]);
}
printf("\b}\n");
for(i=0;i<k;i++)
b[i]=a[i];
for(i=0;i<n;i++)
{
if(i<n-k)
a[i]=a[i+k];
else
a[i]=b[i-n+k];
}
printf("调换后的数组a[%d]={",n);
for(i=0;i<n;i++)
{
printf("%d,",a[i]);
}
printf("\b}\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-27

k可以输入,n必须写死(必须定义是常量)

#include <stdio.h>
#define n 7;
int main(void)
{
int a[n]={1,2,3,4,5,6,7};
int b[n];
int i,j,k=5;
for(i=0;i<n;i++)
{
    b[(i+n-k)%n]=a[i];
}
for(i=0;i<n;i++)
{
    printf("%d",b[i]);
}
return 0;
}

追问

ij代表什么呢

这个好像会报错

第2个回答  2018-04-27
先把k个元素取出来放到一个数组中,然后把剩余的元素按顺序写进去
第3个回答  2018-04-27
#include<stdio.h>

void replace(int n,int k,int a[])
{
int i,j,t;

for(i=1;i<=n-k;i++)
{
t=a[n-1];
for(j=n-2;j>=0;j--)
a[j+1]=a[j];
a[0]=t;
}
}

int main()
{
int i,n=7,k=5,a[]={1,2,3,4,5,6,7};

replace(n,k,a);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}本回答被网友采纳
第4个回答  2018-04-27
对呀,能不能把题目全部给我描述好来追问

数组a中有n个元素,取k个元素进行调换,例如:n=7,k=5,a[]={1,2,3,4,5,6,7};结果:a[7]={6,7,1,2,3,4,5}

相似回答