當前位置:首頁 » 編程語言 » c語言課程設計英文參考文獻
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言課程設計英文參考文獻

發布時間: 2022-10-04 09:33:20

c語言編輯的書

先學一下《計算機基礎知識》,再去C語言會輕松點。當然不學也沒多大關系,只要你經常關注電腦知識,就沒有必要拿其它課程作為C語言的基礎課程。

C語言的編程軟體可以用TC2.0,如果你還想計算機二級(C語言)的話,你最好用Visual C++6.0,因為C語言考試是用這個軟體。關於Visual C++的使用,可以看一些C++程序語言設計的參考書。

給你推薦一些c語言學習的資料:
C程序設計(譚浩強) : http://www.gshu.cn/detail/0/146.htm
C語言資料大全1.0 : http://www.gshu.cn/detail/0/11.htm
21天學通C語言第六版(PDG) : http://www.gshu.cn/detail/0/141.htm
C語言初學者入門講座 : http://www.gshu.cn/detail/0/337.htm
C程序設計習題參考解答.rar : http://www.gshu.cn/detail/0/147.htm
C語言學習和精華文摘 : http://www.gshu.cn/detail/0/450.htm
C語言課程設計案例精編 : http://www.gshu.cn/detail/0/426.htm
C專家編程(中文版) : http://www.gshu.cn/detail/0/204.htm
C語言經典實例 : http://www.gshu.cn/detail/0/430.htm
C語言聖經(英文) : http://www.gshu.cn/detail/0/276.htm
ANSI C語言標准 : http://www.gshu.cn/detail/0/206.htm
高質量C/C++編程指南 : http://www.gshu.cn/detail/0/207.htm
C語言函數大全(語法著色版) : http://www.gshu.cn/detail/0/482.htm

Ⅱ 一種簡單英文詞典排版系統的實現 C語言編程

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#define ROWS 256
#define COLS 32
static FILE *fp;
static char a[ROWS][COLS];
char get_option(void);
int b(int count);
void c(char *pt[], int count);
int check(char arr[], int count);
void storage(char *pt[], int count);
int main(void)
{

int i,count;
int start;
char *pt[ROWS];
char ch, len;
char input;

if((fp=fopen("words.txt","a+"))==NULL)
{
fputs("不能打開或建立文件!\n",stderr);
exit(1);
}
fseek(fp,0L,SEEK_END);
start=(int)ftell(fp)/32;
count=start;
rewind(fp);
if(fread(a,32*sizeof(char),start,fp)==0)
{
i=0;
puts("請輸入單詞(每行一個),在新行輸入END結束輸入:");
while(i<ROWS&&scanf("%s", a[i])==1)
{
fflush(stdin);
if(strncmp(a[i],"END",3)==0)
{
count+=i;
break;
}
if(check(a[i], i))
continue;
i++;
}
}
puts("您要做些什麼?");
puts("a. 顯示已有的單詞 b. 添加新單詞");
puts("c. 對已有的單詞進行排序 d. 退出");
while((input=get_option())!='d')
{
if(input=='a')
{
puts("已有的單詞:");
for(i=0;i<count;i++)
{
printf(" ");
puts(a[i]);
}
}
if(input=='b')
{
puts("請輸入新的單詞(每行一個),在新行輸入END結束輸入: ");
count=b(count);
}
if(input=='c')
{
puts("對單詞進行排序:");
c(pt, count);
for(i=0;i<count;i++)
{
printf(" ");
puts(pt[i]);
}
}
puts("還要做些什麼?");
}
storage(pt,count);
fclose(fp);
puts("再見!");

return 0;
}

char get_option(void)
{
char ch;

while((ch=getchar())<'a'||ch>'d')
{
while((ch=getchar())!='\n')
;
puts("請輸入a,b,c或者d.");
}
fflush(stdin);

return ch;
}

int b(int count)
{
int i;

i=count;
while(i<ROWS&&scanf("%s", a[i])==1)
{
fflush(stdin);
if(check(a[i], i))
continue;
if(strncmp(a[i],"END",3)==0)
{
count=i;
break;
}
i++;
}

return count;
}

void c(char *pt[], int count)
{
int i,j;
char *temp;

for(i=0;i<ROWS;i++)
pt[i]=a[i];
for(i=0;i<count;i++)
for(j=i+1;j<count;j++)
{
if(strcmp(pt[i],pt[j])>0)
{
temp=pt[i];
pt[i]=pt[j];
pt[j]=temp;
}
}
}

int check(char arr[], int count)
{
int i;
int flag=0;

for(i=0;i<strlen(arr);i++)
if(isalpha(arr[i])==0)
{
printf("%s不是一個單詞.\n",arr);
flag=1;
break;
}
for(i=0;i<count;i++)
if(strncmp(a[i],a[count],strlen(a[count])+1)==0)
{
puts("重復的單詞!");
flag=1;
}
return flag;
}

void storage(char *pt[], int count)
{
int i,j;
char ptr[ROWS][COLS];

c(pt, count);
for(i=0;i<count;i++)
for(j=0;pt[i][j]!='\0';j++)
ptr[i][j]=pt[i][j];
fp=fopen("words.txt","w+");
rewind(fp);
fwrite(ptr,32*sizeof(char),count,fp);
}

Ⅲ c語言程序設計 參考文獻

