問題在ArrayShift函數(shù)中的2個for循環(huán)中j的值都沒有遞增,可以在i++后面加個:
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都做網(wǎng)站、網(wǎng)站建設、扎賚諾爾網(wǎng)絡推廣、小程序制作、扎賚諾爾網(wǎng)絡營銷、扎賚諾爾企業(yè)策劃、扎賚諾爾品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學生創(chuàng)業(yè)者提供扎賚諾爾建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:www.chinadenli.net
,j++
或者
第一個for里改成:a[j++]=a[i];
第二個for里改成:a[i]=a[j++];
默認只有算術右移。 要循環(huán)右移需要把最低位保存下來, 然后賦值到最左。
unsigned?int?func(unsigned?int?n)
{
unsigned?int?v=n1;
n=1;
if(v)?n|=1(sizeof(unsigned?int)-1);
return?n;
}
代碼文本:
#include "stdio.h"
int myfun(int m,int n){//十進制循環(huán)右移
int tmp,i;
for(tmp=m,i=0;tmp;i++,tmp/=10);
if((n%=i)0) n+=i;
for(tmp=i-n,i=1;tmp;i*=10,tmp--);
for(tmp=n,n=1;tmp;n*=10,tmp--);
return m%n*i+m/n;
}
int main(int argc,char *argv[]){
int n,m;
printf("Please enter n m(int 0n,m1000000000)...\n");
scanf("%d%d",n,m);
printf("你輸入的數(shù)是: %d\n",n);
printf("右移%d位后是: %d\n",m,myfun(n,m));
return 0;
}
#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("移動后:\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("輸入移動位置數(shù):\n");
scanf("%d",n);
move(a,b,n);
return 0;
}
擴展資料:
數(shù)組使用規(guī)則:
1.可以只給部分元素賦初值。當{ }中值的個數(shù)少于元素個數(shù)時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而后5個元素自動賦0值。
2.只能給元素逐個賦值,不能給數(shù)組整體賦值。例如給十個元素全部賦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ù)組元素的個數(shù)。例如:static int a[5]={1,2,3,4,5};可寫為:static int a[]={1,2,3,4,5};動態(tài)賦值可以在程序執(zhí)行過程中,對數(shù)組作動態(tài)賦值。這時可用循環(huán)語句配合scanf函數(shù)逐個對數(shù)組元素賦值。
參考資料:
百度百科-數(shù)組
比如數(shù)組a[20]可以先 t=a[19]; for(i=18;i=0;i++); a[i+1]=a[i]; a[1]=t;都右移了一個,最后的到最前面了。
#include stdio.h
int data[10] ; 聲明要移位的數(shù)組
void Init_data() 初始化數(shù)據(jù)內(nèi)的數(shù)據(jù)。
{
int i;
for(i= 0;i 10;i++)
{
data[i] = i;
}
}
void move() 將數(shù)組的數(shù)據(jù)右移一位
{
int temp;
int i;
temp = data[9];
for (i = 9;i 0 ;i--)
{
data[i] = data[i-1];
}
data[0] = temp;
}
void main()
{
int i,n;
scanf("右移的位數(shù)%d",d);
for( i= 0;i n; i++)
{
move();
}
}
分享文章:c語言數(shù)組循環(huán)右移函數(shù),循環(huán)右移 c語言
轉載注明:http://www.chinadenli.net/article4/dseoiie.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、網(wǎng)站改版、定制網(wǎng)站、App設計、網(wǎng)站排名、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)