C語(yǔ)言課程設(shè)計(jì)報(bào)告-萬(wàn)年歷_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告-萬(wàn)年歷_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告-萬(wàn)年歷_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告-萬(wàn)年歷_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告-萬(wàn)年歷_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

萬(wàn)年歷的設(shè)計(jì)

二、設(shè)計(jì)要求

1、能夠顯示星期;2、能夠顯示年月日;3、能夠修改;4、當(dāng)系統(tǒng)時(shí)間變動(dòng)時(shí),能自動(dòng)跳到相應(yīng)的時(shí)間。

三、設(shè)計(jì)目的

1.

通過(guò)本項(xiàng)課程設(shè)計(jì),可以培養(yǎng)獨(dú)立思考、綜合運(yùn)用所學(xué)有關(guān)相應(yīng)知識(shí)的能力,能更好的鞏固《C語(yǔ)言程序設(shè)計(jì)》課程學(xué)習(xí)的內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法,強(qiáng)化上機(jī)動(dòng)手編程能力,闖過(guò)理論與實(shí)踐相結(jié)合的難關(guān)!更加了解了c語(yǔ)言的好處和其可用性!同時(shí)增加了同學(xué)之間的團(tuán)隊(duì)合作精神!更加也體會(huì)到以后在工作中團(tuán)隊(duì)合作的重要性和必要性!

2.

通過(guò)C語(yǔ)言課程設(shè)計(jì),使學(xué)生了解高級(jí)程序設(shè)計(jì)語(yǔ)言的結(jié)構(gòu),掌握基本的程序設(shè)計(jì)過(guò)程和技巧,掌握基本的分析問(wèn)題和利用計(jì)算機(jī)求解問(wèn)題的能力,具備初步的高級(jí)語(yǔ)言程序設(shè)計(jì)能力。為后續(xù)各門(mén)計(jì)算機(jī)課程的學(xué)習(xí)和畢業(yè)設(shè)計(jì)打下堅(jiān)實(shí)基礎(chǔ)。

四、設(shè)計(jì)思想及過(guò)程

【一】由于萬(wàn)年歷具有以下特點(diǎn):

1。平年365天(52周+1天),閏年366天(52周+2天)。平年2月28天,閏年2月29天。由于公元1月1日設(shè)為星期六,故3月1日為星期三?!⒁膺@個(gè)“三”為使算法達(dá)到最簡(jiǎn),故本算法以“星期”為計(jì)算單位。且選3月1日為基月。

2。每400年整一閏,或每4年且不為百年的一閏。(原因:地球繞太陽(yáng)一周的時(shí)間是365天5小時(shí)46秒,為了使一年的天數(shù)為整數(shù),將一年的天數(shù)定為365天,余下的時(shí)間積累起來(lái),四年就是23小時(shí)15分4秒,將近一天,把這一天加在某年的二月而成29天,該年稱(chēng)為閏年,其它年稱(chēng)為平年。但四年加一天又多用了44分56秒,這個(gè)數(shù)積滿(mǎn)400年為三天。因此400年中只能有97個(gè)閏年,所以凡能被400整除,或不能被100整除但能被4整除的年份為閏年。)所以百年%4=0閏或(年%4=0并且年<>0)閏。

3。每4年(3個(gè)平年+1個(gè)閏年)共208周+5天——注意這個(gè)“5天”每百年共100*(208周+5天)-1天=5217周+5天——注意這個(gè)“5天”(整百年暫設(shè)為平年)每400年共4*(5217周+5天)+1天(整400年閏)=20871周+0天——注意這個(gè)“0天”和“1天”(4個(gè)整百年只有一個(gè)閏年)即400年一輪回?。ㄔ瓉?lái)萬(wàn)年歷400年前是一家)

【二】根據(jù)萬(wàn)年歷以上特點(diǎn)進(jìn)行編寫(xiě):

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

再對(duì)其中的星期進(jìn)行編寫(xiě):由于公元1月1日設(shè)為星期六,故3月1日為星期三,可以用萬(wàn)年3月1日星期算法(特別是那個(gè)三)由于其公式為:某年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年一輪回?。?00年前是一家)的說(shuō)法1600年,2000年是一樣的;1700年,2100年是一樣的;1800年,2200年是一樣的;1900年,2300年是一樣的。

其中萬(wàn)年某日星期算法其公式為:某日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7通同星期偏差表閏年1月2月3月4月5月6月7月8月9月10月11月12月天數(shù)312931303130313130313031星期360351362402平年1月2月3月4月5月6月7月8月9月10月11月12月天數(shù)312831303130313130313031星期400351362402

