1樓:問明
#include
int main()
void move(int[20], int, int);
int number[20], n, m, i;
scanf_s("%d",&n);
for (i = 0;i <
scanf_s("%d", &m);
move(number, n, m);
for (i = 0;i < n;i++)printf("%d ", number[i]);
void move(int array[20], int n, int m)
int *p, arrayend;
arrayend = *(array + n - 1);
for (p = array + n - 1;p > array;p--)
*p = *(p - 1);
*array = arrayend;
m--;
if (m > 0)move(array, n, m);
2樓:愛楓的景
執行錯的原因可能是你沒有正確的輸入資料。
在你原來的**中新增了一些輸入提示,保證程式正確執行,要想程式執行後得到理想的結果輸入的數一定正確。
#include "stdio.h"
void main()
printf("輸入移動的位數:\n");
scanf("%d",&m);
move(a,n,m);
printf("移動後的數為:\n");
for(i=0;i printf(" %d ",a[i]); printf("\n"); }void move(int a,int n,int m)for(i=0;i for(i=0;i a[i]=b[i];} 3樓:手機使用者 完整程式如下: #include #define n 100 int main() int move(int n, int m, int final, int num) for (j = n - m; j < n; j++) //將num中從n-m到n的值先給final final[i++] = num[j]; for (j = 0; j < n-m; j++) //再將num從0到m的值給final final[i++] = num[j]; return 1;} 4樓: 估計是你測試資料有問題 另外 題目要求的輸入格式是什麼? 一般是先輸入n,m再輸數字吧?看題目換個輸入格式試試 5樓:匿名使用者 沒找到錯。 你確定輸出異常麼? 能舉個例子麼 c語言:有n個整數,使前面各數順序向後移m個位置,最後m個數變成最前面m個數,寫乙個函式實現以上功能 6樓:凌亂心扉 **方法 一、#include void exchange(int*,int,int); int main(void) void exchange(int*a,int n,int m) }**方法 二、假設輸入的n的最大值為20**: #include int main() void move(int array[20],int n,int m) stdio.h標頭檔案使用 標頭檔案#include中 stdio.h是stand input&output的縮寫,意思是標準輸入輸出標頭檔案。凡是用到標準輸入輸出函式,就要呼叫該標頭檔案。 檢視stdio.h目錄下包含哪些函式:主要有檔案訪問、二進位制輸入/輸出、格式化和非格式化輸入/輸出、檔案定位、錯誤處理、檔案操作等。 具體開啟自己的vs安裝目錄,找到include資料夾,開啟include夾下面的stdio.**件即可檢視 (c:\program files(x86)\microsoft visual studio 14.0\vc\vcpackages\intellisense\ios\oss\musl-1. 1.10\include) 常用標準輸入輸出函式: scanf()從螢幕格式輸入 printf()格式輸出到螢幕 getchar()從螢幕得到乙個字元 putchar()字元輸出到螢幕 gets()從螢幕得到乙個字串 puts()字串輸出到螢幕 fscanf()從磁碟格式輸入 fprintf()格式輸出到磁碟 fgetc()從磁碟得到乙個字元 fputc()字元輸出到磁碟 fgets()從磁碟得到乙個字串 fputs()字串輸出到磁碟 #號是預處理語句,表明在編譯之前預先進行處理。 .h是header file的縮寫,表面這是乙個標頭檔案。 include是檔案包含命令,後面跟著引號""或者尖括號<>,意思是將引號或尖括號內指定的檔案包含到本程式中,成為本程式的一部分,而包含的檔案通常是由系統提供的。 區分引號""或者尖括號<>:尖括號<>編譯程式會先到標準函式庫中找檔案,引號""編譯程式會先從當前目錄中找檔案。 7樓:匿名使用者 你的子函式裡面最後乙個迴圈有點錯誤,1,for(i = n;i < n+m ; i ++) 2,你的p的指向和i同時變化,導致你每次 移動兩個單位, 正確的程式如下: #include #include #include void main() for(i=n;i 8樓:匿名使用者 for(i=n-1;i是把後面m個數移到最開始這個地方寫的不對,注意觀察你這裡面的p++,每次執行後p指標向後移了一位,你下次的p+i應該不是你想要的吧? 建議這樣子寫 for (i = 0; i < m ; i++) 9樓:匿名使用者 這是我寫的程式,你的move函式有問題。你對比一下我的吧。 #include #include int *change(int *p,int n,int m)for(number=m;number return(p); }void main() 10樓: 把move注釋掉後一切正常,說明move錯了。 首先,迴圈剛開始時就越界了。如果陣列大小小於n+m,馬上就會停止工作。 下面是個肯定不會出錯的做法,因為每次只用乙個int型變數暫存資料: void move(int *p, int n, int m)} 11樓:匿名使用者 #include void sort(char** p,int n,int s)}int main(int argc, const char * ar**) p=pstr; int m; printf("請輸入第幾個元素之後移至最前面:"); scanf("%d",&m); sort(p,j,m); for(i=0;i return 0;} 12樓:4747哦 #include int m,n; //全域性變數 void fun(int *p) main() c語言程式設計 有n個整數,使其前面各數順序向後移動m個位置,最後m個數變成前面的m個數 13樓:大野瘦子 錯誤一修改: printf("%d",a[i]); 錯誤二修改: void move(int a,int n,int m)int t[n]; int i,j=0; for(i=n-m;it[j++]=a[i]for(i=0; ia[i+m]=a[i]; for(i=0;ia[i]=t[i]; 注意事項 呼叫自定義後移函式move(int *a, int n, int m)來進行迴圈移位,對n(n<20)個整數,使其前面各數順序向後移m個位置,最後m個數變成最前面m個數,如下: n=10, m=3時:輸入: 1 2 3 4 5 6 7 8 9 10,輸出:8 9 10 1 2 3 4 5 6 7 input 輸入多組測試資料,每組先輸入n(n < 20)和m(m < n),再輸入n個整數。 output 輸出迴圈移動m個數後的序列,資料間空格隔開。 sample input 10 4 1 2 3 4 5 6 7 8 9 10 7 21 2 3 4 5 6 7 sample output 7 8 9 10 1 2 3 4 5 6 6 7 1 2 3 4 5 14樓:匿名使用者 #include #define n 10 void move(int a,int n ,int m); void main() 15樓:匿名使用者 void move(int a,int n,int m) 16樓:匿名使用者 改正1: printf("%d",a[i]); 改正2: void move(int a,int n,int m) 忘掉你的指標吧。移動後的結果,只是array陣列的重新排列。結果 array 10 最後輸出也只是將重新排列好的陣列列印出來。假如寫成這樣 int array move array move 乾的是按要求排列陣列的活for i 0 i 6 i printf d array i 是否就不存在困擾呢? ... include void main printf 輸入要移動的位置數 scanf d m 這句也沒錯,最好在其下加入一句 m 10 for i 0 i 0 j 就該應在這時 s 0 b for i 0 i 10 i printf d s i putchar n 要實現這個功能只需要改一個地方 for... 幽水寒靈 設a為任一整數,則式 a 1 a 2 a n a n a n a n a n 而式中 a n a n 恰為c a n,a 也即是從a n中取出a的組合數,當然為整數。所以 a 1 a 2 a n 一定能被n 整除 n!1 2 3 4 n 高3你會學到的。這樣 n個連續整數的乘積一定能被n ...有個n整數,儲存在陣列array中,使其前面各數順序向後移動m個位置,最後的m個數變成最前面的m個數,並輸出
c語言 有n個整數的陣列,編寫程式使其前面各數順序向後移m個
n個連續整數的乘積一定能被n 整除