symmetricsortc语言

用C语言编写一个对称加密算法,对字符串加密

/* 本问题的关键是如何交换ASCII的二进制位,下面提供简短算法,并附上VC++ 6.0环境下的运行结果截图。

*/

#include stdio.h

char swapbit(char c) {

char i,num = 0,ch[8];

for(i = 0;i  8;i++) {

ch[i] = c1;

c = (c  1);

}

for(i = 0;i  8;i++) {

num = 2*num + ch[i];

}

return num;

}

int main() {

char ch;

for(ch = ‘A’;ch = ‘Z’;ch++) {

printf(“%c = %X : %X\n”,ch,ch,0XFFswapbit(ch));

}

return 0;

}

C语言 Symmetric Sort

#includestdio.h  

#includestring.h  

#includealgorithm  

using namespace std;  

struct ch{  

    int len; char str[30];  

}s[1000];  

bool cmp(struct ch a,struct ch b){  

    return a.lenb.len;  

}  

int main(){  

    int i,j,n;  

    scanf(“%d”,n); 

        for(i=0;in;i++){  

            scanf(“%s”,s[i].str);//这里s[i]前边加不加符号都行   

            s[i].len=strlen(s[i].str);  

        }  

        sort(s,s+n,cmp);//这里还有一个stable_sort,用法和sort是一样的,区别是stable_sirt是稳定排序,对于相等的值次序不变   

        for(i=0;in;i+=2)  

             printf(“%s “,s[i].str);  

        if(i==n+1) j=n-2;//因为i变到n+1的时候,可以自己调试一下   

        else j=n-1;  

        for(;j=0;j-=2)  

            printf(“%s “,s[j].str);  

    printf(“\n”);

    return 0;  

}

symmetricsortc语言

C++ 标题为Symmetric Sort的程序

#include iostream

#include string 

using namespace std;

string s[15];

int main()

{

    int n;

    cin  n;

    for (int i=0; in; ++i)

        cin  s[i];

    int left=0, right=n-1;

    while (leftright)

    {

        for (int i=left+1; i=right; ++i)

            if (s[left].length()s[i].length()) swap(s[left], s[i]);

        for (int i=left+1; iright; ++i)    

            if (s[right].length()s[i].length()) swap(s[right], s[i]);

        ++left, –right;

    }

    for (int i=0; in; ++i)

        cout  s[i]  ((i==n-1)?’\n’:’ ‘);

}

顺序表和链表的基本操作,用C语言实现!

顺序存储的线性表的算法

#include “stdio.h”

#include “stdlib.h”

#define Status int

#define OVERFLOW 0

#define TRUE 1

#define FALSE 0

#define OK 1

#define MAXSIZE 100

typedef int ElemType;

typedef struct list

{ElemType elem[MAXSIZE];

int length;

}SqList;

void InitList(SqList L){

L.length=0;

}

/*建立顺序表*/

void CreateList(SqList L)

{

int i;

printf(“input the length”);

scanf(“%d”,L.length);//输入表长

for(i=1;i=L.length;i++)

scanf(“%d”,L.elem[i-1]);//输入元素

}

//顺序表的遍历

void printdata(ElemType e){

printf(“%4d”,e);

}

void Traverse(SqList L,void (*visit)(ElemType e))

{ int i;

printf(“The elements of the lists are:\n”);

for(i=1;i=L.length;i++){

if (i%10==0)printf(“\n”);//每行显示10个元素

visit(L.elem[i-1]);//输出表中元素

}

printf(“\n”);

}

//有序顺序表L中插入元素e使序列仍有序

void Insert(SqList L,ElemType e)

{int i,j;

if (L.length==MAXSIZE)exit(OVERFLOW);//表满,不能插入

for(i=1;i=L.lengthL.elem[i-1]=e;i++);//向后查找

for(j=L.length;j=i;j–)

L.elem[j]=L.elem[j-1];//元素后移

L.elem[i-1]=e;//插入e

L.length=L.length+1;//表长加1

}

//建立递增有序的顺序表

void CreateList_Sorted(SqList L)

{int i,num;

ElemType e;

L.length=0;

printf(“Create a sorted list,Input the length of the list\n”);

scanf(“%d”,num);

printf(“Input the data %d numbers\n”,num);

for(i=1;i=num;i++){

scanf(“%d”,e);

Insert(L,e);

}

}

/*Merge two sorted lists*/

void MergeList(SqList La,SqList Lb,SqList Lc)

{int *pa,*pb,*pc;

if (La.length+Lb.lengthMAXSIZE) exit(OVERFLOW);

else

{pa=La.elem;pb=Lb.elem;pc=Lc.elem;

while (paLa.elem+La.lengthpbLb.elem+Lb.length)

*pc++=(*pa=*pb)?*pa++:*pb++;/*公共部分合并*/

while (paLa.elem+La.length) *pc++=*pa++;

/*R1表的剩余部分放到R的后部*/

while (pbLb.elem+Lb.length) *pc++=*pb++;

/*R2表的剩余部分放到R的后部*/

Lc.length=La.length+Lb.length;/*R表长*/

}

}

