版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年中級(jí)經(jīng)濟(jì)師之中級(jí)經(jīng)濟(jì)師金融專(zhuān)業(yè)題庫(kù)(基礎(chǔ)題)
- 2021年江蘇無(wú)錫中考滿(mǎn)分作文《請(qǐng)讓我來(lái)》3
- 鴨絨填充物購(gòu)銷(xiāo)協(xié)議
- 小型塑料垃圾桶訂購(gòu)條款
- 冰箱采購(gòu)合同的續(xù)簽程序
- 北京市二手房買(mǎi)賣(mài)合同范本
- 農(nóng)產(chǎn)品購(gòu)銷(xiāo)合同法律解讀
- 購(gòu)銷(xiāo)合同協(xié)議書(shū)范本的修改技巧
- 購(gòu)房借款擔(dān)保抵押合同
- 煤炭供需合同購(gòu)銷(xiāo)合同
- 小學(xué)信息技術(shù)應(yīng)用培訓(xùn)(全文)
- 優(yōu)良學(xué)風(fēng)班級(jí)申報(bào)材料-2
- 雪地足球賽方案
- 質(zhì)量管理績(jī)效指標(biāo)設(shè)置
- 《使用搜索引擎》課件
- 井下爆破安全
- 醫(yī)院科室醫(yī)療質(zhì)量安全管理持續(xù)改進(jìn)記錄本(包括活動(dòng)記錄與科室質(zhì)控?cái)?shù)據(jù)監(jiān)測(cè)與統(tǒng)計(jì)表格)(模板)
- 【北京·名師課堂】《從百草園到三味書(shū)屋》名師課件(第2課時(shí))
- 校醫(yī)務(wù)室托管投標(biāo)方案
- 珠寶品牌建設(shè)與推廣
- 介入診療規(guī)范
評(píng)論
0/150
提交評(píng)論