C語言程序設計實際上是一個非常艱難的事情,因為很多人在這方面做了許多的嘗試,當然了,作為一種新的一種格式,請要學會這種技術也是一個非常困難的事情,當然在很多時候,我們都會在這個事情要做很多的努力,畢竟這種程序設計一旦做好的話,確實有很大的前途,但是想要整體的了解確實是非常困難的事情,所以說想要了解很多。c語言程序設計方面的知識,那麼想要了解的文獻就非常的多了,建議你還是從最基礎的一些學科開始練習,因為這些基礎的參考文獻才是最有用的,比如說c語言入門。課程300級,這個就是非常有用的一個基礎類書籍,這部書籍其實你自己好好的去看一下,基本上有一些關鍵的一些技術就能夠掌握了,但是這種技術的掌握只是一個初步的階段。當你把這個他會之後,再看一些更深層次的創設經驗書籍,這些書籍就會給你說很多相關的專業的知識,當你看好上面的那個基礎書籍之後,那麼再看這些就非常的明顯了,當然了,在這些研究的時候,你還是要有更多的毅力,暑假給自己設定好一個目標,當你看完一個基礎書籍之後,再去尋找另一個。要知道這種語言程序設計是非常枯燥的,如果沒有一個明確的目標,就會陷入一個非常尷尬的設計之中。所以說在這樣的情況之下只要你自己考慮好才能夠讓自己的整個的事業和工作做得更好這種設立的時候,一定要讓自己有更多的目標,從而才能過上自己,在目標的達成上做到一定的發展,從而就會讓自己在整個的語言程序設計方面處取得更好的戰績,可多人在學習的時候,就是因為剛開始的基礎打的不牢銬,所以說後來在關鍵的技術方面卻反而是落下了很多,所以說上面給你推薦的兩部書記一定要重點去參考,這樣的情況下,你才會獲得成功,假設如果自己不去好好的努力,反而是喜歡好高騖遠的話,那麼在語言程序設計方面就很難取得突破了,因為這方面的基礎知識是非常必要的,也是非常重要的,如果你能堅持下來的話,就會獲得成功,如果你自己堅持不下來,而且沒有這樣的耐心那麼你最好提前放棄因為學習對於每一個人來說要根據自己的個性如果的個性不適合這種語言程序設計的話那麼就要離開畢竟這是一個非常枯燥的這種設立的時候,一定要讓自己有更多的目標,從而才能過上自己,在目標的達成上做到一定的發展,從而就會讓自己在整個的語言程序設計方面處取得更好的戰績,可多人在學習的時候,就是因為剛開始的基礎打的不牢銬,所以說後來在關鍵的技術方面卻反而是落下了很多,所以說上面給你推薦的兩部書記一定要重點去參考,這樣的情況下,你才會獲得成功,假設如果自己不去好好的努力,反而是喜歡好高騖遠的話,那麼在語言程序設計方面就很難取得突破了,因為這方面的基礎知識是非常必要的,也是非常重要的,如果你能堅持下來的話,就會獲得成功,如果你自己堅持不下來,而且沒有這樣的耐心,那麼你最好提前放棄,因為學習對於每一個人來說,要根據自己的個性,如果的個性不適合這種語言程序設計的話,那麼就要離開,畢竟這是一個非常枯燥的學問,想要在短期內獲得成功是完全不可能的,而是需要長時間,而且還需要更多的精力才能夠成功,所以說在這樣的情況下,你必須要在長期打仗的基礎上,還要不斷地去努力提高自己其他方面的知識,所以說是一個艱難的過程,你想要完全實現的話,那麼就需要自己做更多的努力了,所以在這方面自己一定要更加的去研究,從基礎上去了解,這樣才能夠慢慢的讓自己的這種語言是設計程序能力慢慢的吐錢出來,當然這需要一個很漫長的過程,需要你的堅持。

Ⅳ c語言程序設計參考文獻

《c primer plus》《c 演算法》《高質量c編程指南》《c語言核心技術》《C語言深度剖析》《徹底搞定c指針》

Ⅳ C語言課程設計~~~ 要求編寫一段程序,題目是《校際運動會管理系統》

我這是源代碼已經調試過了,在VC++上運行成功了。
#include "stdio.h" /*I/O函數*/
#include "stdlib.h" /*其它說明*/
#include "string.h" /*字元串函數*/
#include "conio.h" /*屏幕操作函數*/
#include "mem.h" /*內存操作函數*/
#include "ctype.h" /*字元操作函數*/
#include "alloc.h" /*動態地址分配函數*/
struct score
{
int mingci;
char xuehao[8];
char mingzi[20];
float score[6];
}data,info[1000];
int i,j,k=0;
char temp[20],ch;
FILE *fp,*fp1;

void shuru()
{
if((fp=fopen("s_score.txt","ab+"))==NULL)
{
printf("cannot open this file.\n");
getch();exit(0);
}
for(i=0;i<=1000;i++)
{
printf("\nPlease shuru xuehao:");
gets(data.xuehao);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please shuru wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please shur huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
fwrite(&data,sizeof(data),1,fp);
printf("another?y/n");
ch=getch();
if(ch=='n'||ch=='N')
break;
} fclose(fp);
}
void xianshi()
{
float s;int n;
if((fp=fopen("s_score.txt","rb+"))==NULL)
{
printf("Cannot reading this file.\n");
exit(0);
}
for(i=0;i<=1000;i++)
{
if((fread(&info[i],sizeof(info[i]),1,fp))!=1)
break;
}
printf("\nxuehao mingzi yuwen shuxue yingyu wuli huauxue zhongfen\n");
for(j=0,k=1;j<i;j++,k++)
{
info[j].mingci=k;
printf("%6s %8s %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f\n",info[j].xuehao,info[j].mingzi,info[j].score[0],info[j].score[1],info[j].score[2],info[j].score[3],info[j].score[4],
info[j].score[5]);
}
getch();
fclose(fp);
}

void xiugai()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("Cannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xiugai xuehao:");
scanf("%d",&i); getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("xuehao:%s\nmingzi:%s\n",data.xuehao,data.mingzi);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please input wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please input huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];

} fwrite(&data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);
fseek(fp1,0L,0);
while((fread(&data,sizeof(data),1,fp1))==1)
{
fwrite(&data,sizeof(data),1,fp);
}

