#includestdlib.h
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、弋江網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、弋江網(wǎng)絡(luò)營銷、弋江企業(yè)策劃、弋江品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供弋江建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
void
rightmove(
int
x[],
int
length
);
int
main(void)
{
int
a[10]={1,2,3,4,5,6,7,8,9,0};
int
count,n,len=10;
//
右移位數(shù)n,len不應(yīng)該這樣得到,我懶得算
printf("Input
n:\n");
scanf("%d",n);
for(count=0;
countn%10;
count++)
{
rightmove(
a,
len);
}
for(
count=0;
countlen;
count++
)
printf("%d
",
a[count]);
printf("\n");
//
注釋掉的這2行是我調(diào)試用的,別管
//
rightmove(
a,
10);
//
printf("%d
%d",
*a,
n);
return
0;
}
void
rightmove(
int
x[],
int
length
)
{
int
*tmp=NULL,
i;
tmp=(int*)malloc(sizeof(int));
for(i=length-1;
i0;
i--)
{
*tmp=*(x+i);
*(x+i)=*(x+i-1);
*(x+i-1)=*tmp;
}
free(tmp);
tmp=NULL;
}
我不知道我理解的對不對,環(huán)移1位就是所有成員向右移動(dòng)1位,最后1位到最前面來。
main函數(shù)就是用來測試的,函數(shù)rightmove就是把整形數(shù)組向右移動(dòng)1位,形參是數(shù)組首地址和數(shù)組長度。
main函數(shù)輸入N,rightmove循環(huán)N次。數(shù)組只有10個(gè)成員,你可以重新定義。
#include stdio.h
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("移動(dòng)后:\n");
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("輸入移動(dòng)位置數(shù):\n");
scanf("%d",n);
move(a,b,n);
return 0;
}
擴(kuò)展資料:
數(shù)組使用規(guī)則:
1.可以只給部分元素賦初值。當(dāng){ }中值的個(gè)數(shù)少于元素個(gè)數(shù)時(shí),只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個(gè)元素賦值,而后5個(gè)元素自動(dòng)賦0值。
2.只能給元素逐個(gè)賦值,不能給數(shù)組整體賦值。例如給十個(gè)元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;請注意:在C、C#語言中是這樣,但并非在所有涉及數(shù)組的地方都這樣,數(shù)據(jù)庫是從1開始。
3.如不給可初始化的數(shù)組賦初值,則全部元素均為0值。
4.如給全部元素賦值,則在數(shù)組說明中, 可以不給出數(shù)組元素的個(gè)數(shù)。例如:static int a[5]={1,2,3,4,5};可寫為:static int a[]={1,2,3,4,5};動(dòng)態(tài)賦值可以在程序執(zhí)行過程中,對數(shù)組作動(dòng)態(tài)賦值。這時(shí)可用循環(huán)語句配合scanf函數(shù)逐個(gè)對數(shù)組元素賦值。
參考資料:
百度百科-數(shù)組
比如數(shù)組a[20]可以先 t=a[19]; for(i=18;i=0;i++); a[i+1]=a[i]; a[1]=t;都右移了一個(gè),最后的到最前面了。
問題在ArrayShift函數(shù)中的2個(gè)for循環(huán)中j的值都沒有遞增,可以在i++后面加個(gè):
,j++
或者
第一個(gè)for里改成:a[j++]=a[i];
第二個(gè)for里改成:a[i]=a[j++];