① c語言密碼翻譯『要詳細』
#include<stdio.h>
#include<string.h>
void main()
{
int c,i,S,C,char ch[];
c=getchar(); //獲得輸入的字元賦值給c變數
printf("請輸入電文:");
scanf("%s",ch); //鍵盤輸入字元串保存到ch中
S=strlen(ch); //計算ch的長度保存到s中
For (i=1;i<s;i++) //循環s次
{
C=(c>='A'&&c<='Z')||(c>='a'&&c<='z')?(26-i+1):c;
//首先,(c>='A'&&c<='Z')||(c>='a'&&c<='z')為判斷條件,
判斷當輸入的字元為a-z和A-Z之間的字母時,整個
(c>='A'&&c<='Z')||(c>='a'&&c<='z')算式值為1,輸入非字母值為0.
為1,則將(26-i+1)的值賦給C,否則將c直接賦給C
Printf("%c",C); 然後以字元形式輸出c 。
}
}
我沒有看到你寫的代碼哪裡有把A-Z 翻譯成a-z哦 ,
是我理解題目錯誤?說實話,我現在還是看不明白題目所謂的翻譯規律是什麼規律。。
是A翻譯為Z 還是說就是大寫轉小寫。
看你的代碼應該是想實現大轉小,還少加一條判斷,
判斷如果是大寫,就要減32然後輸出(ascii 碼)
還有好多未定義的變數,大小寫也不區分,不知是輸入錯誤,還是初學不去注意那些細節。
反正c語言必須要區分大小寫的,否則你上面那段代碼有嚴重問題。
代碼至少先得自己看懂,何況寫了。沒必要非用那些++,--,?:那些表達式,
華而不實。是可以提高一點可憐的執行效率,但可以後續優化,首先必須得保證思路清晰。
很喜歡編程或打算走這條路的話,就不能局限於書本了~要多找代碼去閱讀
先在這里祝君好運
② c語言編寫:將用戶輸入的字元串翻譯成密碼串:規則如下
a b c d e f g h i j
例子里輸入ab,cd
a是第1個字元,那麼換成a後面第1個,也就是b
b是第2個字元,那麼換成b後面第2個,也就是d
到這里都沒錯
c是第4個字元,那麼換成後面第4個,也就是g,為什麼題目示例是h???
#include <stdio.h>
#include <ctype.h>
int main()
{
int i=0;
char str[1001];
fgets(str,1000,stdin);
while(str[i]){
if(islower(str[i]))
str[i]=97+(str[i]+i-96)%26;
else if(isupper(str[i]))
str[i]=65+(str[i]+i-64)%26;
i++;
}
puts(str);
return 0;
}
③ c語言:譯密碼
#include 「stdio.h」
main()
{char c1;
while ((c1=getchar())!=『\n』)
{if ((c1>=『a』&& c1<=『z』)||(c1>=『A』 && c1<=『Z』))
c1=c1+4;
if (c1>『Z』 && c1<=『Z』+4|| c1>『z』)
c1=c1-26;
}
printf(「%d」,c1); }
}
請參考
④ C語言編程,密碼翻譯的問題~~~求助
#include<stdio.h>
int main()
{
char a[100],d[100];
int i,j=0;
printf("輸入要翻譯的密碼,以「@」結束:\n");
scanf("%s",a);
for(i=0;a[i]!='@';i++)
{
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z'))
{
if(a[i]>='a'&&a[i]<'x')
a[i]=a[i]+3;//直接加減相差的位數
else if(a[i]>='A'&&a[i]<'X')
{
a[i]=a[i]+3;//先轉化成加三位的大寫,再轉化成小寫
a[i]=a[i]+32;//大小寫相差32位
}
else if(a[i] >= 'X'&&a[i] <= 'Z')//X、Y、Z都應該做處理
a[i]=a[i]+9;
else if(a[i]>='x')//x、y、z都應該做處理
a[i] -= 23;
}
d[i]=a[i];
j++;//統計字元的個數,以免後面的輸出中有亂碼
}
printf("密碼的譯文是:\n");
for(i=0;i<=j;i++)
printf("%c",d[i]);
printf("\n");
return 0;
}這樣修改之後應該就好了,根據題目要求,我覺得x、y、z的大小寫都應該特殊處理,那個加減的數字是根據ASCII碼計算出來的
⑤ 有一行電文,已按下面規律譯成密碼即第一個字母變成第26個字母,第I個字母變成第(26-i+1)個C語言題目
main()
{
char a[26],b[26];
int i;
scanf("%s",&a);
for(i=0;a[i]!='\0';i++)
if('A'<=a[i]&&a[i]<='Z')b[i]=155-a[i];
else if('a'<=a[i]&&a[i]<='z')b[i]=219-a[i];
else b[i]=a[i];
b[i]=0;
puts(a);
puts(b);
}
⑥ 密碼文 編程 c語言 輸入一個英文單詞 將單詞翻譯成密碼文 規則是把所有字母用它後面的第三個字母替換
#include <stdio.h>
int main()
{
char c;
while((c=getchar())!='\n'&&c!=EOF)
printf("%c", c>='a'&&c<='y'||c>='A'&&c<='Z'?c+3:c=='z'||c=='Z'?c-23:c);
printf("\n");
return 0;
}
希望樓主及時採納,謝謝
⑦ c語言 密碼電文
不好意思,剛才寫的程序有點錯誤:現更正如下:(請編譯人員不要刪除!)
#include <stdio.h>
#include <string.h>
#define N 100
void main()
{
char s[N];
int i;
int a;
printf("Input String:");
scanf("%s",s);
for(i=0;i<=strlen(s);i++)
{
if(s[i]>='A'&&s[i]<='Z')
s[i]=26-s[i]+64+1+64;
else if(s[i]>='a'&&s[i]<='z')
s[i]=26-s[i]+96+1+96;
}
printf("%s\n",s);
}
⑧ C語言的密碼翻譯程序
main()
{
char *str="aabbcc112546XXXyyyzzz";//密碼
printf("密碼:%s\n",str);
//解密
printf("原文:");
int i=0;
while(str[i]!='\0')
{
if(str[i]>64&&str[i]<91)
{
printf("%c",(26-(str[i]-64)+1)+64);
i++;
continue;
}
if(str[i]>96&&str[i]<123)
{
printf("%c",(26-(str[i]-96)+1)+96);
i++;
continue;
}
printf("%c",str[i]);
i++;
}
printf("\n");
}
⑨ C語言問題:要將"China"譯成密碼,密碼規律是:用原來的字母後面的第4個字母代替原來的字母。
原題的意思是進行一個輪換,w->a,x->b,y->,z->d,所以是:
#include"stdio.h"
void
main()
{
char
name[5];
int
i;
for(i=0;i<5;i++)
{
printf("請輸入第%d個字母",i+1);
scanf("
%c",&name[i]);
if(name[i]=='v')
name[i]='z';
else
if(name[i]=='V')
name[i]='Z';
else
name[i]=(name[i]+4)%26;
}
for(i=0;i<5;i++)
printf("%c",name[i]);
printf(" ");
}
(9)c語言電文翻譯成密碼擴展閱讀:
#include <stdio.h>
int main(){
printf("Hello, World! ");
return 0;
}
程序的第一行#include <stdio.h>是預處理器指令,告訴 C 編譯器在實際編譯之前要包含 stdio.h 文件。
下一行int main()是主函數,程序從這里開始執行。
下一行printf(...)是 C 中另一個可用的函數,會在屏幕上顯示消息 "Hello, World!"。
下一行return 0;終止 main() 函數,並返回值 0。
⑩ c語言編程 為了使電文保密,往往按一定規律將其轉換成密碼,收報人再按約定的規律將其譯回原文。
whle(c!='\n')
就是表示讀取的一個符號不是換行符
如果不是換行符,就繼續循環,遇到換行符就循環結束
ejack1979說的不太對,說成了回車換行符
注意,在c語言裡面
回車
和換行
是兩個符號,
回車是
'\r'
換行是
'\n'