#include <iostream>
using namespace std;
void main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int b[10];
int temp,k;
cout << "左移几位?"<<endl;
cin>>temp;
temp = temp%10;
k = temp;
for(int i = 0;k<10;k++,i++)
{
b[i] = a[k];
}
for(int i = temp++,k = 0;i<10;k++,i++)
{
b[i] = a[k];
}
cout <<" b:";
for(int i= 0; i<sizeof(b)/sizeof(int) ; i++ )
cout <<" "<<b[i]<<" ";
cout <<endl;
system("pause");
}
输出结果:
左移几位?
2
b: 3 4 1 2 3 4 5 6 7 8
说明前面的两个数字是正确的,但是到b[2]=a[4](第3次for循环)的时候出现了问题
只是我以为第3次for(第一个for)循环出现了问题
但是问题出在第二个for,第二个for把第二位数字以后的全覆盖掉了。
#include <iostream>
using namespace std;
void main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int b[10];
int temp,k;
cout << "左移几位?"<<endl;
cin>>temp;
temp = temp%10;
k = temp;
for(int i = 0;k<10;k++,i++)
{
b[i] = a[k];
}
for(int i = 10-temp,k = 0;i<10;k++,i++)
{
b[i] = a[k];
}
cout <<" b:";
for(int i= 0; i<sizeof(b)/sizeof(int) ; i++ )
cout <<" "<<b[i]<<" ";
cout <<endl;
system("pause");
}
左移几位?
2
b: 3 4 5 6 7 8 9 10 1 2
使用函数封装:
#include <iostream>
using namespace std;
void text(int* a,int temp)
{
int b[10];
int k;
k = temp;
for(int i = 0;k<10;k++,i++)
{
b[i] = a[k];
}
for(int i = 10-temp,k = 0;i<10;k++,i++)
{
b[i] = a[k];
}
for(int i = 0;i<10;i++)
{
a[i] = b[i];
}
}
void main()
{
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int temp,k;
cout << "左移几位?"<<endl;
cin>>temp;
temp = temp%10;
text(a,temp);
cout <<" a:";
for(int i= 0; i<sizeof(a)/sizeof(int) ; i++ )
cout <<" "<<a[i]<<" ";
cout <<endl;
system("pause");
}