C语言课程设计报告.doc_第1页
C语言课程设计报告.doc_第2页
C语言课程设计报告.doc_第3页
C语言课程设计报告.doc_第4页
C语言课程设计报告.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言课程设计报告一、实践的目的和要求加深对C语言课程所学知识的理解,进一步巩固C语言语法规则。学会编制结构清晰、风格良好、数据结构适当的语言程序,从而具备解决综合性实际问题的能力。二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。三、实践任务1欢迎画面2学生成绩管理系统(自己设计界面)3异或加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容以字符形式读出,与密钥(用户从键盘输入)的对应字符进行异或操作即可,解密同样如此。如:设原文为ab1234,密钥为56,则有 ab1234565656按二进制进行异或操作即可得到密文(乱码)。4移位加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容(限于英文字母)以字符形式读出,根据密钥k(用户从键盘输入)将对应字符进行移位操作即可,解密时移动方向相反。如:设原文为abcdef,密钥为5,则有 abcdef 每个字母按字母表向后移动位(注:z后接a)fghijkl 可得到密文(乱码)。5辅助运算(1)整数N模m的乘法逆t要求:输入整数N和m,求出t,若t不存在,给出信息。提示:这三个数满足:N*tm1,使用穷举法。例如:当N为11,m为26时,由于(1119)261,所以11模26的乘法逆为19。(2)统计字母个数 要求:输入一段英文字母,统计各个字母的个数,并按个数从大到小排序输出。提示:字母大小写等价。输出格式为:字母:个数。(3)OTP加密要求:输入同等长度的原文x和密钥k(英文字母),根据公式 c=(xk) 26 得到密文,并输出。提示:将26个字母按025编号,将原文字母和对应位置的密钥字母的编号按上述公式进行计算后得到一个新的字母。四、设计流程图流程图另附!五、相关程序1 欢迎画面 #include#includestruct Snowint x;int y;int speed;snow100;int snownum=0;int size;int change=10;void *save1,*save2;void Copy();void DrawSnow();void Pr();void main(void)int gd=DETECT,gm;initgraph(&gd,&gm,c:turboc2);Copy();DrawSnow();getch();closegraph();void Copy()setcolor(0);setfillstyle(SOLID_FILL,15);fillellipse(200,200,4,4);size=imagesize(196,196,204,204);save1=malloc(size);save2=malloc(size);getimage(196,196,204,204,save1);getimage(96,96,104,104,save2);void Pr()int s15=0,100,150,200,150,200,250,150,250,300,250,150,100,250,350;setcolor(change/10);settextstyle(0,0,4);outtextxy(150,200,Welcome!);sound(schange/10);void DrawSnow()int i;int sx62;randomize();for(i=0;i62;i+)sxi=(i+2)*10;cleardevice();while(!kbhit()Pr();if(snownum!=100) snowsnownum.speed=2+random(5); i=random(62); snowsnownum.x=sxi; snowsnownum.y=10-random(100);for(i=0;isnownum;i+) putimage(snowi.x,snowi.y,save2,COPY_PUT); Pr();if(snownum!=100) snownum+;/*delay(300);*/setfillstyle(SOLID_FILL,15);for(i=0;i500) snowi.y=10-random(200); change+;if(change=140)change=10;nosound();2学生成绩管理系统(自己设计界面)#define N 1struct studentchar num10;char name10;int score4;float ave;stuN;main()int i,j,max,maxi,sum;float average;for(i=0;iN;i+)printf(Please input scores of student %d :n,i+1);printf(NO.:);scanf(%s,stui.num);printf(name:);scanf(%s,);for(j=0;j3;j+)printf(score %d :,j+1); scanf(%d,&stui.scorej);average=0;max=0;maxi=0;for(i=0;iN;i+)sum=0;for(j=0;jmax)max=sum; maxi=i;average/=N;printf( NO. name score1 score2 score3 averagen);for(i=0;iN;i+)printf(%5s,stui.num);printf(%10s,);for(j=0;j3;j+) printf(%9d,stui.scorej);printf(%8.2fn,stui.ave);printf(average=%6.2fn,average);printf(The highest score is : %s,score total :%dn,,max);getch();3异或加密与解密#include#include#include#includevoid jiami(char *in,char *pwd,char *out);void main(int argc,char *argv)char in30;char out30;char pwd8;if(argc!=4)printf(Input file name:n);gets(in);printf(Please enter password:n);gets(pwd);printf(Output file name:n);gets(out);jiami(in,pwd,out);elsestrcpy(in,argv1);strcpy(pwd,argv2);strcpy(out,argv3);jiami(in,pwd,out);void jiami(char *in,char *pwd,char *out_file)FILE *fp1,*fp2;register char ch;int j=0;int k=0;fp1=fopen(in,rb);if(fp1=NULL)printf(Cannot open in-file!n);exit(1);fp2=fopen(out_file,wb);if(fp2=NULL)printf(Cannot open or create output-file!n);exit(1);while(pwd+k);ch=fgetc(fp1);while(!feof(fp1)fputc(chpwdj=k?j=0:j+,fp2);ch=fgetc(fp1);fclose(fp1);fclose(fp2);4移位加密与解密#includestdio.hmain()int choice=0,k;FILE *fp1,*fp2; char c,filename130,filename230; printf(Please input two deferent filename:); scanf(%s%s,filename1,filename2); printf(Please input the password :n); scanf(%d,&k); if(fp1=fopen(filename1,r)=NULL) printf(nERROR!CAN NOT OPEN THE FILEn); else fp2=fopen(filename2,w); printf(nChoose:(1-jiami 2-jiemi); scanf(%d, &choice); switch(choice) case 1: do c=getc(fp1); if(c=a)&(c=A)&(cz-k)&(cZ-k)&(c=a+k)&(c=A+k)&(c=a)&(c=A)&(cA+k) putc(c+(26-k),fp2); else putc(c,fp2); while(c!=EOF); break; default: printf(nYou have choose a wrong number!Please choose again!); fclose(fp1); fclose(fp2);5辅助运算(1)整数N模m的乘法逆tmain()unsigned n,m,t=1;int c;printf(Please enter the number:n);scanf(%d,%d,&n,&m);while(t65535)c=n*t%m;if(c=1|c=0) break;t+;if(t=65535|c=0)printf(Nicheng number is not exited!n);if(c=1)printf(T is : %dn,t);getch();(2)统计字母个数#include string.hmain()int i,j,t;char a80,b26;int c26;char e;printf(Please enter the letters:n);gets(a);for(i=0;i26;i+) bi=A+i;for(i=0;i26;i+)ci=0;for(j=0;j80;j+)for(i=0;i26;i+) if(aj=bi|aj=bi+32) ci+; if(aj=0)break;for(j=0;j=25;j+)for(i=0;ici+1) t=ci;ci=ci+1;ci+1=t; e=bi;bi=bi+1;bi+1=e; for(i=25;i=0;i-)if(ci!=0) printf(The %c letter number is %d n,bi,ci);getch();(3)OTP加密#include stdio.hmain()char a80,b80,c80;int i;printf(Please enter the x :n);gets(a);printf(Please enter the k :n);gets(b);for(i=0;i80;i+)ci=(ai+bi)%26;printf(The result is :n);for(i=0;i80&ci!=0;i+) printf(%c,ci);getch();六 心得体会通过此次C语言程序设计实践,本人实在是获益不浅!C语言是上个学期开的课程,所以这个学期并没怎么看过,当要开始设计的时候,还真不知从哪下手!结果,第一次的上机,我只坐了一个下午,什么也没干!回去以后,我想,这样不行,这样下去还得了!我就重新学了一遍我们上个学期的教材,发觉自已有许多都遗忘了!特别是有文件的操作,几乎是一遍空白!温习过后,开始做题!那

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论