大一C語言課程設(shè)計(jì)_第1頁
大一C語言課程設(shè)計(jì)_第2頁
大一C語言課程設(shè)計(jì)_第3頁
大一C語言課程設(shè)計(jì)_第4頁
大一C語言課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C語言課程設(shè)計(jì)報(bào)告班 級(jí): 電氣1004 學(xué) 號(hào): 201009334 姓 名: 雷海燕 指導(dǎo)教師: 王果 評(píng)語: 2011 年 07 月 18 日1 基本題目1.1題目1.1 題目有17個(gè)人圍成一圈,從0號(hào)的人開始報(bào)數(shù),凡報(bào)到3的倍數(shù)的人離開圈子,然后再數(shù)下去。直到最后只剩下一個(gè)人為止。問此人原來的位置是多少號(hào)。1.2 題目分析創(chuàng)建一個(gè)指針變量,指針變量中的初值為0至16。然后通過for循環(huán)將指針變量中所指的值是三的倍數(shù)的變量賦值為0,最后找出所要找的值。1.3 程序#include <stdio.h>#define N 17int main()int i,j,k,aN+1,*p

2、;for(i=0,p=a;p<=a+N;i+,p+)*p=i;p=a+1;k=N;for(i=0,j=1;k!=1;j+)if(p>(a+N)p=a+1;if(*p!=0)i+;if(i%3=0&&i!=0)*p=0;i=0;k-;p+;for(i=1;i<=N;i+)if(ai!=0)printf("最后留下的是%dn",ai);return 0;1.4流程圖 開始i=0,p=a N=17 i=0 p<=a+NYN*p=i, i+, p+p=a+1, i=0, j=0k!=1k!=1Yp>a+NNNp=a+NY*p!=0Ni+

3、Yi%3!=0NY*p=0,i=0,k-p+,j+p+,j+ i<=NY輸出最后留下的值Ni+ 結(jié)束圖1.1 基本題目的流程圖1.5程序的運(yùn)行結(jié)果 基本體運(yùn)行結(jié)果如圖1.2所示:圖1.2 基本題目運(yùn)行結(jié)果2 改錯(cuò)題目2.1 改正后程序#include <stdio.h>int main()int x=1; int y;y=x+;printf("y=%d ",y);int z;z=+x;printf("z=%dn",z)return 0;2.2 程序運(yùn)行結(jié)果程序完成的功能:用x的初始值算出y與z的值。改正后的運(yùn)行結(jié)果如圖2.1所示: 圖2

4、.1 改正后的運(yùn)行結(jié)果3.綜合題目3.1 題目班級(jí)成績(jī)管理系統(tǒng),對(duì)一個(gè)有N個(gè)學(xué)生的班級(jí),每個(gè)學(xué)生有M門課程。該系統(tǒng)實(shí)現(xiàn)對(duì)班級(jí)成績(jī)的錄入、顯示、修改、排序、保存等操作的管理。3.2 程序的主要功能本程序?qū)崿F(xiàn)對(duì)一個(gè)班學(xué)生某幾門課程的錄入,成績(jī)的顯示、成績(jī)的保存、對(duì)成績(jī)進(jìn)行排、對(duì)成績(jī)進(jìn)行修改、對(duì)成績(jī)進(jìn)行統(tǒng)計(jì)(包括每門課程的最高分、平均分、超過每門平均分的人數(shù)等),運(yùn)行程序后退出程序。3.3 各函數(shù)的功能(1)input函數(shù)利用嵌套循環(huán)語句,實(shí)現(xiàn)對(duì)N位學(xué)生,M門課程的輸入。(2)output函數(shù)實(shí)現(xiàn)對(duì)先前輸入學(xué)生成績(jī)的輸出。(3)save函數(shù)將輸入數(shù)據(jù)存入指定文件中。(4)rank函數(shù)計(jì)算出所有學(xué)生的

5、成績(jī)總分,并按照分?jǐn)?shù)從高到低,進(jìn)行輸出。(5)change函數(shù)判斷密碼是否正確,并對(duì)選中學(xué)生成績(jī)進(jìn)行修改。3.4程序流程圖 開始輸入 x'A'或'a''B'或'b''F'或'f'i=0i=0'C'或'c''D'或'd''E'或'e''G'或'g'輸出科目名利用for循環(huán),對(duì)每一位學(xué)生算出成績(jī)總分輸入科目名將數(shù)據(jù)存入指定文件Y利用coun函數(shù),進(jìn)行對(duì)學(xué)生成績(jī)的統(tǒng)計(jì)詳見圖6 i

