c语言题目求助

c语言题目求助. 编写一个程序:
⑴实现通过凯撒密码(密文字母通过将明文字母表向左或向右移动一个固定数目的位置得到)加密,密钥key(取值范围1~ 25)通过键盘输入。(明文向右移key 个位置得到密文: 例如,若键盘输入key值为5,则一个明文字符串中’G’加密后变成’L’,’y’变成’d’ )
⑵实现上一加密过程的解密。密文向左移key 个位置得到明文。(一个密文字符串中的’ L’解密后变成’ G’, ‘d’变成’ y’)
输出加密后及解密后的字符串(注:其他字符保持不变)。
#include<stdio.h>
main(){
char a[100],i,n;
gets(a);
scanf("%d",&n);
for(i=0;a[i]!='\0';i++)
{
a[i]=(a[i]-'a'+n)%26+'a';
}
puts(a);
printf("\n");
for(i=0;a[i]!='\0';i++)
{
a[i]='z'-('z'+n-a[i])%26;
}
puts(a);
}
哪里错了

#include<stdio.h>
#include<ctype.h>
main(){
char a[100];
int i,n;
gets(a);
scanf("%d",&n);
for(i=0;a[i]!='\0';i++)
{if(islower(a[i]))
a[i]=(a[i]-'a'+n)%26+'a';
else if(isupper(a[i]))
a[i]=(a[i]-'A'+n)%26+'A';
}
puts(a);
printf("\n");
for(i=0;a[i]!='\0';i++)
{if(islower(a[i]))
a[i]='z'-('z'+n-a[i])%26;
else if(isupper(a[i]))
a[i]='Z'-('Z'+n-a[i])%26;
}
puts(a);
}
或者以下也行:
#include<stdio.h>
#include<ctype.h>
main(){
char a[100];
int i,n;
gets(a);
scanf("%d",&n);
for(i=0;a[i]!='\0';i++)
{if(islower(a[i]))
a[i]=(a[i]-'a'+n)%26+'a';
else if(isupper(a[i]))
a[i]=(a[i]-'A'+n)%26+'A';
}
puts(a);
printf("\n");
n=26-n;
for(i=0;a[i]!='\0';i++)
{if(islower(a[i]))
a[i]=(a[i]-'a'+n)%26+'a';
else if(isupper(a[i]))
a[i]=(a[i]-'A'+n)%26+'A';
}
puts(a);
}

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言求助求助求大佬救命
第一空:int MAX,MIN;int input_function(int *);int sorting_function(int *);int output_function(int *);第二空:array_data 第三空:array_data[i]=value;第四空:array_data[j-1]>array_data[j]第五空:(i+1)%5==0 另每一个函数最后一个}前加一句return 0;或把函数名前的int...

C语言啊。。。求助。。帅哥美女们,大哥大姐们会的帮下忙。无限感激...
include<stdio.h> int main(){ int a[3];int i,max;int n;scanf("%d",&n);while(n--){ for(i=0;i<3;i++)scanf("%d",&a[i]);max=a[0];for(i=0;i<3;i++)if(a[i]>=max)max=a[i];printf("%d\\n",max);} return 0;} ...

C语言简单的字符串、字符处理问题求助
第一题:简单点的做法是申请个足够大的char数组。比如假定最多1000种字串,每串最大长度为20,就申请word[1000][20],以及一个num[1000],一个字串个数wordNum,初始化置为0。然后每读到一个字串就d到word中检测有没有重复的,有的话就给对应序号的num[i]加一,没有的话就添加,然后num[i]...

C语言求助,题目有图,希望过程详细一些? 。。
} void fun(union data c){ c.n=100;printf("传参后fun函数中c.n赋值%d\\n",c.n);}

C语言求助 从键盘输入任意一个整数n
要解决的问题是编写一个C语言程序,该程序可以从键盘输入任意一个整数n,并计算从1到n之间的所有素数之和。首先,需要包含头文件stdio.h和math.h。stdio.h提供输入输出功能,math.h提供数学函数。定义一个函数ss(int n),用于检查n是否为素数。如果是素数则返回1,否则返回0。素数的定义是只有1和它...

C语言作业求助,十分感谢
C代码和运行结果如下:输如10个数,成功输出了它们的最大值、最小值和平均值,望采纳~附源码:include <stdio.h> int main() { int max, min, sum, num, i;scanf("%d", &num); \/\/ 先输入一1个数 max = min = sum = num;for (i = 0; i < 9; i++) { \/\/ 再输入剩下9...

C语言作业求助,谢谢
include <stdio.h>int main(){\/\/ 定义5*5的矩阵(二维数组)int matrix[5][5] = {{1, 2, 3, 4, 5},{6, 7, 8, 9, 10},{11, 12, 13, 14, 15},{16, 17, 18, 19, 20},{21, 22, 23, 24, 25}};int sum = 0; \/\/ 用于存储矩阵外圈数据的和\/\/ 求矩阵外圈数据的...

一个简单c语言题目,大神求助!在字符串中查找指定字符
1、打开python语言命令窗口,定义字符串变量s1并进行赋值。2、调用字符串中的count方法,查找字符#在s1中出现的次数。3、count()方法除了第一个参数之外,还可以有第二个参数,代表从什么位置开始查找。4、在count方法,还可以添加第三个参数,结束位置,开始位置到结束位置之间。5、如果需要查找的子字符...

关于C语言有几道题不会,求助大神
C正确,选C——下标从0开始,所以a[2]的值是3,a[a[2]]就是a[3],显然a[3]是第4个数值是4。C A 没有正确选项,输出是23 C C A C C 没有正确选项,应该是fun(10,12.5);这种形式 B

c语言求助
fun((a++,b++,a+b),c++)先看:(a++,b++,a+b) 这个过程a++相当于1+1=2 b++相当于2+1=3 a+b=5 ,由于逗号表达式选 取的是最后一项的值,所以传入的x值是5 而c++在这里++还未起作用由于后缀的++是先用原值再加1,所以在return (x+y);里y的值仍是3,所以最终的结果...

相似回答