第一篇:C語言課程設計報告-學生成績管理系統(vc)
一、實踐的目的和要求
加深對《C語言》課程所學知識的理解,進一步鞏固C語言語法規則。學會編制結構清晰、風格良好、數據結構適當的C語言程序,從而具備解決綜合性實際問題的能力。
二、實踐內容
在熟練掌握C語言的基本知識:數據類型(整形、實型、字符型、指針、數組、結構等);運算類型(算術運算、邏輯運算、自增自減運算、賦值運算等);程序結構(順序結構、判斷選擇結構、循環結構);大程序的功能分解方法(即函數的使用)等。進一步掌握各種函數的應用,包括時間函數、繪圖函數,以及文件的讀寫操作等。
三、實踐任務 1.歡迎畫面
2.學生成績管理系統(自己設計界面)3.異或加密與解密
(1)文件加密
(2)文件解密 說明:將某一已知文件的內容以字符形式讀出,與密鑰(用戶從鍵盤輸入)的對應字符進行異或操作即可,解密同樣如此。如:設原文為ab1234,密鑰為56,則有 ab1234 565656
按二進制進行異或操作即可得到密文(亂碼)。4.移位加密與解密(1)文件加密(2)文件解密
說明:將某一已知文件的內容(限于英文字母)以字符形式讀出,根據密鑰k(用戶從鍵盤輸入)將對應字符進行移位操作即可,解密時移動方向相反。
如:設原文為abcdef,密鑰為5,則有
abcdef 每個字母按字母表向后移動位(注:z后接a)fghijkl 可得到密文(亂碼)。5.輔助運算(1)整數N模m的乘法逆t
要求:輸入整數N和m,求出t,若t不存在,給出信息。提示:這三個數滿足:N*t%m=1,使用窮舉法。
例如:當N為11,m為26時,由于(11×19)%26=1,所以11模26的乘法逆為19。(2)統計字母個數
要求:輸入一段英文字母,統計各個字母的個數,并按個數從大到小排序輸出。
提示:字母大小寫等價。輸出格式為:字母:個數。(3)OTP加密
要求:輸入同等長度的原文x和密鑰k(英文字母),根據公式 c=(x+k)%26 得到密文,并輸出。
提示:將26個字母按0~25編號,將原文字母和對應位置的密鑰字母的編號按上述公式進行計算后得到一個新的字母。
四、設計流程圖
流程圖另附!
五、相關程序 1 歡迎畫面
#include
initgraph(&gd,&gm,“c: urboc2”);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 s[15]={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(s[change/10]);}void DrawSnow(){int i;int sx[62];randomize();for(i=0;i<62;i++)sx[i]=(i+2)*10;cleardevice();while(!kbhit()){ Pr();
if(snownum!=100){
snow[snownum].speed=2+random(5);i=random(62);
snow[snownum].x=sx[i];
snow[snownum].y=10-random(100);} for(i=0;i putimage(snow[i].x,snow[i].y,save2,COPY_PUT);Pr(); if(snownum!=100)snownum++;/*delay(300);*/ setfillstyle(SOLID_FILL,15);for(i=0;i snow[i].y+=snow[i].speed; putimage(snow[i].x,snow[i].y,save1,COPY_PUT);if(snow[i].y>500) snow[i].y=10-random(200);} change++;if(change==140)change=10;} nosound();} 2學生成績管理系統(自己設計界面)#define N 1 struct student {char num[10];char name[10];int score[4];float ave;}stu[N];main() {int i,j,max,maxi,sum;float average;for(i=0;i {printf(“Please input scores of student %d :n”,i+1);printf(“NO.:”); scanf(“%s”,stu[i].num);printf(“name:”); scanf(“%s”,stu[i].name);for(j=0;j<3;j++) {printf(“score %d :”,j+1);scanf(“%d”,&stu[i].score[j]);} } average=0;max=0;maxi=0;for(i=0;i for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].ave=sum/3.0;average+=stu[i].ave;if(sum>max){max=sum;maxi=i;} } average/=N; printf(“ NO.name score1 score2 score3 averagen”);for(i=0;i {printf(“%5s”,stu[i].num); printf(“%10s”,stu[i].name);for(j=0;j<3;j++) printf(“%9d”,stu[i].score[j]);printf(“%8.2fn”,stu[i].ave);} printf(“average=%6.2fn”,average); printf(“The highest score is : %s,score total :%dn”,stu[maxi].name,max);getch();} 3.異或加密與解密 #include void jiami(char *in,char *pwd,char *out);void main(int argc,char *argv[]){ char in[30];char out[30];char pwd[8];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);} else { strcpy(in,argv[1]);strcpy(pwd,argv[2]);strcpy(out,argv[3]);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(ch^pwd[j>=k?j=0:j++],fp2);ch=fgetc(fp1);} fclose(fp1);fclose(fp2);} 4.移位加密與解密 #include“stdio.h” main(){ int choice=0,k;FILE *fp1,*fp2; char c,filename1[30],filename2[30]; 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<='z'-k))||((c>='A')&&(c<='Z'-k)))putc(c+k,fp2); else if(((c>'z'-k)&&(c<='z'))||((c>'Z'-k)&&(c<='Z')))putc(c-(26-k),fp2);else putc(c,fp2);}while(c!=EOF);break;case 2: do{ c=getc(fp1); if(((c>='a'+k)&&(c<='z'))||((c>='A'+k)&&(c<='Z')))putc(c-k,fp2); else if(((c>='a')&&(c<'a'+k))||((c>='A')&&(c<'A'+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的乘法逆t main(){ unsigned n,m,t=1;int c; printf(“Please enter the number:n”);scanf(“%d,%d”,&n,&m);while(t<65535){ 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.h” main(){ int i,j,t; char a[80],b[26];int c[26];char e; printf(“Please enter the letters:n”);gets(a); for(i=0;i<26;i++)b[i]='A'+i;for(i=0;i<26;i++)c[i]=0; for(j=0;j<80;j++){for(i=0;i<26;i++){ if(a[j]==b[i]||a[j]==b[i]+32)c[i]++;} if(a[j]=='
主站蜘蛛池模板:
肉大榛一进一出免费视频|
国产激情视频在线观看的|
久久久久久国产精品美女|
琪琪的色原网站|
日韩 亚洲 欧美 国产 精品|
色综合无码av网站|
狠狠五月深爱婷婷|
亚洲熟妇无码av|
久久99久久99精品免视看动漫|
强开小婷嫩苞又嫩又紧视频韩国|
四虎永久在线精品免费无码|
欧美牲交a免费|
香蕉人人超人人超碰超国产|
国产精品无码素人福利|
欧美狠狠入鲁的视频|
中文字幕乱码人妻综合二区三区|
久久婷婷五月综合97色一本一本|
门卫又粗又大又长好爽|
国产伦精品免编号公布|
99蜜桃臀久久久欧美精品网站|
久久五月丁香合缴情网|
国产精品国产三级国产av品爱网|
亚洲综合伊人久久大杳蕉|
人妻无码久久中文字幕专区|
午夜亚洲影院在线观看|
黄色小说视频|
午夜在线观看免费线无码视频|
欧美精品|
久久先锋男人av资源网站|
无码国产精成人午夜视频一区二区|
精品无码久久久久久久久水蜜桃|
中文字幕日韩精品亚洲一区|
先锋影音xfyy5566男人资源|
特级a欧美做爰片第一次|
国产精品国产三级国av在线观看|
三上悠亚网站在线观看一区二区|
久久久久人妻一区精品|
欧美性猛交久久久乱大交小说|
美女视频黄是免费|
天天综合色天天综合色h|
午夜理论片yy6080私人影院|