fclose(fp);
fclose(fp1);
}
void chazhao()
{
if((fp=fopen("s_score.txt","rb"))==NULL)
{
printf("\nCannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xuehao chakan:");
scanf("%d",&i);
while(fread(&data,sizeof(data),1,fp)==1)
{
j=atoi(data.xuehao);
if(i==j)
{
printf("xuehao:%s mingzi:%s\nyuwen:%f\n shuxue:%f\n yingyu:%f\n wuli:%f\n huaxue:%f\n ",data.xuehao,data.mingzi,data.score[0],data.score[1],data.score[2],data.score[3],data.score[4],data.score[5]);
}getch();
}
}
void shanchu()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("\nopen score.txt was failed!");
getch();
exit(0);
}
printf("\nPlease input ID which you want to del:");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{

printf("Anykey will delet it.\n");
getch();
continue;
}
fwrite(&data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove("s_score.txt");
rename("temp.txt","s_score.txt");
printf("Data delet was succesful!\n");
printf("Anykey will return to main.");
getch();
}
main()
{
while(1)
{
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移動游標*/
textcolor(YELLOW); /*設置文本顯示顏色為黃色*/
textbackground(BLUE); /*設置背景顏色為藍色*/
window(1,1,99,99); /* 製作顯示菜單的窗口,大小根據菜單條數設計*/
clrscr();
printf("*************welcome to use student manage******************\n");
printf("*************************menu********************************\n");
printf("* ========================================================= * \n");
printf("* 1>shuru 2>xiugai * \n");
printf("* 3>shanchu 4>chazhao * \n");
printf("* 5>xianshi 6>exit * \n");
printf("* * \n");
printf("* --------------------------------------------------------- * \n");
printf(" Please input which you want(1-6):");
ch=getch();
switch(ch)
{
case '1':shuru();break;
case '2':xiugai(); break;
case '3':shanchu(); break;
case '4':chazhao(); break;
case '5':xianshi(); break;
case '6':exit(0);
default: continue;
}
}

Ⅵ 求c語言畢業論文的參考文獻,越多越好

機頂盒上游戲開發可以么,也是用C語言寫的
目 錄

第一章 緒論 1
1.1機頂盒的產生背景 1
1.2機頂盒的發展及其現狀 1
1.3游戲模塊設計的必要性 2
1.4模塊設計需要解決的問題 3
第二章 系統開發環境及相關技術介紹 4
2.1 XX-XX硬體平台 4
2.2 XX操作系統 4
2.2.1 內核 4
2.2.2 任務機制 5
2.2.3 消息隊列 6
2.2.4 信號量 7
2.3 C語言的特點 7
第三章 開發流程 9
3.1 功能需求分析 9
3.2 可行性分析 9
3.3 模塊設計 10
3.4 編碼 10
3.5 測試 11
第四章 系統設計 12
4.1游戲模塊介面設計 12
4.1.1游戲的初始化 12
4.1.2游戲的按鍵讀取和轉化 12
4.1.3游戲的暫停、恢復和退出 12
4.2 游戲演算法設計 13
4.2.1推箱子游戲設計 13
4.2.2 俄羅斯方塊游戲設計 14
4.2.3 黑白棋游戲設計 14
結 論 16
謝 辭 17
參 考 文 獻 18
附錄 推箱子游戲源程序 19

Ⅶ C語言課程設計報告要求

一 、 設計題目

萬年歷的設計

二 、設計要求

1、能夠顯示星期;

2、能夠顯示年月日;

3、能夠修改;

4、當系統時間變動時,能自動跳到相應的時間。

三 、 設計目的

1. 通過本項課程設計,可以培養獨立思考、 綜合運用所學有關相應知識的能力,能更好的鞏固《C語言程序設計》課程學習的內容,掌握 工程軟體設計的基本方法,強化上機動手編程能力,闖過理論與實踐相結合的難關!更加了解了c語言的好處和其可用性!同時增加了同學之間的團隊合作精神!更加也體會到以後在工作中團隊合作的重要性和必要性!

2. 通過C語言課程設計,使學生了解高級程序設計語言的結構,掌握基本的程序設計過程和技巧,掌握基本的分析問題和利用計算機求解問題的能力,具備初步的高級語言程序設計能力。為後續各門計算機課程的學習和畢業設計打下堅實基礎。

四 、設計思想及過程

【一】由於萬年歷具有以下特點:

1。平年365天(52周+1天),閏年366天(52周+2天)。平年2月28天,閏年2月29天。

由於公元1月1日設為星期六,故3月1日為星期三。 ——注意這個「三」

為使演算法達到最簡,故本演算法以「星期」為計算單位。且選3月1日為基月。

2。每400年整一閏,或每4年且不為百年的一閏。(原因:地球繞太陽一周的時間是365天5小時46秒,為了使一年的天數為整數,將一年的天數定為365天,餘下的時間積累起來,四年就是23小時15分4秒,將近一天,把這一天加在某年的二月而成29天,該年稱為閏年,其它年稱為平年。但四年加一天又多用了44分56秒,這個數積滿400年為三天。因此400年中只能有97個閏年,所以凡能被400整除,或不能被100整除但能被4整除的年份為閏年。)

所以百年%4=0閏或(年%4=0並且年<>0)閏。

3。每 4年(3個平年+1個閏年)共208周+5天 ——注意這個「5天」

每百年共100*(208周+5天)-1天=5217周+5天 ——注意這個「5天」(整百年暫設為平年)

每400年共4*(5217周+5天)+1天(整400年閏)=20871周+0天——注意這個「0天」和

「1天」(4個整百年只有一個閏年)

即400年一輪回!(原來萬年歷400年前是一家)

【二】根據萬年歷以上特點進行編寫:

首先對萬年歷年、月、日進行編寫,編寫程序先定義每月的天數為28天,如月份為1、3、5、7、8、10、12就定義天數為31天反之如果月份為4、6、9、11就輸出天數為30天,由上可見2月份為28天但是如果為閏年就有29天就要定義另一個函數#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0當為閏年時可得1加上該程序便可得到每月的天數。 具體程序見(五、萬年歷程序)

再對其中的星期進行編寫:由於公元1月1日設為星期六,故3月1日為星期三,可以用萬年3月1日星期演算法(特別是那個三)

由於其公式為:

某年3月1日星期幾=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7

某年3月1日星期幾=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7

或 某年3月1日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

閏4百年3月1日星期演算法(百年%4=0)

其公式為:

某年3月1日星期幾=(年+年/4+月星期表+日+2天)%7

例:0000年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

1600年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

2000年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

2001年3月1日星期幾=(1+1/4+0+1+2)%7=4%7=星期四

2004年3月1日星期幾=(4+4/4+0+1+2)%7=8%7=星期一

2008年3月1日星期幾=(8+8/4+0+1+2)%7=13%7=星期六

2042年3月1日星期幾=(42+42/4+0+1+2)%7=55%7=星期六

平4百年3月1日星期演算法(百年%4<>0)

其公式為:

某年3月1日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

例:1700年3月1日星期幾=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)