為對(duì)以上的萬(wàn)年歷星期的算法是正確的對(duì)其進(jìn)行了以下的計(jì)算:

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

1900年元旦1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=41月表=4(平年)故4+4=1即1900年元旦是星期一1949年國(guó)慶1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=210月表=4(平年)故4+2=6即1949年國(guó)慶是星期六1999年12月31日31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=312月表=2(平年)故2+3=5即1999年12月31日是星期五

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

2000年元旦1日=(0+0/4+1+2)%7=(0+0+1+2)%7=31月表=3(閏年)故3+3->6即2027年元旦是星期六2018年春節(jié)16日=(18+18/4+16+2)%7=(18+4+16+2)%7=52月表=0(平年)故0+5=5即2018年春節(jié)是星期五2099年12月31日31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=212月表=2(平年)故2+2=4即2099年12月31日是星期四

對(duì)于上面的分析以及公式的推論和計(jì)算證明可以對(duì)萬(wàn)年歷中的星期進(jìn)行了編寫(xiě)具體編寫(xiě)程序見(jiàn)(五、萬(wàn)年歷程序)中。

五、萬(wàn)年歷源程序

#include"stdio.h"#include"dos.h"#include"conio.h"#include"stdlib.h"#defineYear(x)(x%4==0&&x%100!=0||x%400==0)?1:0/*判斷閏年*/

intnumofMonth(inty,intm){intday,t=28;if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)day=31;/*定義以上月份為31天*/elseif(m==4||m==6||m==9||m==11)day=30;/*定義以上月份為30天*/else{t+=Year(y);day=t;}/*閏年二月29天,平年28天*/returnday;}intnumofYear(inty){intt=365;/*平年365天*/t+=Year(y);/*閏年366天*/returnt;}intnumofbeforeDays(inty,intm,intd){intsum=d,i;for(i=1;i<m;i++)sum+=numofMonth(y,i);returnsum;}intnumofafterDays(inty,intm,intd){intsum=0,i;for(i=m;i<=12;i++)sum+=numofMonth(y,i);sum-=d;returnsum;}intisDay(inty,intm,intd){intyear=1900,month=1,week=1,i;/*定義萬(wàn)年歷是從1900年開(kāi)始*/longsum=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;returnweek;}voidempty(intn){inti;for(i=0;i<n;i++)printf("%*c",6,'');}voidOutPutCalender(inty,intm,intd)/*計(jì)算x年x月x是星期幾*/{intweek,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");}/*光標(biāo)移到下一行*/printf("\n");}longnumBTDays(inty1,intm1,intd1,inty2,intm2,intd2)/*定義兩個(gè)不同日期*/{inti;longsum=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);}returnsum;}intSelect_mean(){intsm;printf("1.OutPutCalender\n");/*輸出當(dāng)前月份的日歷*/printf("2.Help\n");/*幫助*/printf("0.Quit\n");/*退出*/printf("Pleaseenterchoose(0--2):");/*從0-2中選擇*/doscanf("%d",&sm);/*輸入sm*/while(sm<0||sm>3);returnsm;}voidHelp()/*輸出幫助欄的內(nèi)容*/{printf("1.OutPutCalender\n");printf("2.SystemHelp\n");printf("0.Quit\n");printf("PageUp:Upyear\n");/*上一年*/printf("PageDown:nextyear\n");/*下一年*/printf("-->:nextmonth\n");/*上一月*/printf("<--:Upmonth\n");/*下一月*/}

main(){intyear=2006,year1=2006,month,day,y1,m1,d1,y2,m2,d2,c,t;/*定義運(yùn)行后的日期是2006年*/intinkeySCAN,inkey;/*輸入鍵盤(pán)操作信息*/unionREGSinregs,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)/*當(dāng)選擇為1時(shí),執(zhí)行以下語(yǔ)句*/{switch(Select_mean()){case1: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;/*終止循環(huán)*/case2:Help();break;case0:exit(0);default:printf("EnterERROR!\n");break;}}}

六運(yùn)行過(guò)程1.雙擊TC

1.

當(dāng)對(duì)上面的程序進(jìn)行了調(diào)試后運(yùn)行會(huì)出現(xiàn)下面所示:

第一行所顯示的就是系統(tǒng)時(shí)間!滿(mǎn)足了第一條要求“顯示年、月、日”。而當(dāng)改變系統(tǒng)時(shí)間后!再運(yùn)行該程序上面的日期也隨系統(tǒng)時(shí)間改變,所以滿(mǎn)足第四條“當(dāng)系統(tǒng)時(shí)間變動(dòng)時(shí),能自動(dòng)跳到相應(yīng)的時(shí)間?!?/p>

