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]!='