1800年3月1日星期幾=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)

1900年3月1日星期幾=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)

1901年3月1日星期幾=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五

1918年3月1日星期幾=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五

1958年3月1日星期幾=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六

1988年3月1日星期幾=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二

1999年3月1日星期幾=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一

2100年3月1日星期幾=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)

2101年3月1日星期幾=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二

2102年3月1日星期幾=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三

2103年3月1日星期幾=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四

2104年3月1日星期幾=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是閏年)

9999年3月1日星期幾=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一

註:按400年一輪回!(400年前是一家)的說法

1600年,2000年是一樣的;

1700年,2100年是一樣的;

1800年,2200年是一樣的;

1900年,2300年是一樣的。

其中萬年某日星期演算法

其公式為:

某日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

通同星期偏差表

閏年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天數 31 29 31 30 31 30 31 31 30 31 30 31

星期 3 6 0 3 5 1 3 6 2 4 0 2

平年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天數 31 28 31 30 31 30 31 31 30 31 30 31

星期 4 0 0 3 5 1 3 6 2 4 0 2

為對以上的萬年歷星期的演算法是正確的對其進行了以下的計算:

⒈對於二十世紀任意日期可以用公式某日星期幾=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根據上面對其進行的計算:

1900年元旦 1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4

1月表=4(平年) 故 4+4=1 即1900年元旦是星期一

1949年國慶 1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2

10月表=4(平年) 故 4+2=6 即1949年國慶是星期六

1999年12月31日 31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3

12月表=2(平年) 故 2+3=5 即1999年12月31日是星期五

⒉對於二十一世紀新前年蟲演算法(20%4*5=0)可以用公式:某日星期幾=(百年%4*5天+年+年/4+閏年月星期表+日+2天)%7 =(20%4*5天+年+年/4+閏年月星期表+日+2天)%7以下就是根據上面對其進行的計算:

2000年元旦 1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3

1月表=3(閏年) 故 3+3->6 即2027年元旦是星期六

2018年春節 16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5

2月表=0(平年) 故 0+5=5 即2018年春節是星期五

2099年12月31日 31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2

12月表=2(平年) 故 2+2=4 即2099年12月31日是星期四

對於上面的分析以及公式的推論和計算證明可以對萬年歷中的星期進行了編寫具體編寫程序見(五 、萬年歷程序)中。

五 、萬年歷源程序

#include"stdio.h"

#include"dos.h"

#include"conio.h"

#include"stdlib.h"

#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0 /*判斷閏年*/

int numofMonth(int y,int m){

int day,t=28;

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

day=31; /*定義以上月份為31天*/

else if(m==4||m==6||m==9||m==11)

day=30; /*定義以上月份為30天*/

else{t+=Year(y);

day=t;} /*閏年二月29天,平年28天*/

return day;}

int numofYear(int y){

int t=365; /*平年365天*/

t+=Year(y);/*閏年366天*/

return t;}

int numofbeforeDays(int y,int m,int d){

int sum=d,i;

for(i=1;i<m;i++)

sum+=numofMonth(y,i);

return sum;}

int numofafterDays(int y,int m,int d){

int sum=0,i;

for(i=m;i<=12;i++)

sum+=numofMonth(y,i);

sum-=d;

return sum;}

int isDay(int y,int m,int d){

int year=1900,month=1,week=1,i; /*定義萬年歷是從1900年開始*/

long sum=0;

for(i=year;i<y;i++)

sum+=numofYear(i);

for(i=1;i<m;i++)

sum+=numofMonth(y,i);

/* ++sum;*/

i=sum%7;

week=(week+i)%7;

return week;}

void empty(int n){

int i;

for(i=0;i<n;i++)

printf("%*c",6,' ');}

void OutPutCalender(int y,int m,int d)/*計算x年x月x是星期幾*/{

int week,i,num,t;

week=isDay(y,m,1);

printf("%6d/%02d/%02d\n",y,m,d);

printf("%6s%6s%6s%6s%6s%6s%6s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");

empty(week);

num=numofMonth(y,m);

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

printf("%6d",i);

t=(week+i)%7;

if(t==0)

printf("\n");} /*游標移到下一行*/

printf("\n");}

