问题描述:编写程序,把给定长度为10的整数数组中所有元素循环右移 j 位。 输入:从键盘随机输入十个整数,作为数组a的元素;输入一个正整数j作为移动位数。 输出:移动后的整数数组a中的所有元素,各元素间无间隔字符。 样例:输入 1 2 3 4 5 6 7 8 9 0 2 输出 9012345678 有错误,
#include <stdio.h>
int main() {
int a[10];
int n,i;
int b[10];
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &n);
for (i = 0; i < 10; i++) {
if (n + i >= 10)
b[n+i-10] = a[i];
else
b[i+n] = a[i];
}
for (i = 0; i <= 9; i++) {
printf("%d", b[i]);
}
return 0;
}
右移位数可能会超过10
尝试改为
#include <stdio.h>
int main()
{
int a[10];
int n, i;
int b[10];
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &n);
n %= 10;//加入的改动
for (i = 0; i < 10; i++)
{
if (n + i >= 10)
b[n + i - 10] = a[i];
else
b[i + n] = a[i];
}
for (i = 0; i <= 9; i++)
{
printf("%d", b[i]);
}
return 0;
}
有帮助望采纳~