请问一下,这道题,那里错了?// 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的
#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]);
}
} 展开
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]);
}
} 展开
3个回答
展开全部
两个错误:
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]);
}
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]);
}
展开全部
scanf("%d",&a);
这句编译器不报警吗? 数组a[]的名字a退化为指针 再取地址后得到二次指针 这是不对的 后面将内存临时地址赋值给变量的行为也是无意义的。
其余那些加密变换没什么可说的。
这句编译器不报警吗? 数组a[]的名字a退化为指针 再取地址后得到二次指针 这是不对的 后面将内存临时地址赋值给变量的行为也是无意义的。
其余那些加密变换没什么可说的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf("%d",&a); 这里错了。
a是数组名字啊 。
重新定义一个变量吧
a是数组名字啊 。
重新定义一个变量吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询