long numBTDays(int y1,int m1,int d1,int y2,int m2,int d2)/*定義兩個不同日期*/{

int i;

long sum=0;

for(i=y1+1;i<y2;i++)

sum+=numofYear(i);

if(y1==y2){ sum-=d1;

for(i=m1;i<m2;i++)

sum+=numofMonth(y1,i);

sum+=d2;}

else{sum+=numofafterDays(y1,m1,d1);

sum+=numofbeforeDays(y2,m2,d2);}

return sum;}

int Select_mean(){

int sm;

printf("1. OutPut Calender\n"); /*輸出當前月份的日歷*/

printf("2. Help\n"); /*幫助*/

printf("0. Quit\n"); /*退出*/

printf("Please enter choose(0--2):"); /*從0-2中選擇*/

do

scanf("%d",&sm); /*輸入sm*/

while(sm<0||sm>3);

return sm;}

void Help()/*輸出幫助欄的內容*/{

printf(" 1. OutPut Calender\n");

printf(" 2. System Help\n");

printf(" 0. Quit\n");

printf("Page Up: Up year\n"); /*上一年*/

printf("Page Down: next year\n"); /*下一年*/

printf(" --> : next month\n"); /*上一月*/

printf(" <-- : Up month\n");/*下一月*/}

main(){

int year=2006,year1=2006,month,day,y1,m1,d1,y2,m2,d2,c,t; /*定義運行後的日期是2006年*/

int inkeySCAN,inkey; /*輸入鍵盤操作信息*/

union REGS inregs,outregs;

inregs.h.ah=0x2a;

intdos(&inregs,&outregs);

/* year=outregs.xcx; */

month=outregs.h.dh;

day=outregs.h.dl;

year1=year;

printf("%d/%02d/%02d\n",year,month,day);

while(1)/*當選擇為1時,執行以下語句*/{

switch(Select_mean()){

case 1:

OutPutCalender(year,month,day);

while(1){

inkey=bioskey(0);

inkeySCAN=(inkey&0xFF00)>>8;

if(inkeySCAN==77){

if(month==12){month=1;year1++;

OutPutCalender(year1,month,day);/*輸出日歷*/}

else{month++;

OutPutCalender(year1,month,day);

}}

if(inkeySCAN==75){

if(month==1){month=12;year1--;

OutPutCalender(year1,month,day);}

else{month--;OutPutCalender(year1,month,day);}}

if(inkeySCAN==73){

if(year1==1900) year1=year;

else{year1--;OutPutCalender(year1,month,day);}}

if(inkeySCAN==81){

year1++;OutPutCalender(year1,month,day);}

if(inkeySCAN==28)break;}

break; /*終止循環*/

case 2:

Help();

break;

case 0:

exit(0);

default:

printf("Enter ERROR!\n");

break;} }

}

六 運行過程

1.雙擊TC

1. 當對上面的程序進行了調試後運行會出現下面所示:

第一行所顯示的就是系統時間!滿足了第一條要求「顯示年、月、日」。

而當改變系統時間後!再運行該程序上面的日期也隨系統時間改變,所以滿足第四條「當系統時間變動時,能自動跳到相應的時間。」

2. 在游標處按下「1」後回車,將會顯示:

以上的顯示也證明了條件的第2條可以「顯示星期!」

3. 在游標處按下「2」後回車,將會顯示:

按著幫助所講進行了運行可知:按「 Page Up 」鍵其下面接著會顯示上一年該月的萬年歷,按「 Page Down 」鍵其下面會接著顯示下一年該月的萬年歷;按「 ← 」鍵下面將會接著顯示當年上一個月的萬年歷,按「 → 」鍵將會接著在下面顯示去下一個月的萬年歷。

4.

由上所顯示鍵入「0」後將會退去該程序。

由以上運行的結果可知該c語言所設計的萬年歷滿足設計要求!

七、在C語言編程中常見錯誤

C語言的最大特點是:功能強、使用方便靈活。C編譯的程序對語法檢查並不象其它高級語言那麼嚴格,這就給我們留下「靈活的餘地」,但還是由於這個靈活給程序的調試帶來了許多不便,尤其對我們這些初學C語言的人來說,經常會出一些連自己都不知道錯在哪裡的錯誤。看著有錯的程序,不知該如何改起,我通過這次編程,也積累了一些C編程時常犯的錯誤:

1. 書寫標識符時,忽略了大小寫字母的區別。
編譯程序把a和A認為是兩個不同的變數名,而顯示出錯信息。C語言認為大寫字母和小寫字母是兩個不同的字元。習慣上,符號常量名用大寫,變數名用小寫表示,以增加可讀性。

2.忽略了變數的類型,進行了不合法的運算。
%是求余運算,得到a/b的整余數。整型變數a和b可以進行求余運算,而實型變數則不允許進行「求余」運算。

3.將字元常量與字元串常量混淆。
混淆了字元常量與字元串常量,字元常量是由一對單引號括起來的單個字元,字元串常量是一對雙引號括起來的字元序列。C規定以「\」作字元串結束標志,它是由系統自動加上的,所以字元串「a」實際上包含兩個字元:『a'和『\',而把它賦給一個字元變數是不行的。

4.忽略了「=」與「==」的區別。
在C語言中,「=」是賦值運算符,「==」是關系運算符。如:
if (a==3) a=b;
前者是進行比較,a是否和3相等,後者表示如果a和3相等,把b值賦給a。由於習慣問題,初學者往往會犯這樣的錯誤。

5.忘記加分號。
分號是C語句中不可缺少的一部分,語句末尾必須有分號。
a=1 b=2
編譯時,編譯程序在「a=1」後面沒發現分號,就把下一行「b=2」也作為上一行語句的一部分,這就會出現語法錯誤。改錯時,有時在被指出有錯的一行中未發現錯誤,就需要看一下上一行是否漏掉了分號。
{ z=x+y;
t=z/100;
printf("%f",t);
}
對於復合語句來說,最後一個語句中最後的分號不能忽略不寫(這是和PASCAL不同的)。