6、+i+YReturn 0,即退出系統(tǒng)i<=M利用tran函數(shù),進(jìn)行加密碼,修改學(xué)生成績(jī)。詳見圖5 i<MNNi=0i=0輸出姓名、學(xué)號(hào)利用for循環(huán),將學(xué)生按成績(jī)從高到低輸出輸入學(xué)生姓名j=0輸出成績(jī)輸入學(xué)號(hào)Yj+YY輸入成績(jī)j<MNi+i+i<Ni<NNNWhile (1) 結(jié)束 圖3.1 綜合題目的流程圖3.4 源程序 #include<stdio.h>#include<string.h>#include<windows.h>#define N 10/*學(xué)生人數(shù)*/#define M 4/*課程數(shù)*/#define PASS

7、 890508/*修改密碼*/void input();/*成績(jī)輸入*/void output();/*成績(jī)顯示*/void save();/*成績(jī)保存*/void rank();/*成績(jī)排序*/void tran();/*成績(jī)修改*/void coun();/*成績(jī)統(tǒng)計(jì)*/void errorinput();/*出錯(cuò)輸出*/struct student/*成績(jī)數(shù)據(jù)結(jié)構(gòu)體*/char name10;int num;float scoreM;double sum;studN;char subject_nameN10;int main()char x;while(1) system("c

8、ls");printf(" _n");printf(" * 班級(jí)成績(jī)管理系統(tǒng) *n");printf(" * *n");printf(" * A 成績(jī)錄入 *n");printf(" * *n");printf(" * B 成績(jī)顯示 *n");printf(" * *n");printf(" * C 成績(jī)保存 *n");printf(" * *n");printf(" * D 成績(jī)排序 *n&qu

9、ot;);printf(" * *n");printf(" * E 成績(jī)修改 *n");printf(" * *n");printf(" * F 成績(jī)統(tǒng)計(jì) *n");printf(" * *n");printf(" * G 退出系統(tǒng) *n");printf(" * *n");printf(" _n");printf(" 輸入你的選擇:");scanf("%c",&x);switch(x)c

10、ase 'a':case 'A':input();break; case 'b':case 'B':output();break; case 'c':case 'C':save();break; case 'd':case 'D':rank();break; case 'e':case 'E':tran();break; case 'f':case 'F':coun();break; case '

11、g':case 'G':return 0; default:errorinput();break;getchar();return 0;void input()/*成績(jī)輸入*/int i,j;printf("請(qǐng)輸入科目名稱:n");for(i=0;i<M;i+)/*輸入科目名稱*/printf("科目%d:",i+1);scanf("%s",subject_namei);for(i=0;i<N;i+)/*輸入學(xué)生信息、各科成績(jī)*/printf("學(xué)生%d:n",i+1);prin

