A. 關於C語言的凱撒加密
你需要添加路徑: ../file.txt;
因為你的exe文件在debug文件夾下,在該文件夾下沒有你輸入的哪個文件,程序中是只讀的形式打開文件的。所以,會提示存出錯。
兩種解決辦法:
第一個:將exe拷貝到加密文件的路徑下
第二個:將文件烤到exe文件路徑下。
根本的解決辦法就是: 給定文件的相對路徑或者絕對路徑,絕對不會出現問題的。
B. C語言的凱撒加密
/*
和樓上的相比,或許 看上去很煩
ch[i] +=5;
if (ch[i] > 'Z')
{
ch[i] -= 26;
}
可以改成和 樓上的 方法
等價於 ch[i] = 'A' + (ch[i] - 'A' + 5) % 26;
*/
# include <stdio.h>
# include <stdlib.h> //用到了system(); 不寫 ,可以用 getchar();
#define strwidth 117 //定義長度
int main(void)
{
char ch[strwidth];
int i ;
printf("請輸入密碼:");
gets(ch); //輸入數據,用gets(); 保留了空格
for (i = 0; i < strwidth ;i++ )
{
if (ch[i] >= 'a' && ch[i] <= 'z' ) //判斷是否小寫字母
{
ch[i] +=5;
if (ch[i] > 'z') //不解釋,我想這樣,理解可能會方便點吧
{
ch[i] -= 26;
}
}
else if ( ch[i] >= 'A' && ch[i] <= 'Z') //判斷是否大寫字母
{
ch[i] +=5;
if (ch[i] > 'Z')
{
ch[i] -= 26;
}
}
}
printf("加密後為:%s\n" , ch); //輸出數據
system("pause");
return 0;
}
/*
或者 這樣
*/
# include <stdio.h>
# include <stdlib.h> //用到了system(); 不寫 ,可以用 getchar();
#define strwidth 117 //定義長度
int main(void)
{
char ch[strwidth];
int i ;
printf("請輸入密碼:");
gets(ch); //輸入數據,用gets(); 保留了空格
for (i = 0; i < strwidth ;i++ )
{
if (ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z' ) //判斷是否是字母
{
ch[i] +=5;
if ( ch[i]>'Z' && ch[i] <= 'Z' + 5 || ch[i] > 'z' )
{
ch[i] -= 26;
}
}
}
printf("加密後為:%s\n" , ch); //輸出數據
system("pause");
return 0;
}
C. 請問一下這道C語言編程題怎麼做
按照題目要求編寫的用凱撒密碼加密的C語言程序如下
#include<stdio.h>
int main(){
char s[80];
int offset,i;
fgets(s,80,stdin);
scanf("%d",&offset);
for(i=0;s[i]!='