永发信息网

帮忙调试个程序

答案:2  悬赏:10  手机版
解决时间 2021-05-18 08:23
  • 提问者网友:风月客
  • 2021-05-17 09:43

//给一个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;
}

以上的得不到预期结果,问题出在哪?

最佳答案
  • 五星知识达人网友:怀裏藏嬌
  • 2021-05-17 11:04

楼主你的代码问题很多。。。
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;
}

全部回答
  • 1楼网友:深街酒徒
  • 2021-05-17 12:01

#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; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