12、tf("姓名:");scanf("%s",&);printf("學(xué)號(hào):");scanf("%d",&studi.num);for(j=0;j<M;j+)printf("%s成績(jī):",subject_namej);scanf("%f",&studi.scorej);printf("n");void output()/*成績(jī)顯示*/int i,j;system("cls");printf(&

13、quot;姓名 學(xué)號(hào) ");for(i=0;i<=M;i+)printf(" %s",subject_namei); /*在一行里面輸出科目名稱,相互之間有間隔。作為其下列表的目錄。*/printf("n");for(i=0;i<N;i+)printf("%1st%1dt",,studi.num);for(j=0;j<M;j+)printf("%5.1ft",studi.scorej);printf("n");printf(" !輸入任意

14、鍵返回!n");getchar();void save() /*成績(jī)保存*/FILE *fp;int i,j;if(fp=fopen("data.txt","w")=NULL) /*文件打開*/printf("File open error!n");return;for(i=0;i<M;i+) /*寫入各科目名稱*/fprintf(fp," %s ",subject_namei);fprintf(fp,"n");for(i=0;i<N;i+) /*寫入學(xué)生數(shù)據(jù)、成績(jī)信息*/

15、fprintf(fp,"%5s%5d ",,studi.num);for(j=0;j<M;j+)fprintf(fp,"%6.1f",studi.scorej);fprintf(fp,"n");if(fclose(fp) /*文件關(guān)閉*/printf("Can not close the file!n");return;printf("File save succeed!n");getchar();return;void rank() /*成績(jī)排序*/void swap

16、(int *px,int *py);int *a;a=new intN;int i,j;double tot;system("cls");for(i=0;i<N;i+) /*循環(huán)計(jì)算總分*/ai=i;for(j=0,tot=0;j<M;j+)tot=tot+studi.scorej; studi.sum=tot;for(i=0;i<N;i+)for(j=0;j<N-i-1;j+)if(studaj.sum<studaj+1.sum)swap(&aj,&aj+1);printf("學(xué)號(hào) 姓名 總分n");for

17、(i=0;i<N;i+)printf("%dt%st%.1fn",studai.num,,studai.sum);delete a;printf("!輸入任意鍵退出!n");getchar();void swap(int *px,int *py)int t;t=*px;*px=*py;*py=t;void tran()/*成績(jī)修改*/char ch10,flag='Y'int num;int i,j;printf("請(qǐng)輸入密碼:"); /檢查密碼scanf("%s",ch

18、);if(strcmp(ch,"123")!=0)printf("密碼錯(cuò)誤?。ò慈我怄I返回)n");getchar();return;while(flag='Y'|flag='y') /修改成績(jī)printf("輸入要修改成績(jī)的學(xué)生學(xué)號(hào):"); /按學(xué)號(hào)搜索scanf("%d",&num);for(i=0;i<N;i+) /i保存搜索到的學(xué)生序號(hào)if(num=studi.num)break; if(i=N)if(num=0)return;elseprintf("

19、沒有找到學(xué)生,請(qǐng)重新輸入!(輸入0退出)n");continue;printf("請(qǐng)輸入新的各科成績(jī):n"); /修改成績(jī)for(j=0;j<M;j+)printf("%s:",subject_namej);scanf("%f",&studi.scorej);printf("是否繼續(xù)修改(Y/N)?");scanf("%s",&flag);void coun()/*成績(jī)統(tǒng)計(jì)*/void state_high();void state_ave();void stat

20、e_num();char choice;system("cls");printf("&&&=&&&n");printf("&&& 選擇菜單 &&&n");printf("&&& A.顯示每門課程成績(jī)最高的學(xué)生的基本信息 &&&n");printf("&&& B.顯示每門課程的平均成績(jī) &&&n");prin

21、tf("&&& C.顯示超過某門課程平均成績(jī)的學(xué)生人數(shù) &&&n");printf("&&& D.返回 &&&n");printf("&&&=&&&n");scanf("%s",&choice);switch(choice)case 'A':case 'a':state_high();break;case 'B':ca

22、se 'b':state_ave();break;case 'C':case 'c':state_num();break;case 'D':case 'd':break;default:errorinput();coun();break;printf("按任意鍵返回主菜單n");getchar();void state_high() /*輸出各科最高分的基本信息*/int i,j,high;system("cls");for(j=0;j<M;j+)for(i=0,hig

23、h=0;i<N;i+) /*high:最高分的stuhigh*/if(studi.scorej>studhigh.scorej)high=i;printf("%s最高分:",subject_namej);printf(" %st 學(xué)號(hào)%dtn",,studhigh.num);printf("n");void state_ave() /*每門課程平均成績(jī)*/int i,j;float sum,ave;system("cls");for(j=0;j<M;j+)for(i=0,

24、sum=0;i<N;i+)sum+=studi.scorej;ave=sum/N;printf("%s平均成績(jī):%.1fn",subject_namej,ave);printf("n");void state_num() /*每門課程超過平均成績(jī)的學(xué)生人數(shù)*/int i,j,n;float sum,ave;system("cls");for(j=0;j<M;j+)for(i=0,sum=0;i<N;i+)sum=sum+studi.scorej;ave=sum/N;for(i=0,n=0;i<N;i+)if(studi.scorej>ave)n+;printf("%s超過平均分的人數(shù)為:%dtn",subject_namej,n);printf("n");void errorinput()/*出錯(cuò)輸出*/system("cls");printf("無效的輸入,請(qǐng)重新輸入!n");3.5 程序運(yùn)行結(jié)果程序運(yùn)行初顯示如圖3.2所示: 圖3.2 程序運(yùn)行初顯示輸入“A”進(jìn)行成績(jī)錄入后,輸入“B”,對(duì)成績(jī)進(jìn)行顯示如圖3.3所示:圖3.3 成績(jī)顯示輸入C,成績(jī)保存如圖3.4所示:圖3.4 成績(jī)保存輸入D,進(jìn)行成績(jī)排序如圖3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論