思路二:
int main()
{
int nums[] = { 1,2,3,4,5,6,7 };
int tmp[7];
int k, i;
printf("输入k的值:");
scanf_s("%d", &k);
k = k % 7;
if (k == 0)
{
printf("不旋转");
for (i = 0; i < 7; i++)
{
printf("%d", nums[i]);
}
}
else
{
for (i = 0; i < k; i++)
{
tmp[i] = nums[7 - k + i];
}
for (i = k; i < 7; i++)
{
tmp[i] = nums[i - k];
}
printf("旋转之后的数组:");
for (i = 0; i < 7; i++)
{
printf("%d", tmp[i]);
}
}
}
思路三:
int main()
{
int nums[] = { 1,2,3,4,5,6,7 };
int tmp[7];
int k, i, p;
int j = 6;
printf("输入k的值:");
scanf_s("%d", &k);
k = k % 7;
if (k == 0)
{
printf("不旋转");
for (i = 0; i < 7; i++)
{
printf("%d", nums[i]);
}
}
else
{
for (i = 0; i < (7 - k) / 2; i++)
{
p = nums[i];
nums[i] = nums[6 - k - i];
nums[6 - k - i] = p;
}
for (i = 7 - k; i < 7 - k + k / 2; i++)
{
p = nums[i];
nums[i] = nums[j];
nums[j] = p;
j--;
}
for (i = 0; i < 7 / 2; i++)
{
p = nums[i];
nums[i] = nums[6 - i];
nums[6 - i] = p;
}
printf("旋转之后的数组:");
for (i = 0; i < 7; i++)
{
printf("%d", nums[i]);
}
}
}
思路三优化:可先写一个转置函数,然后在主函数里调用