刚开学,大二数据结构——用c语言描述课程,老师第一节课提的问题,不会,急求网上各位大神解答!

栏目:资讯发布:2023-11-07浏览:2收藏

刚开学,大二数据结构——用c语言描述课程,老师第一节课提的问题,不会,急求网上各位大神解答!,第1张

第一个是简单的表结构,可以使用数组或链表来实现。

节点数据:

struct student{

char number[13];

char name[20];

enum gender;

int age;

char address[200];

}

无论数组和链表都可以直接抄书;

第二个问题,是一个树结构

通常二叉树就可以实现该功能,有很多家谱二叉树的实现可以参考。

以下程序已在win-tc和tc20下运行通过,已加详细注释(本人所写)。

/ 数据安全实用程序,加密解密简单程序 /

#include<stdioh>

#include<stdlibh>

#include<conioh>

int flag;

char encrypt(char ch,int key)/加密函数,把字符循环移位/

{

if(ch>='a' && ch<='z') / 如果是小写字母 /

{

ch=(ch-'a'+key%26)%26+'a'; / 字母向后移key%26个位置,超过字母z则再从a开始向后移动 /

}

else if(ch>='A' && ch<='Z') / 如果是大写字母 /

{

ch=(ch-'A'+key%26)%26+'A'; / 字母向后移key%26个位置,超过字母Z则再从A开始向后移动 /

}

return ch;

}

char decrypt(char ch,int key)/解密函数,把字符循环移位/

{

if(ch>='a' && ch<='z') / 如果是小写字母 /

{

ch=(ch-'a'+26-key%26)%26+'a'; / 字母向后移26-key%26个位置,超过字母z则再从a开始向后移动 /

}

else if(ch>='A' && ch<='Z') / 如果是大写字母 /

{

ch=(ch-'A'+26-key%26)%26+'A'; / 字母向后移26-key%26个位置,超过字母Z则再从A开始向后移动 /

}

return ch;

}

void menu()/菜单,1加密,2解密,3显示文本文件内容/

{

clrscr();

printf("\n=======================================================");

printf("\n1Encrypt the text file"); / 加密文件 /

printf("\n2Decrypt the text file"); / 解密文件 /

printf("\n3Display text file contents");/ 显示加密或解密或未加密或解密的文件 /

printf("\n4Quit\n");

printf("=========================================================\n");

printf("Please select a item:"); / 选择一个菜单 /

}

void logo()/显示程序信息/

{

printf("\nwelcome to encrypt program \n ");

return;

}

void encrypt_decrypt_File(char infile,int key, char outfile) / 加密或解密函数 /

{

FILE in,out;

char ch;

clrscr(); / 清屏 /

if((in=fopen(infile,"r"))==NULL) / 打开欲加密或解密的文件/

{

printf("Can not open the infile!\n"); / 如果打开文件失败或文件不存在打印打开失败信息 /

printf("Press any key to exit!\n");

getch(); / 并等待任一按键然后退出程序 /

exit(0);

}

if((out=fopen(outfile,"w"))==NULL) / 打开文件保存加密或解密后的内容/

{

printf("Can not open the outfile!\n"); / 如果打开文件失败或文件不存在打印打开失败信息 /

printf("Press any key to exit!\n"); / 并等待任一按键然后退出程序 /

fclose(in); / 关闭输入文件 /

getch(); / 等待按键,按任一键退出程序 /

exit(0);

}

ch=fgetc(in); /从文本文件中读入字符/

while(ch!=EOF)/加密或解密/

{

/如果是英文字符,则进行加密或解密,否则,不进行加密或解密处理/

if((ch>='a' && ch<='z' ) || (ch>='A' && ch<='Z'))

{ if(flag==1)

fputc(encrypt(ch,key),out);

if(flag==2)

fputc(decrypt(ch,key),out);

}

else

fputc(ch,out);

ch=fgetc(in);

}

/关闭输入及输出文件/

fclose(in);

fclose(out);

}

void displayFile(char infile) /将文本文件的内容显示在屏幕上/

{

FILE fp;

char string[81];

if((fp=fopen(infile,"r"))==NULL) / 以只读方式打开文本文件 /

{

printf("cann't open file");exit(0); / 如果文件不存在或打开失败打印无法打开信息并退出程序 /

}

while(fgets(string,81,fp)!=NULL)

fputs(string,stdout); /把所取字符串送到屏幕显示/

fclose(fp); / 关闭文件 /

}

int main()