2.

在光標(biāo)處按下“1”后回車(chē),將會(huì)顯示:

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

3.

在光標(biāo)處按下“2”后回車(chē),將會(huì)顯示:

按著幫助所講進(jìn)行了運(yùn)行可知:按“PageUp”鍵其下面接著會(huì)顯示上一年該月的萬(wàn)年歷,按“PageDown”鍵其下面會(huì)接著顯示下一年該月的萬(wàn)年歷;按“←”鍵下面將會(huì)接著顯示當(dāng)年上一個(gè)月的萬(wàn)年歷,按“→”鍵將會(huì)接著在下面顯示去下一個(gè)月的萬(wàn)年歷。

4.

由上所顯示鍵入“0”后將會(huì)退去該程序。由以上運(yùn)行的結(jié)果可知該c語(yǔ)言所設(shè)計(jì)的萬(wàn)年歷滿(mǎn)足設(shè)計(jì)要求!

七、在C語(yǔ)言編程中常見(jiàn)錯(cuò)誤

C語(yǔ)言的最大特點(diǎn)是:功能強(qiáng)、使用方便靈活。C編譯的程序?qū)φZ(yǔ)法檢查并不象其它高級(jí)語(yǔ)言那么嚴(yán)格,這就給我們留下“靈活的余地”,但還是由于這個(gè)靈活給程序的調(diào)試帶來(lái)了許多不便,尤其對(duì)我們這些初學(xué)C語(yǔ)言的人來(lái)說(shuō),經(jīng)常會(huì)出一些連自己都不知道錯(cuò)在哪里的錯(cuò)誤??粗绣e(cuò)的程序,不知該如何改起,我通過(guò)這次編程,也積累了一些C編程時(shí)常犯的錯(cuò)誤:

1.

書(shū)寫(xiě)標(biāo)識(shí)符時(shí),忽略了大小寫(xiě)字母的區(qū)別。

編譯程序把a(bǔ)和A認(rèn)為是兩個(gè)不同的變量名,而顯示出錯(cuò)信息。C語(yǔ)言認(rèn)為大寫(xiě)字母和小寫(xiě)字母是兩個(gè)不同的字符。習(xí)慣上,符號(hào)常量名用大寫(xiě),變量名用小寫(xiě)表示,以增加可讀性。

2.忽略了變量的類(lèi)型,進(jìn)行了不合法的運(yùn)算。

%是求余運(yùn)算,得到a/b的整余數(shù)。整型變量a和b可以進(jìn)行求余運(yùn)算,而實(shí)型變量則不允許進(jìn)行“求余”運(yùn)算。

3.將字符常量與字符串常量混淆。

混淆了字符常量與字符串常量,字符常量是由一對(duì)單引號(hào)括起來(lái)的單個(gè)字符,字符串常量是一對(duì)雙引號(hào)括起來(lái)的字符序列。C規(guī)定以“\”作字符串結(jié)束標(biāo)志,它是由系統(tǒng)自動(dòng)加上的,所以字符串“a”實(shí)際上包含兩個(gè)字符:‘a(chǎn)'和‘\',而把它賦給一個(gè)字符變量是不行的。

4.忽略了“=”與“==”的區(qū)別。

在C語(yǔ)言中,“=”是賦值運(yùn)算符,“==”是關(guān)系運(yùn)算符。如:

if(a==3)a=b;

前者是進(jìn)行比較,a是否和3相等,后者表示如果a和3相等,把b值賦給a。由于習(xí)慣問(wèn)題,初學(xué)者往往會(huì)犯這樣的錯(cuò)誤。

5.忘記加分號(hào)。

分號(hào)是C語(yǔ)句中不可缺少的一部分,語(yǔ)句末尾必須有分號(hào)。

a=1b=2

編譯時(shí),編譯程序在“a=1”后面沒(méi)發(fā)現(xiàn)分號(hào),就把下一行“b=2”也作為上一行語(yǔ)句的一部分,這就會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。改錯(cuò)時(shí),有時(shí)在被指出有錯(cuò)的一行中未發(fā)現(xiàn)錯(cuò)誤,就需要看一下上一行是否漏掉了分號(hào)。

{z=x+y;

t=z/100;

printf("%f",t);

}

對(duì)于復(fù)合語(yǔ)句來(lái)說(shuō),最后一個(gè)語(yǔ)句中最后的分號(hào)不能忽略不寫(xiě)(這是和PASCAL不同的)。