//判断元素是否对称,对称返回TRUE 否则返回FALSE

Status Symmetric(SqList L)

{int low,high;

low=0;

high=L.length-1;

while(lowhigh)

if (L.elem[low]==L.elem[high]){low++;high–;}

else return(FALSE); return(TRUE); }

//顺序表的主函数部分

//#include “seqlist.h”

void main()

{SqList L1,L2,L;

int select;

ElemType e;

do{printf(“\n1 insert 2 merge”);

printf(“\n3 symmetric 0 exit \n”);

printf(“Please select(0–3)\n”);

scanf(“%d”,select);

switch(select){

case 1:

InitList(L);

CreateList_Sorted(L);

Traverse(L,printdata);

printf(“\nInput the element of inserted\n”);

scanf(“%d”,e);

Insert(L,e);

Traverse(L,printdata);

break;

case 2:

InitList(L1);

CreateList_Sorted(L1);

Traverse(L1,printdata);

InitList(L2);

CreateList_Sorted(L2);

Traverse(L2,printdata);

InitList(L);

MergeList(L1,L2,L);

Traverse(L,printdata);

break;

case 3:

InitList(L);

CreateList(L);

Traverse(L,printdata);

if (Symmetric(L)) printf(“Yes!\n”); else printf(“Not\n”);

break;

case 0:break;

default:printf(“Error! Try again!\n”);

}

}while(select);

}

/*单向链表的有关操作示例*/

/*类型定义及头文件部分,文件名为sllink.h*/

#include stdio.h

#include stdlib.h

typedef int ElemType;//元素实际类型

typedef struct LNode{

ElemType data;

struct LNode *next;

}LNode,*LinkList; //定义结点、指针类型名

//头插法建立无序链表

void CreateList(LinkList L){

LinkList p;

ElemType e;

L=(LinkList)malloc(sizeof(LNode));

L-next=NULL;

printf(“头插法建立链表,以0结束\n”);

scanf(“%d”,e);

while(e){

p=(LinkList)malloc(sizeof(LNode));

p-data=e;

p-next=L-next;

L-next=p;

scanf(“%d”,e);

}

}

/*非递减有序单向链表L插入元素e序列仍有序*/

void Insert_Sort(LinkList L,ElemType e){

LinkList p,s;

s=(LinkList)malloc(sizeof(LNode));

s-data=e;

p=L;

while(p-nextp-next-data=e)

p=p-next;/*查找插入位置*/

s-next=p-next; /*插入语句*p结点后插入*s结点*/

p-next=s;

}

/*建立递增有序的单向链表*/

void Create_Sort(LinkList L){

ElemType e;

L=(LinkList)malloc(sizeof(LNode));

L-next=NULL;

printf(“建立有序表,输入任意个整型数据以0结束\n”);

scanf(“%d”,e);

while(e){

Insert_Sort(L,e);

scanf(“%d”,e);

}

}

/*单向链表的遍历*/

void Traverse(LinkList L){

LinkList p;

printf(“遍历链表”);

for(p=L-next;p;p=p-next)

printf(“%5d”,p-data);

printf(“\n”);

}

/*在单向链表删除元素e*/

void Delete(LinkList L,ElemType e){

LinkList p,q;

p=L;

q=L-next;

while(q q-data!=e){//查找元素的删除位置

p=q;

q=q-next;

}

if(!q) printf(“\nnot deleted”);/*未找到元素e*/

else {p-next=q-next;/*找到删除*/

free(q);}

}

/*单向链表的逆置*/

void exch(LinkList L){

LinkList p,s;

p=L-next;

L-next=NULL;

while(p){

s=p;

p=p-next;

s-next=L-next;

L-next=s;

}

}

/*两个非递减有序单向链表合并后仍为非递减序列*/

void MergeIncrease(LinkList La,LinkList Lb,LinkList Lc){

LinkList p,q,s,rear;

p=La-next;

q=Lb-next;

Lc=rear=La;

free(Lb);

while(pq){

if (p-dataq-data) {s=p;p=p-next; }

else {s=q;q=q-next; }

rear-next=s;/*较小元素插入表尾*/

rear=rear-next;

}

if (p) rear-next=p; else rear-next=q;

}

/*主函数部分,文件名为sllink.c*/

//#include “sllink.h”

void main(){

LinkList La,Lb,Lc;

ElemType e;

int select;

do{

printf(” 1 建立无序表,再删除指定元素\n”);

printf(” 2 建立递增有序表,再逆置\n”);

printf(” 3 建立两个递增有序表,将它们和并为一个仍递增表\n”);

printf(” 0 退出,请输入选项(0-3)\n”);

scanf(“%d”,select);

switch(select){

case 0:

break;

case 1:

CreateList(La);

Traverse(La);

printf(“输入需删除的元素\n”);

scanf(“%d”,e);

Delete(La,e);

Traverse(La);

break;

case 2:

Create_Sort(La);

Traverse(La);

exch(La);

printf(“The list that is exchaged\n”);

Traverse(La);

break;

case 3:

Create_Sort(La);Traverse(La);

Create_Sort(Lb);Traverse(Lb);

MergeIncrease(La,Lb,Lc);Traverse(Lc);

break;

default:

printf(“输入选项错误,请重新输入!\n”);

}

}while(select);

}

