m0_74309407 2023-02-27 15:00 采纳率: 33.3%
浏览 64
已结题

数字加密,我的大司马有什么错误啊,总说答案错误

输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。

输入格式:
输入在一行中给出一个四位的整数x,即要求被加密的数。

输出格式:
在一行中按照格式“The encrypted number is V”输出加密后得到的新数V。

#include<stdio.h>
int main()
{
int a[4];
    for(int i=0;i<4;i++)
        scanf("%d",&a[i]);
    for(int i=0;i<4;i++)
    {
        a[i]=(a[i]+9)%10;
    }
    int t=a[0];a[0]=a[2];a[2]=t;
    int tt=a[1];a[1]=a[3];a[3]=tt;
    printf("The encrypted number is ");
    for(int i=0;i<4;i++)
        printf("%d",a[i]);
    return 0;
        
}

  • 写回答

2条回答 默认 最新

  • a5156520 2023-02-27 19:25
    关注

    获取输入的数字那里错了,因为输入的是一个整数,不需要获取四个整数输入,把它改为获取一个整数;

    然后,这个可以存储四个整数的数组,可以使用循环依次存储获取的整数的每个数位上的数字,其他保持不变即可实现加密过程。

    修改如下:

    #include<stdio.h>
    int main()
    {
        int a[4];
        int num;
        scanf("%d",&num);   // 获取需要加密的一个整数 
        
        // 将这个整数每个数位上的数字从高位到低位依次存储到数组中 
        for(int i=3;i>=0;i--){
            a[i] = num%10;
            num/=10;
        }
            
    
        for(int i=0;i<4;i++)
        {
            a[i]=(a[i]+9)%10;
        }
        int t=a[0];a[0]=a[2];a[2]=t;
        int tt=a[1];a[1]=a[3];a[3]=tt;
        printf("The encrypted number is ");
        for(int i=0;i<4;i++)
            printf("%d",a[i]);
        return 0;
            
    }
     
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月9日
  • 已采纳回答 3月9日
  • 创建了问题 2月27日