6.多加分號(hào)。

對(duì)于一個(gè)復(fù)合語(yǔ)句,如:

{z=x+y;

t=z/100;

printf("%f",t);

};

復(fù)合語(yǔ)句的花括號(hào)后不應(yīng)再加分號(hào),否則將會(huì)畫(huà)蛇添足。

又如:

if(a%3==0);

I++;

本是如果3整除a,則I加1。但由于if(a%3==0)后多加了分號(hào),則if語(yǔ)句到此結(jié)束,程序?qū)?zhí)行I++語(yǔ)句,不論3是否整除a,I都將自動(dòng)加1。

再如:

for(I=0;I<5;I++);

{scanf("%d",&x);

printf("%d",x);}

本意是先后輸入5個(gè)數(shù),每輸入一個(gè)數(shù)后再將它輸出。由于for()后多加了一個(gè)分號(hào),使循環(huán)體變?yōu)榭照Z(yǔ)句,此時(shí)只能輸入一個(gè)數(shù)并輸出它。

7.輸入變量時(shí)忘記加地址運(yùn)算符“&”。

inta,b;

scanf("%d%d",a,b);

這是不合法的。Scanf函數(shù)的作用是:按照a、b在內(nèi)存的地址將a、b的值存進(jìn)去。“&a”指a在內(nèi)存中的地址。

8.輸入數(shù)據(jù)的方式與要求不符。scanf("%d%d",&a,&b);輸入時(shí),不能用逗號(hào)作兩個(gè)數(shù)據(jù)間的分隔符,如下面輸入不合法:

3,4

輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間以一個(gè)或多個(gè)空格間隔,也可用回車(chē)鍵,跳格鍵tab。

scanf("%d,%d",&a,&b);C規(guī)定:如果在“格式控制”字符串中除了格式說(shuō)明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。下面輸入是合法的:

3,4

此時(shí)不用逗號(hào)而用空格或其它字符是不對(duì)的。

343:4

又如:

scanf("a=%d,b=%d",&a,&b);

輸入應(yīng)如以下形式:

a=3,b=4

9.輸入字符的格式與要求不一致。

在用“%c”格式輸入字符時(shí),“空格字符”和“轉(zhuǎn)義字符”都作為有效字符輸入。

scanf("%c%c%c",&c1,&c2,&c3);

如輸入abc

字符“a”送給c1,字符“”送給c2,字符“b”送給c3,因?yàn)?c只要求讀入一個(gè)字符,后面不需要用空格作為兩個(gè)字符的間隔。

10.輸入輸出的數(shù)據(jù)類(lèi)型與所用格式說(shuō)明符不一致。

例如,a已定義為整型,b定義為實(shí)型

a=3;b=4.5;

printf("%f%d\n",a,b);語(yǔ)法錯(cuò)

邏輯錯(cuò)運(yùn)行錯(cuò)

0.忘記定義變量:

main()

