int main()
{
char a[100],d[100];
int i,j = 0;
Printf("輸入要翻譯的密碼,以" @ "結尾):\ n ");
scanf("%s ",a);
for(I = 0;壹個[我]!='@';i++)
{
if((a[I]& gt;= ' a ' & amp& ampa[I]& lt;= ' z ')| |(a[I]& gt;= ' A ' & amp& ampa[I]& lt;='Z '))
{
if(a[I]& gt;= ' a ' & amp& ampa[I]& lt;x’)
a[I]= a[I]+3;//直接加減差的位數。
else if(a[I]& gt;= ' A ' & amp& ampa[I]& lt;x’)
{
a[I]= a[I]+3;//先轉換成三位數的大寫,再轉換成小寫。
a[I]= a[I]+32;//大小寫相差32位
}
else if(a[I]& gt;= ' X ' & amp& ampa[I]& lt;= 'Z')//X,Y,Z都要處理。
a[I]= a[I]+9;
else if(a[I]& gt;='x')//x,Y,Z都要處理。
a[I]-= 23;
}
d[I]= a[I];
j++;//統計字符數,避免輸出亂碼。
}
Printf("密碼的翻譯是:\ n ");
for(I = 0;我& lt= j;i++)
printf("%c ",d[I]);
printf(" \ n ");
返回0;
}這樣修改壹下應該就好了。根據題目要求,我認為X,Y,Z的情況要特殊對待。加減數是根據ASCII碼計算的。