{

int i,n;

char ch0,ch1;

char infile[40],outfile[40];

textbackground(LIGHTGRAY); /设置背景颜色为浅灰色/

textcolor(BLACK); /设置文字颜色为黑色/

clrscr();/清除屏幕显示/

logo(); /显示程序信息/

sleep(2); / 延时2秒 /

menu(); /显示屏幕菜单/

ch0=getche();/等待用户从键盘输入,并把输入显示在屏幕上/

while(ch0!='4')

{

clrscr();

if(ch0=='1') /选择加密功能/

{

flag=1;

printf("\nPlease input the infile to be encrypted:"); / 输入要加密的文件名 /

scanf("%s",infile); / 该文件要和本程序放在同一个目录下 /

printf("Please input the encrypt key:");

scanf("%d",&n);/输入加密密码/

printf("Please input the outfile:"); /输入存放加密内容的文件名/

scanf("%s",outfile); / 该文件可以自动创建 /

encrypt_decrypt_File(infile,n,outfile);

printf("\nEncrypt is over!\n");/ 加密成功 /

sleep(1); / 延时1秒 /

}

else if(ch0=='2') /选择解密功能/

{

flag=2;

printf("\nPlease input the infile to be decrypted:"); / 输入要解密的文件名 /

scanf("%s",infile); / 该文件要和本程序放在同一个目录下 /

printf("Please input the decrypt key:");

scanf("%d",&n);/输入解密密码,加密和解密密码应相同/

printf("Please input the outfile:"); /输入存放解密内容的文件名/

scanf("%s",outfile); / 该文件可以自动创建 /

encrypt_decrypt_File(infile,n,outfile);

printf("\nDecrypt is over!\n");

sleep(1); / 延时1秒 /

}

else if(ch0=='3') /选择显示文本文件功能/

{

printf("\nPlease input the infile to be displayed:"); / 输入要显示的文件名 /

scanf("%s",infile);

displayFile(infile);/ 显示文件 /

getch();

}

else

{ /不合法输入/

printf("\nplease input a valid number(1-4)\n");

sleep(1); / 延时1秒 /

}

menu();/显示程序菜单/

ch0=getche(); /等待用户下一次的功能选择/

}

system("cls");/清除屏幕/

logo(); /显示程序信息/

printf("\nGood Bye!\n");

sleep(2);/ 延时2秒 /

system("pause"); / 暂停,按任一键退出程序 /

return 0;

}

亿图流程图制作软件是一款非常实用的绘图软件,如果用这款软件绘制自己的家族图谱,相信也会是一个非常方便的事情。尤其是有些用户的家族非常庞大,涉及到很多的支线,但是具体该用什么模板来操作,下面请看小编带来的亿图软件如何设计家谱图教程。

打开亿图图示软件,进入其主界面;找到并选中组织结构图;

在组织结构图中找到家庭树,双击它;

在进入的页面点家谱图;

据家庭成员的情况和性别选择图形,如男性;

将它拉到编辑区;

点插入,找到矢量文本,输入对应文字;

把文字移到矩形框中;

再插入第二代成员的矩形框;

然后点添加连接线;

画好连接线后,一个家谱图就可以用这样的方法依次画好。

跟随上述图文步骤,就能学会用亿图软件如何设计家谱图,满足部分用户的需求,同时后续还能继续添加内容不断完善。希望这篇教程有帮助到你。

亿图图示软件|

第四周阅读感悟(三)

《家谱图——评估与干预》是非常专业的一本书,李松蔚老师推荐的书通常需要2周到一个月的阅读,并且可以反复阅读。阅读本书1-4章我的收获是:

1、家庭结构图的绘制,各种符号的含义;

2、如何通过家庭访谈来获得相关信息;

3、评估家庭的压力,横向压力包括个人生命周期、不可预见的因素(例如移民、意外、自然灾害、慢性病、经济问题等),纵向压力包括:贫穷、环境、文化、政治、种族、性别、阶级、暴力、三角关系、家庭秘密、遗产、宗教等;

4、根据系统论的观点,家庭模式有两个极端,一疏离;二家庭成员过于亲密,压力或焦虑水平超过系统所能承受的限度时就会出现家庭功能紊乱;封闭融合的家庭拒绝改变。关注家庭中的三角关系、权力差异、某部分缺陷另一部分代偿以保持系统平衡稳定(例如几个人缺乏责任感,另外一个人过度负责)等。

5、跨越时间和空间,从家庭事件编年表梳理家族中重大事件出现的规律,如肯尼的家族的29名孙辈中,超过十位意外死亡、因吸毒被捕或进精神病院;其中至少五位是孙辈中的长子(孙辈中共有六位长子),这可能昭示出家族对儿子的重视以及长子地位承载着绝大的压力。

6、阅读了多个名人的家谱图,包括荣格家族、肯尼迪家族、英国王室温莎家族等,也阅读了多种家谱图,例如人口统计学资料家谱图、家庭功能家谱图、文化家谱图、家庭背景信息家谱图等。可以从多个侧面去疏离家族的信息。

这是一本工具书,对进一步学习家庭系统治疗和儿童青少年父母咨询中的访谈很有意义。

张莹 2021年5月28日

刚开学,大二数据结构——用c语言描述课程,老师第一节课提的问题,不会,急求网上各位大神解答!

第一个是简单的表结构,可以使用数组或链表来实现。节点数据:struct student{ char number[13]; char name[20]; enum gender...
点击下载
热门文章
    确认删除?
    回到顶部