6.多加分號。
對於一個復合語句,如:
{ z=x+y;
t=z/100;
printf("%f",t);
};
復合語句的花括弧後不應再加分號,否則將會畫蛇添足。
又如:
if (a%3==0);
I++;
本是如果3整除a,則I加1。但由於if (a%3==0)後多加了分號,則if語句到此結束,程序將執行I++語句,不論3是否整除a,I都將自動加1。
再如:
for (I=0;I<5;I++);
{scanf("%d",&x);
printf("%d",x);}
本意是先後輸入5個數,每輸入一個數後再將它輸出。由於for()後多加了一個分號,使循環體變為空語句,此時只能輸入一個數並輸出它。

7.輸入變數時忘記加地址運算符「&」。
int a,b;
scanf("%d%d",a,b);
這是不合法的。Scanf函數的作用是:按照a、b在內存的地址將a、b的值存進去。「&a」指a在內存中的地址。

8.輸入數據的方式與要求不符。scanf("%d%d",&a,&b);輸入時,不能用逗號作兩個數據間的分隔符,如下面輸入不合法:
3,4
輸入數據時,在兩個數據之間以一個或多個空格間隔,也可用回車鍵,跳格鍵tab。
scanf("%d,%d",&a,&b);C規定:如果在「格式控制」字元串中除了格式說明以外還有其它字元,則在輸入數據時應輸入與這些字元相同的字元。下面輸入是合法的:
3,4
此時不用逗號而用空格或其它字元是不對的。
3 4 3:4
又如:
scanf("a=%d,b=%d",&a,&b);
輸入應如以下形式:
a=3,b=4

9.輸入字元的格式與要求不一致。
在用「%c」格式輸入字元時,「空格字元」和「轉義字元」都作為有效字元輸入。
scanf("%c%c%c",&c1,&c2,&c3);
如輸入a b c
字元「a」送給c1,字元「 」送給c2,字元「b」送給c3,因為%c只要求讀入一個字元,後面不需要用空格作為兩個字元的間隔。

10.輸入輸出的數據類型與所用格式說明符不一致。
例如,a已定義為整型,b定義為實型
a=3;b=4.5;
printf("%f%d\n",a,b);

