要求满足错误:
要求只用一个数组的方式实现,一定要保证在输出结果时,输出的顺序和数组中数的顺序是一致的。
#include<stdio.h>int main(){
int array[100]
int m, n, i,j, tmp, distance
scanf("%d%d", &n, &m)
for (i = 0 i < n ++i) //输入
scanf("%d", &array[i])
distance = n - m //尾部要替换过去的值之间地址相距n-m个元素.
for (i = distance i < n ++i){ //循环移动,每次移动一个。
tmp = array[i - distance]
array[i - distance] = array[i]
for (j = i j > i - distance --j){
array[j] = array[j - 1]
}
array[i - distance + 1] = tmp
}
for (i = 0 i < n ++i){ //输出
printf("%d", array[i])
if (i != n - 1)
printf(" ")
}
printf("\n")
return 0
}
#include<stdio.h>#define N 5
int main(){
int i,j,m,n,a[N][N]
printf("input m n:")
scanf("%d%d",&m,&n)
while(m>0)m-=N
while(n>0)n-=N
for(i=0i<Ni++)
for(j=0j<Nj++)
a[i][j]=i*N+j+1
for(i=0i<Ni++){
for(j=0j<Nj++)
printf("%-3d",a[(N-m+i)%N][(N-n+j)%N])
printf("\n")
}
return 0
}
input m n:1 1
25 21 22 23 24
5 1 2 3 4
10 6 7 8 9
15 11 12 13 14
20 16 17 18 19
save=x&0x……那一行,你这是多少个字节了?0x表示16进制,每两个字面字符就是一个字节,即8位,你自己数数你的。取最低为应该是与0x00000001,四个字节,刚好32位。