{x=3;y=6;

printf(“%d\n”,x+y);

11.C語(yǔ)言的變量一定要先定義才能使用;

12.輸入輸出的數(shù)據(jù)的類(lèi)型與所用格式說(shuō)明符不一致

inta=3;floatb=4.5;printf(“%f%d\n”,a,b);

它們并不是按照賦值的規(guī)則進(jìn)行轉(zhuǎn)換(如把4.5轉(zhuǎn)換為4),而是將數(shù)據(jù)在存儲(chǔ)單元中的形式按格式符的要求組織輸出(如b占4個(gè)字節(jié),只把最后兩個(gè)字節(jié)的數(shù)據(jù)按%d,作為整數(shù)輸出)

13.未注意int型數(shù)據(jù)的數(shù)值范圍

int型數(shù)據(jù)的數(shù)值范圍(-32768~32768)

intnum=89101;

printf(“%d”,num);

會(huì)將超過(guò)低16位的數(shù)截去從而得到23563

注意:定義了long型,而在輸出時(shí)仍用”%d”說(shuō)明符,仍會(huì)出現(xiàn)以上錯(cuò)誤

14.輸入變量時(shí)忘記使用地址符

scanf(“%d%d”,a,b);

15.輸入時(shí)數(shù)據(jù)的組織與要求不符

對(duì)scanf函數(shù)中格式字符串中除了格式說(shuō)明符外,對(duì)其他字符必須按原樣輸入

16.誤把”=“作為”等于”比較符

“=“為附值運(yùn)算符

“==“為比較運(yùn)算符

17.語(yǔ)句后面漏分號(hào)

{

t=a;

a=b;

b=t

}

它是pascal的語(yǔ)法

18.不該加分號(hào)的地方加了分號(hào)

if(a>b);

printf(“aislargerthanb\n”);

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

{

scanf(“%d”,&x);

printf(“%d\n”,x*x);

}

19.對(duì)應(yīng)該有花括弧的復(fù)合語(yǔ)句,忘記加花括弧

sum=0;

i=1;

while(i<=100)

sum=sum+1;

i++;

20.括弧不配對(duì)

while((c=getchar()!=‘#’)

putchar(c);

11.在用標(biāo)識(shí)時(shí),忘記了大寫(xiě)字母和小寫(xiě)字母的區(qū)別

{

inta,b,c;

a=2;

b=3;

C=A+B;

printf(“%d+%d=%D”,A,B,C);

}

12.引用數(shù)組元素時(shí)誤用發(fā)圓括弧

{

inti,a(10);

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

scanf(“%d”,&a(i));

}

13.在定義數(shù)組時(shí),將定義的”元素個(gè)數(shù)”誤認(rèn)為是”可使用的最大下標(biāo)值

{

inta[10]={1,2,3,4,5,6,7,8,9,10};

inti;

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

printf(“%d”,a[i]);

}

14.對(duì)二維或多維數(shù)組的定義和引用的方法不對(duì)

{

inta[5,4];

printf(“%d”,a[1+2,2+2]);

}

15.誤以為數(shù)組名代表數(shù)組中全部元素

{inta[4]={1,2,3,4};

printf(“%d%d%d%d”,a);

}

16.混淆字符數(shù)組與字符指針的區(qū)別

main()

{

charstr[40];

str=“Computerandc”;

printf(“%s\n”,str);

}

17.在引用指針變量之前沒(méi)有對(duì)它賦予確定的值

{

char*p;

scanf(“%s”,p);

}

{

char*p,c[20];

p=c;

scanf(“%s”,p);

}

18.switch語(yǔ)句的各分支中漏寫(xiě)break語(yǔ)句

混淆字符和字符串的表示形式

charsex;

sex=“M”;

19.使用自加(++)和自減(--)運(yùn)算符時(shí)出的錯(cuò)誤

{

int*p,a[5]={1,3,5,7,9};

p=a;

printf(“%d”,*p++);

}

注意于*(++p)的區(qū)別;

20.所調(diào)用的函數(shù)在調(diào)用語(yǔ)句之后才定義,而又在調(diào)用前未加說(shuō)明

main()

{floatx,y,z;

x=3.5;y=-7.6;

z=max(x,y);

printf(“%f”,z);

}

編譯時(shí)不給出出錯(cuò)信息,但運(yùn)行結(jié)果將與原意不符。這種錯(cuò)誤尤其需要注意。

八、心得體會(huì)

1.

目前流行的計(jì)算機(jī)日歷程序,比較典型的是Windows各版本中的日歷程序以及基礎(chǔ)于該程序所開(kāi)發(fā)的各種應(yīng)用程序中的日歷程序。然而,這些程序都千篇一律的局限在一個(gè)很短的時(shí)間范圍內(nèi)。(Windows各個(gè)版本一般都局限在1980年至2099年這一范圍內(nèi)),但是,在很多情況下,特別是在眾多的科學(xué)研究領(lǐng)域中,一個(gè)時(shí)間跨度較大的日歷程序是很有參考價(jià)值的。C程序設(shè)計(jì)語(yǔ)言充分發(fā)揮了其自身無(wú)與倫比的優(yōu)越性,用極短的程序文本填補(bǔ)了這一領(lǐng)域的空白,同時(shí)用鐵的事實(shí)強(qiáng)有力的告訴世人:C程序設(shè)計(jì)語(yǔ)言作為計(jì)算機(jī)語(yǔ)言家族的新生事物,其發(fā)展前景是極為廣闊的。

2.

經(jīng)過(guò)上一個(gè)學(xué)期對(duì)《C程序設(shè)計(jì)》的學(xué)習(xí),我們學(xué)習(xí)了理論知識(shí),了解了C語(yǔ)言程序設(shè)計(jì)的思想,這些知識(shí)都為我們的下一步學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ)。通過(guò)課程設(shè)計(jì),一方面是為了檢查我們一個(gè)學(xué)期來(lái)我們學(xué)習(xí)的成果,另一方面也是為了讓我們進(jìn)一步的掌握和運(yùn)用它,同時(shí)也讓我們認(rèn)清自己的不足之處和

溫馨提示

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

評(píng)論

0/150

提交評(píng)論