Yahoo奇摩知識+將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+服務將會轉為唯讀模式。其他Yahoo奇摩產品與服務或您的Yahoo奇摩帳號都不會受影響。如需關於Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

C語言數字加密解密

我是要用C語言唷!!!!

1.使用資料加密,輸入應讀入一個四位數,將每個數字加7後除以10之餘數取代,然後將第一和第三數位互換,第二和第四數位互換,最後印出加密過的整數

2.如上題讀入加密過的四位數,然後將之解密成原來的數字

(↓是我自己打出來的,但是 我第2題就錯了)

(可以幫我把問題找出來嗎??)

#include<stdio.h>

#include<stdlib.h>int main(void)

{

int a,b,c,d,q,w,e,r;

printf("請輸入原密碼(4個數字): ");

scanf("%d %d %d %d",&a,&b,&c,&d);

q=(a+7)%10;

w=(b+7)%10;

e=(c+7)%10;

r=(d+7)%10;

printf("加密之後的密碼: %d %d %d %d\n",e,r,q,w);

printf("------------------------------------------------\n");

printf("把加密的密碼%d %d %d %d要解密\n",e,r,q,w);

a=q*10-7;

b=w*10-7;

c=e*10-7;

d=r*10-7;

printf("原密碼為: %d %d %d %d\n",a,b,c,d);

system("pause");

return 0;

}

我先說聲謝謝囉~~~

已更新項目:

可以解釋一下:

rePassWd裡面的程式碼嗎??

我看不太懂~~

2 個已更新項目:

= = 剛剛的補充當作沒看到

我再問個小問題~~

可以不用函數跟switch 寫完這個程式嗎??

因為 老師還沒教到~~

2 個解答

評分
  • 胤煌
    Lv 5
    9 年前
    最佳解答

    #include<stdio.h>

    #include<stdlib.h>

    int main(void)

    {

    char num[10];

    printf("請輸入原密碼(4個數字): ");

    scanf("%s",num);

    fflush(stdin);

    int a = num[0] - '0';

    int b = num[1] - '0';

    int c = num[2] - '0';

    int d = num[3] - '0';

    a = (a + 7) % 10;

    b = (b + 7) % 10;

    c = (c + 7) % 10;

    d = (d + 7) % 10;

    printf("加密之後的密碼: %d%d%d%d\n",c,d,a,b);

    printf("------------------------------------------------\n");

    printf("把加密的密碼%d%d%d%d要解密\n",c,d,a,b);

    a = rePassWd(a);

    b = rePassWd(b);

    c = rePassWd(c);

    d = rePassWd(d);

    printf("原密碼為: %d%d%d%d",a,b,c,d);

    return 0;

    }

    int rePassWd(int x)

    {

    switch(x)

    {

    case 0:

    case 1:

    case 2:

    case 3:

    case 4:

    case 5:

    case 6:

    return x + 10 - 7;

    case 7:

    case 8:

    case 9:

    return x - 7;

    }

    }

  • Almond
    Lv 6
    9 年前

    發問者的程式基本上只要把還原密碼的公式寫正確就ok了,如下:

    printf("把加密的密碼%d %d %d %d要解密\n",e,r,q,w);

    a=(q+10-7)%10;

    b=(w+10-7)%10;

    c=(e+10-7)%10;

    d=(r+10-7)%10;

    printf("原密碼為: %d %d %d %d\n",a,b,c,d);

    請參考之,謝謝。

還有問題?馬上發問,尋求解答。