编写程序 对长度为n的一位数组进行循环向右移动m位,n和m在主函数中输入 【改错】有n个整数,使前面各数顺序循环移动m 个位置(m<n...

作者&投稿:欧阳图 (若有异议请与网页底部的电邮联系)

#include <stdio.h>

void moveleft(int a[],int n,int m) {
int i,j,tmp;
for(i = 0; i < m; ++i) {
tmp = a[0];
for(j = 0; j < n - 1; ++j)
a[j] = a[j + 1];
a[n - 1] = tmp;
}
}

void show(int a[],int n) {
int i;
for(i = 0; i < n; ++i)
printf("%d ",a[i]);
printf("
");
}

int main() {
int i,n,m;
int a[100];
printf("n = ");
scanf("%d",&n);
for(i = 0; i < n; ++i) {
scanf("%d",&a[i]);
}
printf("移动前:
");
show(a,n);
printf("m = ");
scanf("%d",&m);
moveleft(a,n,m);
printf("向左移动%d位后:
",m);
show(a,n);
return 0;
}


C语言编写程序,将一维数组中的元素向右循环移动N次~

#include
void move(int *a,int*b,int n)
{
for(int i=0,j=9;i!=10;++i,--j)
{
b[(a[j]+n)%10]=a[j];
}
printf("移动后:
");
for(int k=0;k!=10;++k)
printf("%d ",b[k]);
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
int b[10]={0};
int n;
printf("输入移动位置数:
");
scanf("%d",&n);
move(a,b,n);
return 0;
}

扩展资料:
数组使用规则:
1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。
3.如不给可初始化的数组赋初值,则全部元素均为0值。
4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
参考资料:
百度百科-数组

#include
void exchange(int*,int,int);
int main(void){
int m,n,i;
printf("input length and number:
");
scanf("%d%d",&n,&m);
int a[n];
printf("input array:
");
for(i=0;i<n;++i)
scanf("%d",&a);
printf("new array:
");
exchange(a,n,m);
for(i=0;i<n;i++)
printf("%d",a);
return 0;
}
void exchange(int*a,int n,int m)
{
int i,j,temp;
for(i=0;i<=m;++i){
temp=a[0];
for(j=0;j<n-1;++j)
a[j]=a[j+1];
a[n-1]=temp;
}
}

扩展资料:include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#include
2、#include"文件名"