鱼C论坛

 找回密码
 立即注册
查看: 882|回复: 3

[已解决]关于C语言密匙短语的题目{没有思路}

[复制链接]
发表于 2020-5-30 11:03:42 | 显示全部楼层 |阅读模式
2鱼币
本帖最后由 你的strl键没了 于 2020-5-30 11:06 编辑

1.怎么做到删除重复的字母和空格,我大概知道用strcmp进行比较,但不知道怎么删除
2.怎么排序修改完的字母数组
3.怎么做到后面添加未出现的字母
4.怎么匹配大小写问题
最佳答案
2020-5-30 11:03:43
去重:用一个字符数组存放用户的密码,初始化内部填0,每次存放之前遍历数组查看是否已有存在的字符;无则加之。
换码则按照相关的映射关系,采取查表法;
大小写通过ASCII码可以判断的
QQ截图20200530105705.png

最佳答案

查看完整内容

去重:用一个字符数组存放用户的密码,初始化内部填0,每次存放之前遍历数组查看是否已有存在的字符;无则加之。 换码则按照相关的映射关系,采取查表法; 大小写通过ASCII码可以判断的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 11:03:43 | 显示全部楼层    本楼为最佳答案   
去重:用一个字符数组存放用户的密码,初始化内部填0,每次存放之前遍历数组查看是否已有存在的字符;无则加之。
换码则按照相关的映射关系,采取查表法;
大小写通过ASCII码可以判断的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 14:50:50 | 显示全部楼层
提问的最佳奖励都有3鱼币了,2个鱼币的悬赏不如不悬赏。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-30 15:27:28 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<ctype.h>
  4. void change1(char *str1, char *str2);
  5. void change2(char *str, char *str2, char *str3);
  6. void duizhaobiao(char *str2, char *str3, char *contrast);
  7. void change3(char *mingwen, char *upper_mingwen);
  8. void change4(char *upper_mingwen,char *contrast, char *anwen);
  9. void change5(char *anwen, char *true_anwen, char *mingwen);
  10. int main()
  11. {
  12.         char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  13.         char str1[50];//原密码
  14.         char str2[50];//去掉空格和重复数字的密码
  15.         char str3[50];//未出现的字母
  16.         char contrast[50];
  17.         char mingwen[50];
  18.         char upper_mingwen[50];
  19.         char anwen[50];
  20.         char true_anwen[50];
  21.         printf("请输入密钥字(key word):");
  22.         gets(str1);
  23.         change1(str1,str2);
  24.         puts(str2);
  25.         change2(str,str2,str3);
  26.         puts(str3);
  27.         duizhaobiao(str2,str3,contrast);
  28.         puts(contrast);
  29.         printf("请输入明文:");
  30.         gets(mingwen);
  31.         change3(mingwen,upper_mingwen);
  32.         puts(upper_mingwen);
  33.         change4(upper_mingwen, contrast, anwen);
  34.         puts(anwen);
  35.         change5(anwen, true_anwen, mingwen);
  36.         printf("正在生成暗文中...\n");
  37.         puts(true_anwen);
  38.         return 0;
  39. }
  40. void change1(char *str1, char *str2)
  41. {
  42.         int str1_length=50;
  43.         int i,j;
  44.         for(i=0;i<str1_length;i++){
  45.                 for(j=0;j<str1_length;j++){
  46.                         if(str1[i]==str1[j]&&i!=j){
  47.                                 str1[j]=' ';
  48.                         }
  49.                 }
  50.         }
  51.         int cnt=0;
  52.         for(i=0;i<str1_length;i++){
  53.                 if(str1[i]!=' '){
  54.                 str2[cnt]=str1[i];
  55.                 cnt++;
  56.                 }
  57.                
  58.         }
  59.         str2[cnt]='\0';
  60. }
  61. void change2(char *str, char *str2, char *str3)
  62. {
  63.        
  64.         int i,j;
  65.         int k=0;
  66.         for(i=0;i<27;i++){
  67.                 for(j=0;str2[j]!='\0';j++){
  68.                         if(str2[j]==str[i]){
  69.                                 i++;
  70.                         }
  71.                 }
  72.                 str3[k]=str[i]; k++;
  73.         }
  74. }
  75. void duizhaobiao(char *str2, char *str3, char *contrast)
  76. {
  77.         int i,j;
  78.         for(i=0;str2[i]!='\0';i++){
  79.                 contrast[i]=str2[i];
  80.         }
  81.         for(j=0;str3[j]!='\0';j++,i++){
  82.                 contrast[i]=str3[j];
  83.         }
  84.         str3[i]='\0';
  85. }
  86. void change3(char *mingwen, char *upper_mingwen)
  87. {
  88.         int i,j;
  89.         for(i=0;mingwen[i]!='\0';i++){
  90.                 if(mingwen[i]>='a'&&mingwen[i]<='z'){
  91.                         upper_mingwen[i]=mingwen[i]-32;
  92.                 }else{
  93.                         upper_mingwen[i]=mingwen[i];
  94.                 }
  95.         }
  96. }
  97. void change4(char *upper_mingwen,char *contrast, char *anwen)
  98. {
  99.         int i,j,k;int t=0;
  100.         for(i=0;upper_mingwen[i]!='\0';i++){
  101.                 t=upper_mingwen[i];
  102.                 t=t-65;
  103.                 anwen[i]=contrast[t];
  104.         }       
  105.         anwen[i]='\0';
  106. }
  107. void change5(char *anwen, char *true_anwen, char *mingwen)
  108. {
  109.         int i;
  110.         for(i=0;mingwen[i]!='\0';i++){
  111.                 if(mingwen[i]>='a'&&mingwen[i]<='z'){
  112.                         true_anwen[i]=tolower(anwen[i]);
  113.                 }else{
  114.                         true_anwen[i]=anwen[i];
  115.                 }
  116.         }
  117.         true_anwen[i]='\0';
  118. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-4 13:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表