語法錯
邏輯錯 運行錯
0.忘記定義變數:
main()
{x=3;y=6;
printf(「%d\n」,x+y);

11.C語言的變數一定要先定義才能使用;

12.輸入輸出的數據的類型與所用格式說明符不一致
int a=3;float b=4.5;printf(「%f%d\n」,a,b);
它們並不是按照賦值的規則進行轉換(如把4.5轉換為4),而是將數據在存儲單元中的形式按格式符的要求組織輸出(如b佔4個位元組,只把最後兩個位元組的數據按%d,作為整數輸出)

13.未注意int型數據的數值范圍
int型數據的數值范圍(-32768~32768)
int num=89101;
printf(「%d」,num);
會將超過低16位的數截去從而得到23563
注意:定義了long型,而在輸出時仍用」%d」說明符,仍會出現以上錯誤
14.輸入變數時忘記使用地址符
scanf(「%d%d」,a,b);
15.輸入時數據的組織與要求不符
對scanf函數中格式字元串中除了格式說明符外,對其他字元必須按原樣輸入
16.誤把」=「作為」等於」比較符
「=「為附值運算符
「==「為比較運算符
17.語句後面漏分號
{
t=a;
a=b;
b=t
}
它是pascal的語法
18.不該加分號的地方加了分號
if(a>b);
printf(「a is larger than b\n」);
for(i=0;i<10;i++);
{
scanf(「%d」,&x);
printf(「%d\n」,x*x);
}
19.對應該有花括弧的復合語句,忘記加花括弧
sum=0;
i=1;
while(i<=100)
sum=sum+1;
i++;
20.括弧不配對
while((c=getchar()!=『#』)

putchar(c);
11.在用標識時,忘記了大寫字母和小寫字母的區別
{
int a,b,c;
a=2;
b=3;
C=A+B;
printf(「%d+%d=%D」,A,B,C);
}
12.引用數組元素時誤用發圓括弧
{
int i,a(10);
for(i=0;i<10;i++)
scanf(「%d」,&a(i));
}
13.在定義數組時,將定義的」元素個數」誤認為是」可使用的最大下標值
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int i;
for(i=1;i<=10;i++)
printf(「%d」,a[i]);
}
14.對二維或多維數組的定義和引用的方法不對
{
int a[5,4];

printf(「%d」,a[1+2,2+2]);

}
15.誤以為數組名代表數組中全部元素
{int a[4]={1,2,3,4};
printf(「%d%d%d%d」,a);
}
16.混淆字元數組與字元指針的區別
main()
{
char str[40];
str=「Computer and c」;
printf(「%s\n」,str);
}
17.在引用指針變數之前沒有對它賦予確定的值
{
char *p;
scanf(「%s」,p);
}
{
char *p,c[20];
p=c;
scanf(「%s」,p);
}
18.switch語句的各分支中漏寫 break語句
混淆字元和字元串的表示形式

char sex;
sex=「M」;

19.使用自加(++)和自減(--)運算符時出的錯誤
{
int *p,a[5]={1,3,5,7,9};
p=a;
printf(「%d」,*p++);
}
注意於*(++p)的區別;
20.所調用的函數在調用語句之後才定義,而又在調用前未加說明
main()
{float x,y,z;
x=3.5;y=-7.6;
z=max(x,y);
printf(「%f」,z);
}
編譯時不給出出錯信息,但運行結果將與原意不符。這種錯誤尤其需要注意。

八、心得體會

1. 目前流行的計算機日歷程序,比較典型的是Windows各版本中的日歷程序以及基礎於該程序所開發的各種應用程序中的日歷程序。然而,這些程序都千篇一律的局限在一個很短的時間范圍內。(Windows各個版本一般都局限在1980年至2099年這一范圍內),但是,在很多情況下,特別是在眾多的科學研究領域中,一個時間跨度較大的日歷程序是很有參考價值的。C程序設計語言充分發揮了其自身無與倫比的優越性,用極短的程序文本填補了這一領域的空白,同時用鐵的事實強有力的告訴世人:C程序設計語言作為計算機語言家族的新生事物,其發展前景是極為廣闊的。

2. 經過上一個學期對《C程序設計》的學習,我們學習了理論知識,了解了C語言程序設計的思想,這些知識都為我們的下一步學習打下了堅實的基礎。通過課程設計,一方面是為了檢查我們一個學期來我們學習的成果,另一方面也是為了讓我們進一步的掌握和運用它,同時也讓我們認清自己的不足之處和薄弱環節,加以彌補和加強。

3. 通過對c語言萬年歷的設計進一步的鞏固了用c語言編寫程序,並且有利於更好的掌握c語言!

4. 在萬年歷的編寫過程中也體會到了做事情一頂要細心、認真。更加知道了要掌握好基礎知識。還有體會到了成功的感覺!在萬年歷的設計過程中更加體會到了團隊合作的重要性,「一個諸葛亮比不上三個臭皮匠。」知道了只有團隊合作才會更好的完成設計!也體會到以後在工作中團隊合作的必要性和重要性!

5. 通過本項課程設計也培養了我獨立思考、 綜合運用所學有關相應知識的能力,掌握 工程軟體設計的基本方法,強化上機動手編程能力,闖過理論與實踐相結合的難關!

6. 由於C語言是近年在國內外得到迅速推廣應用的一種語言。C語言功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,既具有高級語言的優點,又具有低級語言的許多特點。通過這次的c語言程序設計更加了解了c語言的好處和其可用性!

7. 在這次課程設計中也知道了自己的動手能力不強有待進一部的提高!在設計過程中不能夠把書本上的知識與實踐相結合,這也就增加了設計不好該程序的想法!在設計過程中的一次次設計錯誤增加了我放棄的想法!不過經過大家的努力終於完成了課程設計!完成該程序後想起自己以前的每一次對自己失去信心,就覺得並不是在知識掌握上打敗了,而是自己對自己缺乏信心!只要自己對自己不失去信心相信就可以完成那些以前認為完成不了的事情!也讓我懂得了要想成功首先就必須有很強的自信心!懂得了自己以後要在做任何事情時都要自信!當自己都不相信自己能夠成功時還可能會獲得成功嗎?

8. 在C語言程序設計的過程中也知道了自己在以前的學習中有很大的不足導致在設計過程中出現了很多的問題,有些地方看不懂也不知道怎麼去設計,但是在設計過程中也學習了很多,掌握了自己以前沒有學好的知識,雖然一時可以掌握完以前沒有學好的知識,不過也給自己敲響了警鍾,在學習中不可以伏於表面,要想學好每一門課程都要踏踏實實,做什麼都不是給別人看的!都是要更好的掌握該門知識,提高自己的自身的修養,提高自己的能力!為以後的工作打下良好的知識基礎和技能基礎!

九、參考文獻

⒈譚浩強編著.C程序設計第二版〔M〕.北京:清華大學出版社,1999

⒉陳朔鷹,陳英編著.C語言趣味程序百例精解〔M〕.北京:北京理工大學出版社,1994

⒊電腦知識與技術學術交流版〔J〕2005.2 (備註:來自網路資源)

⒋Herbert Schildit著. 戴健鵬譯. C語言大全 (第二版)〔M〕.北京:電子工業出版社,1994

⒌譚浩強,張基溫,唐永炎編著. C語言程序設計教程.〔M〕北京: 高等教育出版社,1992

⒍秦友淑,曹化工編著. C語言程序設計教程. 〔M〕武漢:華中理工大學出版社,1996

⒎曹衍龍,林瑞仲,徐慧 編著.C語言實例解析精粹 〔M〕北京:人民郵電出版社,2005.3

⒏黃明等編著.21世紀進階輔導C語言程序設計. 〔M〕大連理工大學出版

Ⅷ C語言課程設計—學生成績管理系統<急!!!!!>注意要求,謝謝

#include <time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 80
void input();
void sort();
void display();
void insert();
void del();
void average();
void find();
void save();
void read();
void del_file();
void average();
void modify();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()/*主函數*/
{
int as;
start: printf("\n\t\t\t歡迎使用學生成績管理系統\n");
/*一下為功能選擇模塊*/
do
{
printf("\n\t\t\t\t1.錄入學員信息\n\t\t\t\t2.顯示學員信息\n\t\t\t\t3.成績排序信息\n\t\t\t\t4.添加學員信息\n\t\t\t\t5.刪除學員信息\n\t\t\t\t6.修改學員信息\n\t\t\t\t7.查詢學員信息\n\t\t\t\t8.從文件讀入學員信息\n\t\t\t\t9.刪除文件中學員信息\n\t\t\t\t10.保存學員信息\n\t\t\t\t11.退出\n");
printf("\t\t\t\t選擇功能選項:");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
case 1:system("cls");input();break;
case 2:system("cls");display();break;
case 3:system("cls");sort();break;
case 4:system("cls");insert();break;
case 5:system("cls");del();break;
case 6:system("cls");modify();break;
case 7:system("cls");find();break;
case 8:system("cls");read();break;
case 9:system("cls");del_file();break;
case 10:system("cls");save();break;
case 11:system("exit");exit(0);
default:system("cls");goto start;
}
}while(1);
/*至此功能選擇結束*/
}
void input()/*原始數據錄入模塊*/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.錄入學員信息\n輸入第%d個學員的信息\n",i+1);
printf("\n輸入學生編號:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/*排序數據函數*/
{
struct student temp;
int i,j;
average();
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void display()/*顯示數據函數*/
{
int i;
char as;
average();
do
{
printf("\t\t\t班級學員信息列表\n");
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void insert()/*插入數據函數*/
{
char ch;
do
{
printf("\n\t\t輸入新插入學員隊信息\n");
printf("\n輸入學生編號:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/*刪除數據函數*/
{
int inum,i,j;
printf("輸入要刪除學員的編號:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i].no==inum)
{
if(i==now_no)now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/*保存數據函數*/
{
FILE *fp;
int i;
char filepath[20];
printf("輸入要保存的文件路徑:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp,"\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
fclose(fp);
printf("學生信息已保存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/*查詢函數*/
{
int i;
char str[20],as;
do
{
printf("輸入要查詢的學生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void average()/*求平均數*/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
}
}
void modify()/*修改數據函數*/
{
int i;
char str[20],as;
printf("輸入要修改的學生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
system("cls");
printf("\n\t\t輸入新插入學員隊信息\n");
printf("\n輸入學生編號:");
fflush(stdin);
scanf("%d",&stu[i].no);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
sort();
break;
}
system("cls");
}

void read()
{
FILE *fp;
int i;
char filepath[20];
printf("輸入要讀入的文件路徑:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已經讀入!\n",filepath);
system("pause");
system("cls");
}

void del_file()
{
FILE *fp;
char filepath[20];
printf("輸入要刪除的文件路徑:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已經刪除!\n",filepath);
system("pause");
system("cls");
}

自己改改就好了 謝謝 給分哦

Ⅸ c語言程序設計 參考文獻

C語言程序設計實際上是一個非常艱難的事情,因為很多人在這方面做了許多的嘗試,當然了,作為一種新的一種格式,請要學會這種技術也是一個非常困難的事情,當然在很多時候,我們都會在這個事情要做很多的努力,畢竟這種程序設計一旦做好的話,確實有很大的前途,但是想要整體的了解確實是非常困難的事情,所以說想要了解很多。c語言程序設計方面的知識,那麼想要了解的文獻就非常的多了,建議你還是從最基礎的一些學科開始練習,因為這些基礎的參考文獻才是最有用的,比如說c語言入門。課程300級,這個就是非常有用的一個基礎類書籍,這部書籍其實你自己好好的去看一下,基本上有一些關鍵的一些技術就能夠掌握了,但是這種技術的掌握只是一個初步的階段。當你把這個他會之後,再看一些更深層次的創設經驗書籍,這些書籍就會給你說很多相關的專業的知識,當你看好上面的那個基礎書籍之後,那麼再看這些就非常的明顯了,當然了,在這些研究的時候,你還是要有更多的毅力,暑假給自己設定好一個目標,當你看完一個基礎書籍之後,再去尋找另一個。要知道這種語言程序設計是非常枯燥的,如果沒有一個明確的目標,就會陷入一個非常尷尬的設計之中。所以說在這樣的情況之下只要你自己考慮好才能夠讓自己的整個的事業和工作做得更好這種設立的時候,一定要讓自己有更多的目標,從而才能過上自己,在目標的達成上做到一定的發展,從而就會讓自己在整個的語言程序設計方面處取得更好的戰績,可多人在學習的時候,就是因為剛開始的基礎打的不牢銬,所以說後來在關鍵的技術方面卻反而是落下了很多,所以說上面給你推薦的兩部書記一定要重點去參考,這樣的情況下,你才會獲得成功,假設如果自己不去好好的努力,反而是喜歡好高騖遠的話,那麼在語言程序設計方面就很難取得突破了,因為這方面的基礎知識是非常必要的,也是非常重要的,如果你能堅持下來的話,就會獲得成功,如果你自己堅持不下來,而且沒有這樣的耐心那麼你最好提前放棄因為學習對於每一個人來說要根據自己的個性如果的個性不適合這種語言程序設計的話那麼就要離開畢竟這是一個非常枯燥的這種設立的時候,一定要讓自己有更多的目標,從而才能過上自己,在目標的達成上做到一定的發展,從而就會讓自己在整個的語言程序設計方面處取得更好的戰績,可多人在學習的時候,就是因為剛開始的基礎打的不牢銬,所以說後來在關鍵的技術方面卻反而是落下了很多,所以說上面給你推薦的兩部書記一定要重點去參考,這樣的情況下,你才會獲得成功,假設如果自己不去好好的努力,反而是喜歡好高騖遠的話,那麼在語言程序設計方面就很難取得突破了,因為這方面的基礎知識是非常必要的,也是非常重要的,如果你能堅持下來的話,就會獲得成功,如果你自己堅持不下來,而且沒有這樣的耐心,那麼你最好提前放棄,因為學習對於每一個人來說,要根據自己的個性,如果的個性不適合這種語言程序設計的話,那麼就要離開,畢竟這是一個非常枯燥的學問,想要在短期內獲得成功是完全不可能的,而是需要長時間,而且還需要更多的精力才能夠成功,所以說在這樣的情況下,你必須要在長期打仗的基礎上,還要不斷地去努力提高自己其他方面的知識,所以說是一個艱難的過程,你想要完全實現的話,那麼就需要自己做更多的努力了,所以在這方面自己一定要更加的去研究,從基礎上去了解,這樣才能夠慢慢的讓自己的這種語言是設計程序能力慢慢的吐錢出來,當然這需要一個很漫長的過程,需要你的堅持。