这些内容不知道能不能帮助到你。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月25日 13:22:08
下一篇 2024年3月25日 13:33:40

相关推荐

  • c语言改写模式,c语言实现修改功能

    c语言程序修改? 1、这个程序有4个错误,我都加粗了,第一个是m没有赋初值,第二个是while表达式中的ch=getchar()需要括号括起来,第三个是m=m*10+ch-0中的0也需要用单引号括起来,第四个是第2个while中为m!=0。 2、define容易造成误会,因为不符合一般的编程习惯,false 0, true 1;scanf放在你的那个地方是达…

    2024年5月23日
    3900
  • c语言控制代码的换码序列,c语言交换代码

    求C语言编程大神解答一下下面这个编程代码? k==5,用5去除125余0,所以r=125%5中r为0。由于!0为1,所以执行while循环体:先打印出5(k的值),再n=n/k==125/5=25;由于251则再打印出*号。这一循环结果输出是5*。 下面是我的代码,三个函数分别对应三个问题。 在实现基本要求的前提下,拓展了可以从键盘输入的功能,以下为各题代码…

    2024年5月23日
    5600
  • c语言扫描io脚状态,c语言端口扫描

    求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。 上升沿触发是当信号有上升沿时的开关动作,当电位由低变高而触发输出变化的就叫上升沿触发。也就是当测到的信号电位是从低到高也就是上升时就触发,叫做上升沿触发。 单片机怎么计算1s内下降沿的个数的C语言程序或者计算两个下降沿的时间(检测脉冲频率)计算1s内下降沿的个数方法是,一个定时器设置定时1…

    2024年5月23日
    4300
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4300
  • c语言三位小数,C语言三位小数

    怎样用C++语言输出精确到小数点后三位的数? 1、用C++语言输出精确到小数点后三位的数,可以参考下面给出的代码:coutsetiosflags(ios:fixed)setprecision(3)。其中 setiosflags中set是设置的意思。ios是iostream的缩写,即输入输出流。flags是标志的意思。 2、要精确到小数点后若干位,则数据类型为…

    2024年5月23日
    7200
  • c语言21点游戏,二十一点游戏代码c语言

    如何使用C语言编写简单小游戏? 1、数学知识:长方形的面积S=a*b 长方形周长L=2*(a+b)其中a b分别为长方形的宽和高。算法分析:长方形面积及周长均依赖于宽和高,所以先要输入宽高值,然后根据公式计算,输出结果即可。 2、/*也不知道你是什么级别的,我是一个新手,刚接触编程语言,以下是我自己变得一个小程序,在所有c语言的编译器(vc++0、turbo…

    2024年5月23日
    6300
  • c语言当中的null,C语言当中的符号

    C/C++中,NULL和null的区别是什么? nul 和 null要看编译器,不同的编译器有所区别。 所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。 null是是什么都没有的意思。在java中表示空对象。 本意是“空的;元素只有零的”意思。计算机中通常表示空值,无结果,或是空集合。\x0d\x0a在ASCII码…

    2024年5月23日
    4500
  • 包含c语言对txt文件命名的词条

    如何在C语言编程里面修改源文件名字 如果你是在WINDOWS的话,简单了,随便用个编辑器,比如记事本,然后写c源程序,保存到你想要保存的位置。如果你在DOS下,可以用edit,写好以后,按alt键,选择文件菜单,然后保存。 用open打开文件,注意操作模式使用“修改”或者“添加” 用write或者fprintf向文件中写入你的内容。 用close关闭文件。 …

    2024年5月23日
    4800
  • 学c语言编程,学c语言编程用什么软件

    编程开发必须要学C语言吗? 1、要学习。编程开发的学习内容主要包括c语言、python和c+语言。C语言作为一种简单灵活的高级编程语言,它是一个面向过程的语言,一般是作为计算机专业的基础入门语言课程。 2、C语言。对于刚接触编程的人来说,先学习C语言是非常重要的。C语言可以说是是计算机编程语言的鼻祖,其他的编程语言几乎全是由C语言变化衍生出来的。 3、不需要…

    2024年5月23日
    3400
  • c语言用string定义字符串,c语言中用string类型来处理字符串类型

    C++怎样定义定义字符串 1、第一是字符数组来表示字符串。用下面的语句声明:char a[10];C语言中字符数组与字符串的唯一区别是字符串末尾有一个结束符\0,而字符数组不需要。 2、在C中定义字符串有下列几种形式:字符串常量,char数组,char指针 字符串常量 即:位于一对双括号中的任何字符。双引号里的字符加上编译器自动提供的结束标志\0字符,作为 …

    2024年5月23日
    4200

发表回复

登录后才能评论



关注微信