//给一个4位整数加密。方法:每一位加5再除以10得的余数,然后将第1,4换位置,第2,3换位置
#define N 5
#include<iostream>
using namespace std;
void main()
{
char aa[N],*p;int s=0,bb[5],t,i;
cout<<"输入4位整数:"<<endl;
cin>>aa[N];
p=aa;
for(i=0;i<N-1;i++)//加密
{
*p+=5;s=(*p)%10;
bb[5]=s;
}
for(i=0;i<N-1;i++)
{
t=bb[i];bb[i]=bb[N-i-2];bb[N-i-2]=t;//换位
}
for(i=0;i<N-1;i++)
cout<<"The NO. after arrange"<<bb[i]<<endl;
}
以上的得不到预期结果,问题出在哪?
楼主你的代码问题很多。。。
1.cin>>aa[N]; //实际上是读入一个字符保存到aa[5]中,而数组aa最大的下标是4,并没有aa[5]这个元素;
2.在for循环中指针p并没有改变,在每一次循环里都是指向aa的第一个元素a[0];
3.因为是把数字作为字符来读入的,所以在进行处理里要先减去'0'的值才能得到实际的数字;
4.在交换位置的循环次数多了,交换完后又交换回去了,等于没有交换。
#include <iostream>
using namespace std;
#define N 4
int main()
{
char aa[N + 1], *p, t;
int i;
cout << "输入4位整数:" << endl;
cin >> aa;
p = aa;
for(i = 0; i < N; ++i)
*p++ = (*p - '0' + 5) % 10 + '0';
for(i = 0; i < N / 2; ++i)
{
t = aa[i];
aa[i] = aa[N - i - 1];
aa[N - i - 1] = t;
}
cout << "The NO. after arrange:" << aa << endl;
return 0;
}
#define N 4
#include<iostream>
using namespace std;
void main()
{
char aa[N],*p;int s=0,bb[N],t;
cout<<"输入4位整数:"<<endl;
cin>>aa[N];
p=aa;
for(int i=0;i<N;i++)//加密
{
*p+=5;s=(*p)%10;
bb[i]=s;
}
for(int i=0;i<N;i++)
{
t=bb[i];
bb[i]=bb[N-i-1];
bb[N-i-1]=t;//换位
}
for(int i=0;i<N;i++)
cout<<"The NO. after arrange"<<bb[i]<<endl;
}
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息