请问一下,这道题,那里错了?// 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的

#include<stdio.h>voidmain(){inta[4];printf("请输入4位数的电话号码\n");scanf("%d",&a);a[0]=a%10;... #include <stdio.h>
void main()
{
int a[4];
printf("请输入4位数的电话号码\n");
scanf("%d",&a);
a[0]=a%10;
a[1]=a/10%10;
a[2]=a/100%10;
a[3]=a/1000%10;
for (int i=0;i<=3;i++)
{
a[i]+=5;
a[i]%=10;
}
for (i=0;i<2;i++)
{
int t=a[i];
a[i]=a[3-i];
a[3-i]=t;

}
for (i=0;i<=3;i++)
{
printf("%d",a[i]);
}
}
展开
 我来答
烂笔小心
推荐于2017-11-28 · TA获得超过793个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:377万
展开全部
两个错误:
1,输入的4位数存入数组a,(a的地址与a[0]的一致,没有报错)也就是存到了a[0]。但是,第一次运算a[0]=a%10;这时候的a是一个地址!!!
2,第二次“加密”,数组反向。反向前a0为低位,反向后a0为高位。输出的时候先输出高位,符合逻辑。但是,不如不要第二次“加密”(所谓的!),直接for(int i=3;i>=0;i--)输出!

#include <stdio.h>
void main()
{
int a[4];
int nums;
printf("请输入4位数的电话号码\n");
scanf("%d",&nums);
a[0]=nums%10;
a[1]=nums/10%10;
a[2]=nums/100%10;
a[3]=nums/1000%10;
for (int i=0;i<=3;i++)//每个数字+5加密,满十取个位
{
a[i]+=5;
a[i]%=10;
}
for (int i=3;i>=0;i--)
{
printf("%d",a[i]);
}
hustren2
2010-11-02 · TA获得超过5083个赞
知道大有可为答主
回答量:3165
采纳率:0%
帮助的人:2584万
展开全部
scanf("%d",&a);
这句编译器不报警吗? 数组a[]的名字a退化为指针 再取地址后得到二次指针 这是不对的 后面将内存临时地址赋值给变量的行为也是无意义的。
其余那些加密变换没什么可说的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
suiyue_2009
2010-11-01 · TA获得超过846个赞
知道小有建树答主
回答量:1248
采纳率:0%
帮助的人:881万
展开全部
scanf("%d",&a); 这里错了。

a是数组名字啊 。

重新定义一个变量吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式