你的strl键没了 发表于 2020-5-30 11:03:42

关于C语言密匙短语的题目{没有思路}

本帖最后由 你的strl键没了 于 2020-5-30 11:06 编辑

1.怎么做到删除重复的字母和空格,我大概知道用strcmp进行比较,但不知道怎么删除
2.怎么排序修改完的字母数组
3.怎么做到后面添加未出现的字母
4.怎么匹配大小写问题

CodingCat_k 发表于 2020-5-30 11:03:43

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

永恒的蓝色梦想 发表于 2020-5-30 14:50:50

提问的最佳奖励都有3鱼币了,2个鱼币的悬赏不如不悬赏。

你的strl键没了 发表于 2020-5-30 15:27:28

#include<stdio.h>
#include<string.h>
#include<ctype.h>
void change1(char *str1, char *str2);
void change2(char *str, char *str2, char *str3);
void duizhaobiao(char *str2, char *str3, char *contrast);
void change3(char *mingwen, char *upper_mingwen);
void change4(char *upper_mingwen,char *contrast, char *anwen);
void change5(char *anwen, char *true_anwen, char *mingwen);
int main()
{
        char str[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        char str1;//原密码
        char str2;//去掉空格和重复数字的密码
        char str3;//未出现的字母
        char contrast;
        char mingwen;
        char upper_mingwen;
        char anwen;
        char true_anwen;
        printf("请输入密钥字(key word):");
        gets(str1);
        change1(str1,str2);
        puts(str2);
        change2(str,str2,str3);
        puts(str3);
        duizhaobiao(str2,str3,contrast);
        puts(contrast);
        printf("请输入明文:");
        gets(mingwen);
        change3(mingwen,upper_mingwen);
        puts(upper_mingwen);
        change4(upper_mingwen, contrast, anwen);
        puts(anwen);
        change5(anwen, true_anwen, mingwen);
        printf("正在生成暗文中...\n");
        puts(true_anwen);
        return 0;
}
void change1(char *str1, char *str2)
{
        int str1_length=50;
        int i,j;
        for(i=0;i<str1_length;i++){
                for(j=0;j<str1_length;j++){
                        if(str1==str1&&i!=j){
                                str1=' ';
                        }
                }
        }
        int cnt=0;
        for(i=0;i<str1_length;i++){
                if(str1!=' '){
                str2=str1;
                cnt++;
                }
               
        }
        str2='\0';
}
void change2(char *str, char *str2, char *str3)
{
       
        int i,j;
        int k=0;
        for(i=0;i<27;i++){
                for(j=0;str2!='\0';j++){
                        if(str2==str){
                                i++;
                        }
                }
                str3=str; k++;
        }
}
void duizhaobiao(char *str2, char *str3, char *contrast)
{
        int i,j;
        for(i=0;str2!='\0';i++){
                contrast=str2;
        }
        for(j=0;str3!='\0';j++,i++){
                contrast=str3;
        }
        str3='\0';
}
void change3(char *mingwen, char *upper_mingwen)
{
        int i,j;
        for(i=0;mingwen!='\0';i++){
                if(mingwen>='a'&&mingwen<='z'){
                        upper_mingwen=mingwen-32;
                }else{
                        upper_mingwen=mingwen;
                }
        }
}
void change4(char *upper_mingwen,char *contrast, char *anwen)
{
        int i,j,k;int t=0;
        for(i=0;upper_mingwen!='\0';i++){
                t=upper_mingwen;
                t=t-65;
                anwen=contrast;
        }       
        anwen='\0';
}
void change5(char *anwen, char *true_anwen, char *mingwen)
{
        int i;
        for(i=0;mingwen!='\0';i++){
                if(mingwen>='a'&&mingwen<='z'){
                        true_anwen=tolower(anwen);
                }else{
                        true_anwen=anwen;
                }
        }
        true_anwen='\0';
}
页: [1]
查看完整版本: 关于C语言密匙短语的题目{没有思路}