1 /*
2 * Main.c
3 * 1008. 數組元素循環右移問題 Ver.2
4 * Created on: 2014年8月29日
5 * Author: Boomkeeper
6 ********測試通過*******
7 */
8 #include <stdio.h>
9
10 int main(void) {
11
12 int array[101];
13 int n, m; //題目中的N、M
14 int i,j;
15
16 scanf("%i %i", &n, &m);
17 getchar();
18
19 for (i = 0; i < n; i++) {
20 scanf("%i", &array[i]);
21 }
22 //將m限制在0~n的范圍
23 // while (m > n) {
24 // m /= n;
25 // }
26 //右移
27 int temp;
28 for(i=0;i<m;i++){
29 temp = array[n-1];
30 for(j=n-2;j>=0;j--){
31 array[j+1] = array[j];
32 }
33 array[0] = temp;
34 }
35 //輸出
36 for(i=0;i<n;i++){
37 if(i==0)
38 printf("%i",array[i]);
39 else
40 printf(" %i",array[i]);
41 }
42 printf("\n");
43
44 return 0;
45 }
如果限制m在0~n的范圍,題目提交就會報錯,去掉可以通過。這樣如果m > n,其實無效循環了好多遍...應該是多循環(m/n)*n遍吧...
1 /*
2 * Main.c
3 * 1008. 數組元素循環右移問題 Ver.1
4 * Created on: 2014年8月29日
5 * Author: Boomkeeper
6 ********部分通過*******
7 */
8 #include <stdio.h>
9
10 int main(void) {
11
12 int array[101];
13 int n, m; //題目中的N、M
14 int i;
15
16 scanf("%i %i", &n, &m);
17 getchar();
18
19 for (i = 0; i < n; i++) {
20 scanf("%i", &array[i]);
21 }
22 //將m限制在0~n的范圍
23 while (m > n) {
24 m /= n;
25 }
26 //輸出
27 for (i = n - m; i < n; i++) {
28 if (i == n - m)
29 printf("%i", array[i]);
30 else
31 printf(" %i", array[i]);
32 }
33 for (i = 0; i < n - m; i++)
34 printf(" %i", array[i]);
35 printf("\n");
36
37 return 0;
38 }

這個算法就沒有完全通過,不懂了...如果不限制m范圍的話,就會數組越界。
題目鏈接:
http://pat.zju.edu.cn/contests/pat-b-practise/1008
.
一、printf("%d\n",q[s]); 這裡加個回車
二、
for(j=a-b;j<a;j++)
{
printf("%d ",q[j] );
} 當b=a時,你這裡最後一個輸出會是帶空格的!
#include<stdio.h>
main()
{int a[10],i,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
t=a[9];
for(i=9;i>0;i--)
a[i]=a[i-1];
a[i]=t;
for(i=0;i<10;i++)
printf("%d\n",a[i]);
}