第一篇:C語言程序設(shè)計(jì)報告(精選)
C語言程序設(shè)計(jì)報告
(二)第一章:使用數(shù)組和指針統(tǒng)計(jì)成績
1.設(shè)計(jì)題目:假設(shè)給定班級各科考試平均成績的原始資料如下
數(shù)學(xué):75 物理:80 外語:83 政治:85 體育:86 人數(shù):30
要求統(tǒng)計(jì)出全班學(xué)期總平均成績以及得分最低的科目和該科目的成績。要求的輸出結(jié)果如下:
全班各科平均成績?nèi)缦拢?數(shù)學(xué):75 物理:80 外語:83 政治:85 體育:86 人數(shù):30 統(tǒng)計(jì)結(jié)果如下: 人數(shù):30
平均成績:81
最低分?jǐn)?shù)科目的成績:75 最低分?jǐn)?shù)的科目:數(shù)學(xué)
2.設(shè)計(jì)要求
對存放原始數(shù)據(jù)的要求如下:
(1)、使用整形數(shù)組a數(shù)學(xué)、物理、外語、政治、體育、人數(shù)、平均成績、最低科目成績 ;
(2)、使用字符串?dāng)?shù)name存放數(shù)學(xué)、物理、外語、政治、體育、最低分?jǐn)?shù)的科目
(3)、使用字符串?dāng)?shù)組MeanLow存放人數(shù)、平均成績、最低分?jǐn)?shù)科目的成績、最低分?jǐn)?shù)的科目。
實(shí)現(xiàn)本設(shè)計(jì)功能的方法很多,這里給出4種難易成度不同的要求,以便加深對數(shù)組和指針知識的理解。
1.使用數(shù)組實(shí)現(xiàn)
使用數(shù)組和指針數(shù)組實(shí)現(xiàn)。2..使用分配的內(nèi)存實(shí)現(xiàn)
要求將數(shù)組a的內(nèi)容存入到分配的內(nèi)存中,使用指針實(shí)現(xiàn)對內(nèi)存的存取和計(jì)算。
3.將數(shù)組內(nèi)容全部存入內(nèi)存
為字符分配內(nèi)存,并將字符數(shù)組的內(nèi)容存入所分配的內(nèi)存中,使用指針來實(shí)現(xiàn)。
源程序:
int pingjun(int *x);int zuidi(int *x);
int kemu(int *y,int n);#include
int kemu(int *y,int n){int i, t=y[0],m=0;for(i=1;i {if(t>y[i]){t=y[i];m++;} } return m;} int pingjun(int *x){int sum=0 ,i,aver;for(i=0;i<5;i++)sum=sum+x[i];aver=sum/5;return aver;} void main() {int a[9]={75,80,83,85,86,30},i,x; char *name[5]={“數(shù)學(xué)”,“物理”,“外語”,“政治”,“體育”}; char *meanlow[4]={“人數(shù)”,“平均成績”,“最低分?jǐn)?shù)科目成績”,“最低分科目”}; printf(“原始信息如下:n”);for(i=0;i<5;i++) printf(“%s:%dn”,name[i],a[i]);for(i=0;i<4;i++) printf(“%s:%dn”,meanlow[i],a[i+5]);printf(“全班各科平均成績?nèi)缦拢簄”);for(i=0;i<5;i++) printf(“%s:%dn”,name[i],a[i]);printf(“統(tǒng)計(jì)結(jié)果如下:n”); printf(“%s:%dn”,meanlow[0],a[5]); printf(“%s:%dn”,meanlow[1],pingjun(a));printf(“%s:%dn”,meanlow[2],zuidi(a));x=kemu(a,5); printf(“%s:%sn”,meanlow[3],name[x]);} 實(shí)習(xí)報告 題 目: C語言程序設(shè)計(jì) 所屬系、部 : 電氣工程學(xué)院 班 級: 電子商務(wù)131 姓 名: 賀道君 學(xué) 號: 20***5 指 導(dǎo) 教 師: 費(fèi) 玲 玲 2014年6月 一、實(shí)習(xí)目的 加深理解C語言基礎(chǔ)知識及其編程技術(shù),了解高級程序設(shè)計(jì)語言的結(jié)構(gòu),熟練掌握程序設(shè)計(jì)方法和技巧,掌握基本的分析和利用計(jì)算機(jī)求解問題的能力,具備初步的高級語言程序設(shè)計(jì)能力。 二、實(shí)習(xí)時間、地點(diǎn) 6月16日(星期一)上午:微機(jī)室5 下午:微機(jī)室5 6月17日(星期二) 3、4:微機(jī)室5 下午:微機(jī)室3 6月18日(星期三)上午:微機(jī)室5 下午:學(xué)校 6月19日(星期四)上午:微機(jī)室5 下午:微機(jī)室3 6月20日(星期五)上午:C101 下午:學(xué)校 三、實(shí)習(xí)內(nèi)容 綜合 四、實(shí)習(xí)總結(jié) 在學(xué)C語言的一個學(xué)期后,我們進(jìn)行了C語言實(shí)訓(xùn)階段,嘗試自己編寫一個比較復(fù)雜的程序系統(tǒng)。在為期一周周的時間中,我們同組的同學(xué)共同的感受是:C語言實(shí)訓(xùn)和平時上課所接觸的程序是有很大不同的,所經(jīng)受的考驗(yàn)和克服的困難是平時所無法比擬的。好在同組的搭檔們精誠合作,分工明確,有問題共同解決,攻克了C語言實(shí)訓(xùn)的復(fù)雜程序。在這里,我作為其中的參與者,自然感觸良多 剛開始接觸到C的時候,我已經(jīng)學(xué)過一些有關(guān)VB的內(nèi)容,這個在算法和思維上稍微有點(diǎn)幫助。回想本學(xué)期的學(xué)習(xí),首先,最基本的,是C的數(shù)據(jù)格式,讓我們知道整數(shù),浮點(diǎn)數(shù)以及字符常量在C中的運(yùn)用。然后,在學(xué)會了數(shù)據(jù)轉(zhuǎn)化,以及熟練的可以對各種數(shù)據(jù)處理之后,我開始進(jìn)行有關(guān)數(shù)據(jù)結(jié)構(gòu),像數(shù)組,結(jié)構(gòu)體等的學(xué)習(xí),因?yàn)橛械臇|西從現(xiàn)有的知識來看都是非常簡單的,還沒有聯(lián)系到指針等等一些復(fù)雜的概念??墒牵瑑H僅學(xué)會這些是遠(yuǎn)遠(yuǎn)不夠的,C語言中,還有很多更加經(jīng)典、重要、實(shí)用的知識。 說說函數(shù)。雖說很多程序語言都有函數(shù)這一內(nèi)容,但我覺得C語言的函數(shù)是最有魅力的了。學(xué)習(xí)函數(shù)的方法是比較簡單的,只有兩個字“牢記”,即:牢記函數(shù)的功能,牢記函數(shù)的用途以及如何輸入輸出。函數(shù)從本質(zhì)上講是一段通用程序,用它可以幫助我們節(jié)約很多編程的時間,學(xué)習(xí)C語言的“高人”都說,一個聰明的編程者在編寫程序前往往總是先找自己所編寫的程序中有多少是可以用函數(shù)來代替的。比如,大家可以作一個比較字符串的實(shí)驗(yàn),用C語言中的strcmp()函數(shù)只要一句話,而自己編寫的話,30句都很難實(shí)現(xiàn),可想而知函數(shù)的實(shí)用和快捷。在我們C語言實(shí)訓(xùn)的代碼中,函數(shù)更是得到了充分的應(yīng)用,可以說,實(shí)訓(xùn)題目的復(fù)雜代碼,就是用無數(shù)個函數(shù)的調(diào)用和嵌套積累出來的。要注意的是,有的同學(xué)剛剛開始的時候,都是被一些大的程序激勵的,所以當(dāng)開始的時候看到繁瑣的數(shù)據(jù)轉(zhuǎn)化和簡單的算法,都覺得很無聊,都想自己做幾個自己滿意的程序來看看,雖然這種想法很好,但是,我們說,沒有基礎(chǔ),純粹是搬照一些現(xiàn)成設(shè)計(jì)方法,是不足取的。要知道,程序設(shè)計(jì)講究的是個人的思維的,假如剛開始就被一些現(xiàn)成的思想束縛住,以后就會覺得很無趣。 我們知道,指針其實(shí)是C語言的靈魂,許多的數(shù)據(jù)結(jié)構(gòu)在我們學(xué)到這里之前都可以說是精通了。所以我們的任務(wù)就是,讓數(shù)據(jù)結(jié)構(gòu)在指針中運(yùn)行。當(dāng)然,剛剛開始接觸到這些新的東西,是一件非常痛苦的事情,所以我們一定要用非常形象的思維去看待指針,不能太固化。所以,新的東西,比如結(jié)構(gòu)體在指針中的表現(xiàn)方法,數(shù)組及多維數(shù)組在結(jié)構(gòu)體中的運(yùn)用,都一點(diǎn)一點(diǎn)的加了進(jìn)來,同時豐滿了我們對原來C的數(shù)據(jù)機(jī)構(gòu),數(shù)據(jù)表示的理解。當(dāng)我們完成了這三步的學(xué)習(xí),我們已經(jīng)可以自豪的說,我們的基礎(chǔ)都扎實(shí)了,可以進(jìn)一步的學(xué)習(xí)有關(guān)算法,設(shè)計(jì)概念等等深層次的東西了。 但是,指針,結(jié)構(gòu)體,這些太抽象的東西,在學(xué)習(xí)C語言的時候我們就有點(diǎn)“似懂非懂”,可是在眼下的C語言實(shí)訓(xùn)中,像這么重要的C語言知識,一定要達(dá)到能熟練掌握,實(shí)際運(yùn)用的程度。在實(shí)訓(xùn)的大程序中,結(jié)構(gòu)體在指針中的表現(xiàn)方法,數(shù)組及在結(jié)構(gòu)體中的運(yùn)用等具體的技術(shù)環(huán)節(jié),都得到了體現(xiàn),不會指針,我們的工作是沒法展開的。所以,在實(shí)訓(xùn)期間,大家在鞏固基本知識的基礎(chǔ)上,逐塊攻克實(shí)訓(xùn)課題,克服了困難,自信心得到了提高。 最后,談?wù)勎覀兘M的程序軟件。商店商品管理系統(tǒng),是一個比較利于應(yīng)用,解決實(shí)際問題,方便實(shí)際管理的程序。設(shè)計(jì)代碼比較復(fù)雜,結(jié)構(gòu)比較嚴(yán)謹(jǐn)。在程序編寫的1周左右的時間里,組員們遇到了上述的困難,包括程序設(shè)計(jì)構(gòu)思,甚至是指針等某些知識點(diǎn)的欠缺,導(dǎo)致的工作中出現(xiàn)的困難。但是,當(dāng)大家一起團(tuán)結(jié)協(xié)作,解決了這些困難之后,發(fā)現(xiàn)自己也可以編寫復(fù)雜的、應(yīng)用性的程序了,更發(fā)現(xiàn)自己對C語言這門學(xué)科的興趣也提高了。 當(dāng)然,我們編寫的商店商品管理系統(tǒng),還存在很多疏漏和不合理之處。比如,程序復(fù)雜冗長,如果時間充裕,我們將在不改變程序運(yùn)行結(jié)果的基礎(chǔ)上,簡化程序,使每一句更加精辟,總體上更加簡化。另外,在程序的外觀上,我們由于時間問題,沒有做更多的修飾,運(yùn)行起來顯得比較死板、枯燥乏味。如果增添一些色彩和其他效果,我們的程序也許會更加完美。以上就是我的C語言實(shí)訓(xùn)個人總結(jié) 大連東軟信息學(xué)院 電子工程系 2015級 本科 C語言圖形程序設(shè)計(jì)報告 系所: 專業(yè): 電子工程系 通信工程 學(xué)生姓名: 湯程皓 學(xué)生學(xué)號: *** 完成日期: 2015 年 12 月 大連東軟信息學(xué)院 Dalian Neusoft University of Information 目錄 目錄..............................................................................................................................................C語言圖形程序設(shè)計(jì)主要內(nèi)容包括圖形模式的初始化、基本圖形功能、圖形窗口以及圖形模式下的文本輸出等圖形函數(shù)的使用,以及按鍵處理和聲音等。學(xué)生根據(jù)C語言圖形程序設(shè)計(jì)指導(dǎo)書,通過編輯、編譯、調(diào)試、運(yùn)行示例代碼,逐步掌握C語言圖形應(yīng)用程序中常用函數(shù)的作用與使用方法,并綜合運(yùn)用《C語言程序設(shè)計(jì)》課程所學(xué)知識,設(shè)計(jì)、實(shí)現(xiàn)具有創(chuàng)新功能的程序。成果物是一個綜合性較好的圖形應(yīng)用程序和項(xiàng)目報告。設(shè)計(jì)要求 設(shè)計(jì)并實(shí)現(xiàn)一個獨(dú)特的圖形應(yīng)用程序。要求程序功能完整;包含屏幕顏色設(shè)置、圖形繪制與填充、圖形窗口設(shè)置、圖形模式下文本輸出、按鍵操作等;用戶界面友好;代碼量500行以上。程序功能 使用if,for,switch,circle,line,arc及另外一些圖形化編程函數(shù)實(shí)現(xiàn)一些畫面效果(形狀顏色變化,字體顏色大小設(shè)置等),最后使用line畫線的方法畫出中文“再見“二字。核心算法 大量使用for循環(huán),switch、if判斷來實(shí)現(xiàn)一些畫面的變化;大量使用函數(shù)調(diào)用的方式來保持代碼的整潔;使用delay()函數(shù)來延遲兩幅畫面切換的時間;大量使用圖形化編程的函數(shù)和方法來實(shí)現(xiàn)畫面效果。 注:流程圖無能為力了,不會畫。程序代碼 #include #include /*模塊化編程*/ /*函數(shù)調(diào)用*/ void start();void tuoyuan();void guochang();void kaitou();void huaban();void tree();void moon();void end();void zai();void jian();main(){ int gdriver;int gmode;int i;int line;clrscr();gdriver=DETECT;initgraph(&gdriver,&gmode,“C:TC20BGI”);kaitou();start();getch(); tuoyuan();delay(800);setbkcolor(15);cleardevice(); /*插入眼睛像*/ ellipse(320,240,0,360,30,17.5);setcolor(4);circle(320,240,17.5);setfillstyle(1,4);floodfill(320,240,4);/*畫顏色漸變同心圓*/ for(i=0;i<=30;i++){ } delay(800);guochang();delay(1000);cleardevice();huaban();moon();tree();delay(500);cleardevice();end(); setcolor(i);circle(320,240,20+i*10);delay(80); } setbkcolor(6);zai();delay(1000);/*開頭過渡*/ void start(){ } /*畫一些形狀顏色漸變橢圓*/ void tuoyuan(){ int x=360;int y=160;int driver;int mode=VGAHI; int gd;int gm;gd=DETECT;initgraph(&gd,&gm,“C:TC20BGI”);randomize();cleardevice();setbkcolor(3);setcolor(4);settextstyle(0,0,2);outtextxy(100,160,“ tttt ARE YOU READY?!”);settextstyle(0,0,2);outtextxy(100,240,“ Input any key,let's go!”); } int num=20;int i;int t;int b;driver=DETECT;initgraph(&driver,&mode,“C://TC20//BGI”);t=y-30;b=y-30;setbkcolor(0); for(i=0;i } delay(300);for(i=0;i<20;i++){ } setcolor(i+2-1);ellipse(470,240,0,360,t,b);t+=5;b-=5;setcolor(i+2-1);ellipse(200,230,0,360,t,b);t-=5;b+=5;/*畫變色圓周運(yùn)動*/ void guochang() { case 2:for(i=1;i<640;i++) { if(i==1){ setcolor(4); int gdriver;int i;int b;int c;int gmode;gdriver=DETECT;initgraph(&gdriver,&gmode,“C:TC20BGI”);setbkcolor(13);for(c=1;c<9;c++){ switch(c){ case 1:for(i=1;i<640;i++) { } break;if(i==1){ } else{} setcolor(14);for(b=1;b<240;b++)line(320, 240, 1, b); } } for(b=240;b<480;b++)line(320,240,1,b); else{} break; case 3:for(i=1;i<640;i++) { } break; if(i<320&&i>1){ } else{} setcolor(6);line(320,240,i,479); case 4:for(i=1;i<640;i++) { } break; if(i<640&&i>=320){ } else{} setcolor(5);line(320, 240, i,479); case 5:for(i=640;i>0;i--) { } break;if(i==639){ } else{} setcolor(10);for(b=480;b>240;b--)line(320,240,639,b); case 6:for(i=640;i>0;i--) { } break;if(i==639){ } else{} setcolor(3);for(b=240;b>0;b--)line(320, 240,639, b); case 7:for(i=640;i>0;i--) { if(i<640&&i>=320){ setcolor(9); } } } line(320,240,i,1); else{} break; } } case 8:for(i=640;i>0;i--) { } break; if(i<320&&i>0){ } else{} setcolor(12);line(320, 240, i, 1);/*開頭*/ void kaitou(){ int i;int a;int b;int c;int gdriver; int gmode;char s[30];clrscr();gdriver=DETECT;initgraph(&gdriver, &gmode, “C:TC20BGI”);setbkcolor(14);cleardevice();for(a=50;a<640;){ } b=50;setcolor(4);circle(a,b,43);setcolor(9);ellipse(a,b,0,360,43,20);ellipse(a,b,0,360,20,43);setcolor(7);ellipse(a,b,0,360,20,10);setcolor(8);circle(a,b,10);setfillstyle(1,8);floodfill(a,b,8);a=a+90;for(b=50;b<480;){ a=50; } setcolor(4);circle(a,b,45);setcolor(9);ellipse(a,b,0,360,21,45);ellipse(a,b,0,360,45,21);setcolor(7);ellipse(a,b,0,360,22.5,12);circle(a,b,12);b=b+95;for(a=50;a<640;){ } b=430;setcolor(4);circle(a,b,43);setcolor(9);ellipse(a,b,0,360,43,20);ellipse(a,b,0,360,20,43);setcolor(7);ellipse(a,b,0,360,20,10);circle(a,b,10);a=a+90;for(b=50;b<480;){ a=590;setcolor(4); } } circle(a,b,45);setcolor(9);ellipse(a,b,0,360,21,45);ellipse(a,b,0,360,45,21);setcolor(7);ellipse(a,b,0,360,22.5,12);circle(a,b,12);b=b+95;setviewport(100, 100, 540, 380, 0);setfillstyle(1, 2);setcolor(14);rectangle(0, 0, 439, 279);floodfill(50, 50, 14);setcolor(12);settextstyle(4, 0, 8);outtextxy(20, 20, “TCH”);setcolor(15);settextstyle(3, 0, 5);outtextxy(120, 120, “DREAM START!”);setcolor(14);settextstyle(3, 0, 2);outtextxy(120, 200, “Please input any key!”);getch();closegraph();return 0;/*用math畫顏色變化花瓣*/ void huaban(){ for(b=1;b<6;b++){ switch(b){ case 1:for(a=0.0;a<2*3.14;a+=2*3.14/720) case 2:for(a=0.0;a<2*3.14;a+=2*3.14/720) { e=100*(1+sin(4*a));x1=320+e*cos(a); float a,e;float x1,y1,x2,y2;int gdriver=DETECT,b;int gmode;initgraph(&gdriver,&gmode,“C://TC20//BGI”);cleardevice();setcolor(GREEN);setbkcolor(0);{ e=100*(1+sin(4*a));x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(10);line(x1,y1,x2,y2);}break; x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(12);line(x1,y1,x2,y2);}break;case 3:for(a=0.0;a<2*3.14;a+=2*3.14/720) case 4:for(a=0.0;a<2*3.14;a+=2*3.14/720) { e=100*(1+sin(4*a));x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(14);line(x1,y1,x2,y2);}break;{ e=100*(1+sin(4*a));x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(1);line(x1,y1,x2,y2);}break; } } case 5:for(a=0.0;a<2*3.14;a+=2*3.14/720) } { e=100*(1+sin(4*a));x1=320+e*cos(a);x2=320+e*cos(a+3.14/5);y1=240+e*sin(a);y2=240+e*sin(a+3.14/5);setcolor(9);line(x1,y1,x2,y2);}break;/*畫樹*/ void tree(){ setcolor(2);line(83,330,55,400); setcolor(8);line(80,400,80,440);line(80,440,75,447);line(75,447,91,447);line(91,447,86,440);line(86,440,86,400);line(86,400,80,400);setfillstyle(6,8);floodfill(83,410,8); } line(55,400,111,400);line(111,400,83,330);setfillstyle(1,2);floodfill(60,390,2);line(83,290,55,360);line(55,360,111,360);line(111,360,83,290);setfillstyle(1,2);floodfill(80,310,2);delay(1000);/*畫月亮*/ void moon(){ } /*倒數(shù)第二結(jié)尾,過渡*/ void end(){ int gdriver;int gmode;gdriver=DETECT; setcolor(14);circle(570,70,40);setfillstyle(1,14);floodfill(570,70,14); } initgraph(&gdriver,&gmode,“C://TC20//BGI”);setbkcolor(3);setcolor(4);settextstyle(0,0,6);outtextxy(90,200,“ THE END!”);setusercharsize(10,1,4,1);settextstyle(3, 0, 2);outtextxy(220, 380, “Please input any key!”);getch();/*正式結(jié)尾*/ /*用橫線拼出“再”*/ void zai(){ int a,b,c,d,e,f,g,h,gdriver;int gmode;gdriver=DETECT;initgraph(&gdriver,&gmode,“C://TC20//BGI”);for(a=70;a<300;){ } for(b=120;b<350;){ setcolor(14);line(90,b,105,b); setcolor(14);line(a,55,a,70);a=a+1; } b=b+1;for(c=90;c<280;){ } for(d=120;d<350;){ } for(e=105;e<265;){ } for(f=45;f<325;){ } for(g=70;g<=255;){ setcolor(14); setcolor(14);line(c,120,c,135);c=c+1;setcolor(14);line(265,d,280,d);d=d+1;setcolor(14);line(e,180,e,195);e+=1;setcolor(14);line(f,240,f,255);f+=1; } } line(177.5,g,192.5,g);g+=1;for(h=243;h<=280;){ } jian();getch();setcolor(14);line(h,335,h,350);h+=1;/*用橫線拼出“見”,并署名*/ void jian(){ int a,b,c,d,e,f,g;for(a=380;a<555;){ } for(b=55;b<250;){ } setcolor(14);line(a,55,a,70);a+=1;setcolor(14);line(380,b,395,b);b+=1; for(c=55;c<250;){ } for(d=220;d<=350;){ } for(e=486;e<612;){ } for(f=280;f<=350;){ } for(g=160;g<=175;){ setcolor(14);arc(g,90,-90,0,300);g+=1; setcolor(14);line(540,c,555,c);c+=1;setcolor(14);line(486,d,501,d);d+=1;setcolor(14);line(e,335,e,350);e+=1;setcolor(14);line(597,f,612,f);f+=1; } } settextstyle(1,0,1);outtextxy(335,420,“TCH was written in 2015-12-12 ”);5 運(yùn)行結(jié)果 開頭 開頭過渡 一些顏色形狀漸變橢圓 顏色漸變同心圓 顏色按順序變化花瓣+樹+月亮 結(jié)尾過渡 結(jié)尾 創(chuàng)新說明 使用for循環(huán)語句畫出一些形狀顏色漸變的橢圓和同心圓;在橢圓里面畫圓,并填充顏色,來實(shí)現(xiàn)眼睛的效果;使用switch,if判斷,和for循環(huán)來實(shí)現(xiàn)顏色如風(fēng)車般變化的動畫;使用switch判斷,for循環(huán)和line、數(shù)學(xué)函數(shù)來實(shí)現(xiàn)顏色變化的花瓣圖案;使用for循環(huán),line函數(shù),計(jì)算坐標(biāo)的方式來畫出中文“再見”二字; 參考文獻(xiàn) [1] 全球最大中文IT社區(qū).Turbo C圖形函數(shù) [EB/OL],http://www.csdn.net,2005.3 [2] 《C語言圖形程序設(shè)計(jì)指導(dǎo)書》 1.Problem A: Hello world!Description Xiao_ming有兩個哥哥,大哥叫Da_min,二哥叫Er_min。三兄弟放學(xué)回家,父母分別跟他們打招呼。 Input 無 Output 請輸出: Hello Da_min, Hello Er_min, Hello Xiao_ming! Sample Input Sample Output Hello Da_min, Hello Er_min, Hello Xiao_ming! HINT 請注意換行符 Append Code #include printf(“Hello Da_min,n”); printf(“Hello Er_min,n”); printf(“Hello Xiao_ming!n”);} 2.Problem B: 求圓的面積和周長 Description 從鍵盤輸入圓的半徑,求圓的面積和周長,圓周率取3.14。 Input 輸入一個浮點(diǎn)型數(shù)據(jù),有效數(shù)字不會超過十進(jìn)制的6位。 Output 輸出為兩行。 第一行為圓的面積,第二行為圓的周長,格式見sample。 Sample Input 3 Sample Output Area: 28.260000 Perimeter: 18.840000 HINT 了解浮點(diǎn)類型的輸入、輸出和算術(shù)運(yùn)算符 Append Code 法一 #include #include double r; scanf(“%d”,&r); printf(“Area: %lfn”,pi*r*r); printf(“Perimeter: %lfn”,2*pi*r); } 3.Problem C:平均值 Description 求3個數(shù)的平均值。 Input 輸入只有一行,為3個較小的整數(shù)。 Output 輸出為這3個整數(shù)的平均值,保留3位小數(shù)。 Sample Input 1 2 3 Sample Output 2.000 HINT 注意除法運(yùn)算對整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)是不一樣的。 Append Code #include 4.Problem D: 求字符的值 Description 從鍵盤輸入3個字符(不含雙字節(jié)字符),分別輸出每個字符的十進(jìn)制值(ASCII碼)、八進(jìn)制值和十六進(jìn)制值。 Input 輸入為3個字符。 Output 輸出為3行。 每一行為每個字符(對應(yīng)輸入順序)的十進(jìn)制、八進(jìn)制和十六進(jìn)制值,用空格分隔開。每個輸出的值占3個字符,不足3個字符前面補(bǔ)0。 Sample Input 0 A Sample Output 048 060 030 032 040 020 065 101 041 HINT 了解字符值的存儲和整型的關(guān)系。 Append Code #include 5.Problem A: 最簡單的程序 Description 輸出一行“Hello world!”。 Input 無 Output Hello world! Sample Input Sample Output Hello world! HINT Append Code #include printf(“Hello world!”);} 6.Problem B: 算術(shù)基本運(yùn)算 Description 計(jì)算兩整數(shù)x和y(0 Input 輸入只有一行,格式見sample。 Output 輸出為多行,按順序每行輸出x,y的和、差、積、商、余數(shù)、x的平方和y的三次方,格式見sample Sample Input x = 11, y = 3 Sample Output x + y : 14 xy : %dn“,x-y); printf(”x * y : %dn“,x*y); printf(”x / y quotient: %d, remainder: %dn“,x/y,x%y); printf(”x ^ 2 : %dn“,x*x); printf(”y ^ 3 : %dn“,y*y*y);} 7.Problem C: 自增自減運(yùn)算 Description C語言中有自增運(yùn)算++、自減運(yùn)算--,并且可以前置和后置。 編寫一個程序:對輸入的一個整數(shù)a,輸出a++、a--、++a、--a的值。 Input 一個整數(shù)a,a是很小的整數(shù)。 Output 輸出為5行,第一行為a的值,后面依次為--a、a--、a++、++a的值。 5行輸出縱向a要對齊,“:”對齊,“:”前后各一個空格,后面的數(shù)值不用對齊。每行行尾都有回車。 Sample Input 0 Sample Output a : 0--a :-1 a--: 0 a++ : 0 ++a : 1 HINT Append Code #include : %dn“,a);printf(”--a : %dn“,--a);a=x;printf(” a--: %dn“,a--);a=x;printf(” a++ : %dn“,a++);a=x;printf(”++a : %dn“,++a);} 8.Problem F: 絕對值 Description 求整型數(shù)據(jù)和浮點(diǎn)型數(shù)據(jù)的絕對值。 Input 輸入兩個數(shù),第一個是整數(shù),第二個是浮點(diǎn)數(shù)。 Output 輸出為兩行,第一行為整數(shù)的絕對值,第二行為浮點(diǎn)數(shù)的絕對值,注意浮點(diǎn)數(shù)的絕對值不輸出無意義的0。 Sample Input-1 1 Sample Output 1 1 HINT 求絕對值可以用標(biāo)準(zhǔn)庫函數(shù)來完成,也可以自己判斷。注意浮點(diǎn)數(shù)的輸出格式。求絕對值的函數(shù)在哪個頭文件?貌似很多人會搞錯,包括很多編書的人! Append Code #include int n; float m; scanf(”%d%f“,&n,&m); //n=abs(n); //m=fabs(m); if(n<0) { n=-n; } if(m<0) { m=-m; } printf(”%dn“,n); printf(”%g“,m); return 0;} 9.Problem A: 奇數(shù)還是偶數(shù)? Description 輸入一個整數(shù),判讀它是奇數(shù)還是偶數(shù)。 Input 輸入只有一行,為一個100以內(nèi)的正整數(shù)。 Output 輸出為一行。 若輸入為偶數(shù)則輸出“even”,奇數(shù)輸出“odd”。Sample Input 30 Sample Output even HINT 用整數(shù)運(yùn)算可以解決,練習(xí)“?:”表達(dá)式。 Append Code #include int n; scanf(”%d“,&n); if(n>=0&&n<=100){ if(n%2==0)printf(”evenn“); else printf(”oddn“); } return 0;} 10.Problem B: 簡單的打折計(jì)算 Description 商店規(guī)定:消費(fèi)滿n元,可以打八八折。設(shè)某件商品標(biāo)價m元,輸入購買的件數(shù)x,計(jì)算出需要支付的金額(單位:元),精確到分。 Input 輸入只有一行,三個整數(shù)m、n和x,且0 Sample Input 95 300 4 Sample Output 334.40 HINT 了解浮點(diǎn)型的輸出控制,注意整型和浮點(diǎn)型混合運(yùn)算過程中的數(shù)據(jù)類型轉(zhuǎn)換。 Append Code #include int m,x,n,a; float b; scanf(”%d%d%d“,&m,&n,&x); 0 x m a=m*x; if(a>n) b=0.88*a; else b=a; printf(”%.2fn“,b); } 11.Problem C: 判斷閏年 Description 輸入一個正整數(shù)的年份,判斷是否為閏年。 Input 輸入只有一行,為一個10000以內(nèi)的正整數(shù)。 Output 輸出為一行。 若輸入為閏年偶數(shù)則輸出“Yes”,否則輸出“No”。 Sample Input 2010 Sample Output No HINT 了解邏輯運(yùn)算符和關(guān)系運(yùn)算符。 Append Code #include int x; scanf(”%d“,&x); if(x>0&&x<10000) { if(x%4==0&&x%100!=0) printf(”Yesn“); else if(x%400==0) printf(”Yesn“); else printf(”Non“); } else printf(”error“);} 12.Problem D: 水仙花數(shù) Description 如果一個三位十進(jìn)制數(shù)等于其各位數(shù)字的立方和,則稱這個數(shù)為水仙花數(shù)。如:13+53+33=153。 Input 一個整數(shù)x,100<=x<=999。 Output x是水仙花數(shù),則輸出“YES”,否則為“NO”。 Sample Input 153 Sample Output YES HINT Append Code #include int a,b,c,x; scanf(”%d“,&x); a=x/100; b=x/10%10; c=x%10; if(x==a*a*a+b*b*b+c*c*c) printf(”Yes“); else printf(”No“);} 13.Problem E: 三個數(shù)比較大小 Description 從鍵盤上輸入0~100之間的三個數(shù),按從小到大的順序輸出。 Input 輸入只有一行,為三個整數(shù)。 Output 按從小到大輸出這三個數(shù)。 Sample Input 15 10 20 Sample Output 10 15 20 HINT 用if語句判斷各種情況可以解決這個問題。 Append Code #include int a,b,c; scanf(”%d%d%d“,&a,&b,&c); if(a>=b) { if(b>=c) printf(”%d %d %dn“,c,b,a); else if(c>=a) printf(”%d %d %dn“,b,a,c); else printf(”%d %d %dn“,b,c,a); } else { if(a>=c) printf(”%d %d %dn“,c,a,b); else if(b>=c) printf(”%d %d %dn“,a,c,b); else printf(”%d %d %dn“,a,b,c); } } 14.Problem F: 奇怪的求和之一 Description 給定3個正整數(shù)a、b和c,按照如下規(guī)則求和: 如果這個數(shù)字是偶數(shù),則累加到和中; 如果這個數(shù)字是奇數(shù),則將大于該數(shù)的最小偶數(shù)累加到和中。 Input 三個正整數(shù),均在100以內(nèi)。 Output 一個和。 Sample Input 2 3 5 Sample Output 12 HINT 如果不會使用分支語句,可使用條件運(yùn)算符判斷到底將哪個數(shù)累積到和中。 Append Code #include int a,b,c; scanf(”%d%d%d“,&a,&b,&c); if(a%2!=0)a++; if(b%2!=0)b++; if(c%2!=0)c++; printf(”%dn“,a+b+c); } 15.Problem G: 你過線了嗎? Description 經(jīng)過四年的學(xué)習(xí),你決定報考我國著名的“285”高校之一的北青大學(xué),經(jīng)過認(rèn)真的復(fù)習(xí),殘酷的考試,終于知曉了自己的考試成績,也知道了北青大學(xué)的錄取分?jǐn)?shù)線,請你編程判斷,自己過線了嗎? Input 輸入有2行,第一行有4個正整數(shù),分別表示三門課程的分?jǐn)?shù)線以及總分分?jǐn)?shù)線。第二行有3個非負(fù)整數(shù),分別表示你考的三門課程的成績。 Output 如果你的三門課程成績都不低于相應(yīng)課程的分?jǐn)?shù)線,且你的考試總分也不低于北青大學(xué)的總分分?jǐn)?shù)線要求,則輸出“congratulations”,否則輸出“sorry”。 Sample Input 70 80 70 240 80 80 82 Sample Output congratulations HINT 如果你不會使用分支語句,同樣可以使用條件運(yùn)算符實(shí)現(xiàn)該程序。 Append Code #include int a,b,c,d,e,f,g,h; scanf(”%d %d %d %dn%d %d %d“,&a,&b,&c,&d,&e,&f,&g); h=e+f+g; if(e>=a&&f>=b&&g>=c&&h>=d) printf(”congratulations“); else printf(”sorry“);} 16.Problem I: A+B Problem(II): Input/Output Practice Description 計(jì)算a+b,0<=a,b<1000。 Input 輸入的第一行是一個整數(shù)N,后面有N對整數(shù)a和b,每對a和b占一行,a,b用空格分開。 Output 每行輸出一個a+b的和,順序與輸入對應(yīng)。 Sample Input 2 1 2 10 20 Sample Output 3 30 HINT N給出了測試樣例數(shù),用for循環(huán)處理方便。 Append Code #include int n,a,b,i;Scanf(“%d”,&n);For(i=0;i 17.Problem H: A+B Problem Description 計(jì)算a+b,0<=a,b<1000。 Input 輸入有多對整數(shù)a和b組成,每對a和b占一行,a,b用空格分開。 Output 每行輸出一個a+b的值,順序與輸入對應(yīng)。 Sample Input 1 2 10 20 Sample Output 3 30 HINT OJ系統(tǒng)上測試輸入結(jié)束符為EOF(End Of File),其值為-1。用scanf()把文件所有內(nèi)容讀完后,會讀到EOF,所以可以用來判斷輸入是否完成,測試時可以用Ctrl+Z產(chǎn)生EOF。本題解法參看FAQ。Append Code #include int a,b; while(scanf(”%d%d“,&a,&b)!=EOF){ printf(”%dn“,a+b); } return 0;} 18.Problem A: 判斷是否是元音字母 Description 輸入一個英文字母,判斷是否是元音字母。元音字母是:a,e,i,o u,A,E,I,O,U Input 輸入一個英文字母 Output 是元音字母,輸出“yes”,否則輸出“no”,行尾沒有回車。 Sample Input A Sample Output yes HINT Append Code #include char ch; scanf(”%c“,&ch); if(ch>='A'&&ch<='Z') ch=ch+32; if(ch=='a') printf(”yes“); else if(ch=='e') printf(”yes“); else if(ch=='i') printf(”yes“); else if(ch=='o') printf(”yes“); else if(ch=='u') printf(”yes“); else printf(”no“); } 19.Problem B: 按順序輸出三個數(shù) Description 對于輸入的3個整數(shù),按照從小到大的順序輸出。 Input 輸入3個int類型內(nèi)的整數(shù),兩兩之間用一個空格隔開。 Output 按照從小到大的順序輸出上述三個數(shù),兩兩之間用一個空格隔開。 Sample Input 2 1 3 Sample Output 1 2 3 HINT Append Code #include int a,b,c,temp; scanf(”%d%d%d“,&a,&b,&c); if(a { temp=a; a=b; b=temp; } if(a { temp=a; a=c; c=temp; } if(b { temp=b; b=c; c=temp; } printf(”%d %d %dn“,c,b,a);} 20.Problem E: Description 判斷輸入整數(shù)的奇偶性。 判斷奇偶數(shù) Input 輸入為一個整數(shù)。 Output 輸出只有一行,代表判斷結(jié)果。如果輸入的整數(shù)n是一個偶數(shù),輸出: n is an even number.否則輸出: n is an odd number.見樣例。 Sample Input 12 Sample Output 12 is an even number.HINT Append Code #include int a; scanf(”%d“,&a); if(a%2==0) printf(”%d is an even number.“,a); else printf(”%d is an odd number.“,a);} 21.Problem A: 判斷兩個整數(shù)的大小關(guān)系 Description 輸入2個整數(shù)a和b,如果a>b,則輸出1,否則輸出0。 Input 兩個整數(shù)a和b,均不超過int類型的表示范圍。 Output 表示a>b的結(jié)果:如果a>b,則輸出1,否則輸出0。 Sample Input 3 4 Sample Output 0 HINT Append Code #include printf(”1“); else printf(”0“);return 0;} 22.Problem D: 成績的等級 Description 把百分制的考試成績轉(zhuǎn)換成五級制的成績: 90~100:Excellent 80~89:Good 70~79:Average 60~69:Pass 0~59:Failing 不在0~100之間的輸入是非法數(shù)據(jù),輸出“Error”。 Input 輸入多行,每行一個整數(shù)。 Output 輸入所對應(yīng)的成績等級。 Sample Input-1 81 92 35 68 72 100 Sample Output Error Good Excellent Failing Pass Average Excellent HINT 用switch語句解決這個問題比較方便。 Append Code #include int score; while(scanf(”%d“,&score)!=EOF) { if(score<0||score>100) printf(”Errorn“); else { switch(score/10) { case 0: case 1: case 2: case 3: case 4: case 5:printf(”Failingn“);break; case 6:printf(”Passn“);break; case 7:printf(”Averagen“);break; case 8:printf(”Goodn“);break; case 9: case 10:printf(”Excellentn“);break; } } } return 0;} 23.Problem E: 輸出是m的倍數(shù)或n的倍數(shù)、但不是 m和n的公倍數(shù)的數(shù) Description 輸出1~k之間是m的倍數(shù)或n的倍數(shù)、但不是m和n的公倍數(shù)的數(shù),其中1<=m,n Input 輸入三個整數(shù),依次為k、m、n。 Output 從小到大輸出符合題意的所有整數(shù),兩數(shù)之間用一個空格分開。 Sample Input 15 2 3 Sample Output 2 3 4 8 9 10 14 15 HINT 難點(diǎn)在于輸出格式的控制:空格在數(shù)的中間,學(xué)會用循環(huán)時邊界情況的特殊處理。 Append Code #include a=m;else a=n;printf(”%d“,a);for(i=a+1;i<=k;i++){ } if((i%m==0&&i%n!=0)||(i%n==0&&i%m!=0)) printf(” %d“,i);} return 0; 24.Problem B: 兩整數(shù)相加減 Description 計(jì)算a+b和a-b。 Input 輸入為一對整數(shù)a和b。a,b用空格分開。 Output 輸出a+b和a-b的計(jì)算結(jié)果,各占一行。 Sample Input 1 2 Sample Output 3-1 HINT Append Code #include printf(”%dn“,a+b); printf(”%dn“,a-b);} 25 Problem C: 它滿足條件嗎? Description 需要判斷給定的一個整數(shù)是否同時滿足如下三個條件: 1.它是一個完全平方數(shù)。2.它是一個偶數(shù)。3.它是一個正數(shù)。 注:若一個數(shù)能表示成某個自然數(shù)的平方的形式,則稱這個數(shù)為完全平方數(shù)。例如: 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400,441,484,529 Input 一個int范圍內(nèi)的整數(shù)。 Output 如果輸入的數(shù)字滿足條件,則輸出yes,否則輸出no。 Sample Input 100 Sample Output yes HINT 注意邏輯表達(dá)式判斷三個條件的順序。如果你不會使用分支語句,同樣可以使用條件運(yùn)算符實(shí)現(xiàn)該程序。 庫函數(shù)sqrt()可以用于求一個數(shù)的平方根。 Append Code #include if(a==sqrt(a)*sqrt(a)&&a%2==0&&a>0) printf(”yes“); else printf(”no“);} 26.Problem F: 多路分支 Description 編寫一個完整的程序,運(yùn)行時向用戶提問”你考試考了多少分?(0-100)“接受輸入后判斷其等級并顯示出來等級: 優(yōu):90<=分?jǐn)?shù)<=100 良:80<=分?jǐn)?shù)<90 中:60<=分?jǐn)?shù)<80 差:0<=分?jǐn)?shù)<60 Input 輸入任意一個整數(shù)分?jǐn)?shù)值,顯示等級;再輸入任意一個整數(shù)分?jǐn)?shù)值,顯示等級;....直到測試數(shù)據(jù)較充分,可輸入-1止。 Output 對任意輸入的分?jǐn)?shù)值,輸出對應(yīng)的等級,直到輸入的數(shù)為-1時才退出運(yùn)行.Sample Input 102 100 90 80 70 60 50 0-80-1 Sample Output grad must between 0 and 100 優(yōu) 優(yōu) 良 中 中 差 差 grad must between 0 and 100 grad must between 0 and 100 HINT Append Code #include int x; while(scanf(”%d“,&x)!=EOF) { if(x<0||x>100) printf(”grad must between 0 and 100n“); else if(x>=90) printf(”優(yōu)n“); else if(x>=80) printf(”良n“); else if(x>=60) printf(”中n“); else if(x>=0) printf(”差n“); } return 0;} Problem D: 有多少人? Description 學(xué)校舉行運(yùn)動會,如果全體學(xué)生按照3人一隊(duì)列隊(duì),則多了1個人;如果按照4人一隊(duì)列隊(duì),則多了2個人;如果按照5人一隊(duì)排隊(duì),則多了3個人。請問這個學(xué)校有多少學(xué)生? Input 一個int類型的正整數(shù)N,是學(xué)生人數(shù)的上界,即:該校學(xué)生數(shù)不超過N。 Output 所有可能的學(xué)生數(shù),每個數(shù)占一行。 Sample Input 200 Sample Output 58 118 178 HINT Append Code #include int n,i; scanf(”%d“,&n); for(i==1;i<=n;i++){ if(i%3==1&&i%4==2&&i%5==3) printf(”%dn“,i);} return 0;} Problem C: 正負(fù)數(shù)各有幾個? Description 輸入若干個整數(shù),求其中正數(shù)、負(fù)數(shù)的個數(shù)。 Input 輸入分為2行:第一行是一個數(shù)字N>0,表示下面有N個整數(shù)。第2行是N個整數(shù),都是int類型的。 Output 輸出所輸入的N個整數(shù)的正數(shù)個數(shù)和負(fù)數(shù)個數(shù),并用空格分開2個輸出。Sample Input 10 2 3 4 5-1-2-3-4-5 Sample Output 5 5 HINT 貌似還有一種叫做0的數(shù)。 Append Code #include int n,a,i,num1=0,num2=0; scanf(”%d“,&n);for(i=0;i { scanf(”%d“,&a); if(a>0) num1++; else if(a<0) num2++; } printf(”%d %dn“,num1,num2); return 0;} Problem A: A+B Problem(III): Input/Output Practice Description 計(jì)算a+b,0<=a,b<1000。 Input 輸入有多對整數(shù)a和b組成,每對a和b占一行,a,b用空格分開。當(dāng)測試樣為0 0時表示輸入結(jié)束,0 0不參與運(yùn)算。 Output 每行輸出一個a+b的值,順序與輸入對應(yīng)。 Sample Input 1 2 10 20 0 0 Sample Output 3 30 HINT 練習(xí)break的使用。 Append Code #include { if(a!=0||b!=0) } printf(”%dn“,a+b); else break; return 0;} 30 Problem B: A+B Problem(IV): Input/Output Practice Description 計(jì)算a+b,0<=a,b<1000。 Input 輸入有多對整數(shù)a和b組成,每對a和b占一行,a,b用空格分開。 Output 每行輸出一個a+b的值,順序與輸入對應(yīng)。每個格式樣例之間用一個空行分隔開。 Sample Input 1 2 10 20 15 35 Sample Output 3 30 50 HINT 由于輸出的和比空行多一個,所以全部計(jì)算放在一個循環(huán)里是不行的,必須要特殊處理開頭或者結(jié)尾。 Append Code #include n++; if(n==1) printf(”%dn“,a+b); else printf(”n%dn“,a+b); } return 0;} Problem C: n個數(shù)的最大值和最小值 Description 找出n個數(shù)中最大的數(shù)和最小的數(shù),并將它們的值輸出出來。 Input 輸入為n+1個整數(shù),都在int類型范圍內(nèi)。這些數(shù)可能用若干空格或者換行符分隔開。輸入的第1個數(shù)為n,表示后續(xù)有n個數(shù)輸入。從輸入的第2個數(shù)開始,求出直到第n+1個數(shù)中最大的數(shù)和最小的數(shù)。 Output 輸出為兩行,格式見sample。 Sample Input 3 0 1-1 Sample Output The maximum number is 1.The minimum number is-1.HINT 分隔符是空格還是回車都是空白符,對scanf(”%d“)來說沒有區(qū)別;先讀入n,然后用for循環(huán)就很容易控制讀入n個數(shù)的過程。 Append Code #include int n,i,max,min; scanf(”%d“,&n); int a[n]; for(i=0;i scanf(”%d“,&a[i]); max=a[0]; min=a[0]; for(i=0;i { if(max max=a[i]; if(min>a[i]) min=a[i]; } printf(”The maximum number is %d.n“,max); printf(”The minimum number is %d.“,min); return 0;} 32.Problem D: 求100以內(nèi)的素?cái)?shù) Description 素?cái)?shù)是只能被1和自身整除的正整數(shù),根據(jù)數(shù)學(xué)定義1不是素?cái)?shù)。素?cái)?shù)也叫質(zhì)數(shù)。 Input 輸入為兩個整數(shù)m和n,滿足0<=m<=n<=100。 Output 從大到小輸出m~n之間的所有素?cái)?shù),一個素?cái)?shù)一行。如果m~n之間沒有素?cái)?shù),則不輸出任何數(shù)。 輸出的所有數(shù)在兩行“=====”之間。 Sample Input 2 12 Sample Output ===== 11 7 5 3 2 ===== HINT 利用素?cái)?shù)的數(shù)學(xué)規(guī)律可以很容易的解出此題,題目給出的數(shù)據(jù)范圍是關(guān)鍵。 Append Code #include t=0; for(j=2;j<=sqrt(i);j++) if(i%j==0) t=1; if(t==0&&i>1) printf(”%dn“,i);} printf(”=====“);return 0;} 33.Problem E: 是否構(gòu)成三角形? Description 給出三個整數(shù),代表三條邊的長度,判斷這三條邊的長度是否能構(gòu)成一個三角形? Input 第一行是n(1<=n<=100),表示有n組測試數(shù)據(jù) 接下來有n行,每一行包含三個整數(shù),表示三個邊長(1<=邊長<=100) Output 如果三條邊能構(gòu)成三角形,輸出YES,否則輸出NO Sample Input 3 1 2 3 2 8 7 20 20 1 Sample Output NO YES YES HINT Append Code #include {scanf(”%d%d%d“,&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) printf(”YESn“);else printf(”NOn“);} return 0;} 34.Problem C: 簡單的整數(shù)排序 Description 對給出的若干整數(shù)按從小到大排序。 Input 輸入的第一個數(shù)為n(n<=1000),后接n個整數(shù)。 Output 按從小到大的順序輸出這些整數(shù),每兩個整數(shù)之間用一個空格分隔開,最后一個整數(shù)后面沒有空格。 Sample Input 10 3 9 1 5 2 8 5 6 7 3 Sample Output 1 2 3 3 5 5 6 7 8 9 HINT 排序前必須把所有的整數(shù)都存儲下來。因?yàn)橹挥凶疃?000個數(shù),1秒的時間足夠任何排序算法運(yùn)行處結(jié)果來。 Append Code #include int c,i,n,j; int a[1000]; scanf(”%d“,&n); for(i=0;i scanf(”%d“,&a[i]); for(i=1;i<=n-1;i++) { for(j=0;j { if(a[j]>a[j+1]) { c=a[j]; a[j]=a[j+1]; a[j+1]=c; } } } printf(”%d“,a[0]); for(i=1;i printf(” %d“,a[i]); return 0;} 35.Problem A: Description 購物的路程 Saya和Kudo一起去購物。假定她們逛的街是一條直線,而商鋪是這條直線上的一些點(diǎn)。她們將車停在該直線最左端的店鋪處,然后從左向右開始逛每一個店鋪,然后從最右邊的店鋪再返回到停車處。你的任務(wù)是計(jì)算她們走了多少路。 Input 輸入有多組。每一組的第一行是N(0 Output 對每組輸入,輸出她們走的路長。 Sample Input 4 13 89 37 6 7 30 41 14 39 42 0 Sample Output 152 70 HINT Append Code #include int n,i,max,min,a[100001]; while(scanf(”%d“,&n)&&n!=0) { scanf(”%d“,&a[0]); min=max=a[0]; for(i=1;i { scanf(”%d“,&a[i]); if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf(”%dn“,(max-min)*2); } return 0;} 36.Problem B: 求累加和 Description 編程求min~max的累加和(含min和max),其中max>=min>0。部分程序已經(jīng)給出,請?zhí)畛淦渲械目瞻渍Z句,并提交填充后的完整程序。 Input 輸入為多行。第一行是一個整數(shù)N>0,表示后面有N個測試用例。后面有N行,每行包含2個整數(shù),分別是min和max。 Output 輸出為N行,每個測試用例的計(jì)算結(jié)果占據(jù)一行。每行的格式為: case i:sum=s.其中i表示測試用例的編號(從1開始),s是該測試用例對應(yīng)的累加和(設(shè)不超過int的表示范圍)。 Sample Input 3 1 10 1 100 1 1 Sample Output case 1:sum=55.case 2:sum=5050.case 3:sum=1.HINT Append Code #include int n,i,j,max,min,sum; scanf(”%d“,&n); for(i=0;i { sum=0; scanf(”%d%d“,&min,&max); if(max==min) printf(”case %d:sum=%d.n“,i+1,min); else { for(j=min;j<=max;j++) sum=sum+j; printf(”case %d:sum=%d.n“,i+1,sum); } } return 0;} 37.Problem G: 順序輸出字母 Description 按字母順序輸出兩個字母st和ed之間的所有字母,但不包括st和ed。不輸出逆序。 Input 兩個字母st和ed,都是大寫字母,用一個空格分開。 Output 在一行內(nèi)按順序輸出st和ed之間的所有字母,但不包括st和ed。例如: 輸入為A和E,則輸出為BCD; 輸入為A和B,則什么字母也不輸出,只有一個空行; 輸入為E和A,也是什么字母也不輸出,只有一個空行。最后要輸出一行(行尾不回車): ***END*** Sample Input A C Sample Output B ***END*** HINT Append Code #include char st,ed,a; int i; scanf(”%c%c%c“,&st,&a,&ed); { for(i=st+1;i printf(”%c“,i); printf(”n***END***“); } return 0;} 38.Problem F: 單字母變換 Description Tom和Jack是密碼學(xué)愛好者,他們在聊天時經(jīng)常使用一些暗語。他們使用的一種最簡單的暗語是:將要說的每句話里面的英文字母變成這個字母之后的某個字母?,F(xiàn)在要求你寫一個程序,將一個字母變成它之后的某個字母。 Input 輸入有2個:一個大寫字母c和一個正整數(shù)d(0 Output 輸出字母c之后的第d個字母。大小寫與c一致。如果c之后的某個字母已經(jīng)超出'Z',則再從字母'A'開始計(jì)數(shù)。 如:c='A',d=3,則輸出應(yīng)為:D。若:c='Y',d=3,則輸出應(yīng)為:B。 Sample Input A 3 Sample Output D HINT Append Code #include char c; int d; scanf(”%c%d“,&c,&d); if(c+d<='Z') printf(”%c“,c+d); else printf(”%c“,c+d-26); return 0;} 39.Problem B: 登錄密碼驗(yàn)證 Description 編寫一個程序,模擬用戶登錄系統(tǒng)的密碼驗(yàn)證過程。系統(tǒng)提供給用戶的密碼長度最長為20個字符,若密碼輸入錯誤可以再次輸入。但為了保證用戶密碼安全,若連續(xù)輸入密碼錯誤超過5次就會鎖定賬號一段時間。 Input 輸入為若干個串,至EOF結(jié)束。輸入的第一個串是用戶的正確密碼,后面的串為模擬用戶登錄時的輸入的密碼。 Output 每次輸入錯誤的密碼,輸出一個“Wrong!”,若輸入的密碼為正確的,輸出一個“Welcome!”,并結(jié)束密碼測試。若前5次輸入的密碼都是錯誤的,則后面的輸入中不管是否有正確的密碼都輸出“Out of limited!”。 Sample Input abcdefg 123456 kkkkkkkk abcdefg Sample Output Wrong!Wrong!Welcome! HINT 輸入可以用scanf(”%s“)處理,密碼比較用字符串的比較可以完成。 Append Code #include char a[20],b[20]; int i,j=1; scanf(”%s“,a); while(scanf(”%s“,b)!=EOF) { if(j<=5) { if((strcmp(a,b)==0)) { printf(”Welcome!n“); break; } else printf(”Wrong!n“); j++; } else printf(”O(jiān)ut of limited!n"); } } 40.Problem C: 兔子的繁殖問題 Description 假設(shè)一對兔子每月能生一對小兔(一雌一雄),每對小兔出生后的下一個月是沒有繁殖能力的,至出生后的第三個月開始又可以每月生一隊(duì)小兔,問從一對剛出生的小兔開始,經(jīng)過若干個月后一共有多少兔子(假設(shè)在此過程中兔子沒有死亡)? 這個問題是意大利數(shù)學(xué)家菲波那契(Fibonacci)在他1202年出版的《算盤全書》中提出來的,從第一對剛出生的小兔開始每月的兔子數(shù)被乘坐菲波那契序列。 Input 輸入的第一個數(shù)為n,接下來有n個數(shù)字。每個數(shù)字為一個月份m(m<=45)。 Output 輸出為n行,每行為第m個月后的兔子總數(shù)。 《C 語言程序設(shè)計(jì)》主要在計(jì)算機(jī)軟件、計(jì)算機(jī)網(wǎng)絡(luò)、計(jì)算機(jī)應(yīng)用、通信技術(shù)、智能電子、電子信息工程、多媒體以及核工程與核技術(shù)等專業(yè)中開設(shè),是電子信息類、機(jī)械類等工科專業(yè)的重要專業(yè)基礎(chǔ)課。 本校從2001至今,每年都開設(shè)《C語言程序設(shè)計(jì)》課程,由于,我校最開始時的特殊情況,主要把重點(diǎn)放在C語言中的各類重點(diǎn)、難點(diǎn)的語法、語義上,使得學(xué)生經(jīng)過比較復(fù)雜和痛苦的過程后,對C語言在使用上很難做到自己編寫程序。而且很多學(xué)生產(chǎn)生了畏懼心理。 2004年,學(xué)院成立計(jì)算機(jī)科學(xué)與技術(shù)系,為了更好學(xué)習(xí)和掌握C語言,計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)和計(jì)算機(jī)維護(hù)專業(yè)(計(jì)算機(jī)應(yīng)用技術(shù)前身)除了開設(shè)《C語言程序設(shè)計(jì)》課程外,在后續(xù)一學(xué)期還開設(shè)了《C語言程序設(shè)計(jì)課程設(shè)計(jì)》,使得計(jì)算機(jī)專業(yè)學(xué)生編程思想和能力得到了極大提高。 2005年,為了讓我院工科學(xué)生更好的掌握C語言編程以及通過四川省計(jì)算機(jī)二級考試,在《C語言程序設(shè)計(jì)》課程后設(shè)置《C語言程序設(shè)計(jì)課程設(shè)計(jì)》,極大地提高了學(xué)生的動手機(jī)會和能力,過級率顯著提高! 2007年,依托我校建設(shè)精品課程的契機(jī),我們將C語言中的各個知識點(diǎn)進(jìn)行重新規(guī)整,提出適用于三本院校學(xué)生的語言設(shè)計(jì)學(xué)習(xí)的方法。我們提出,先了解C語言,再學(xué)習(xí)C語言,再用C語言的思想。即在開始時讓學(xué)生初步知道C語言,然后引入比較簡單的運(yùn)算符以及基本輸入、輸出和簡單的順序結(jié)構(gòu)程序設(shè)計(jì)。通過這樣的方式,我們發(fā)現(xiàn),學(xué)生在C語言的學(xué)習(xí)就不會從開始的時候陷入大量難懂的語法、語義和數(shù)據(jù)結(jié)構(gòu)中。有了以上鋪墊再層層進(jìn)入,最終進(jìn)入復(fù)雜的各類數(shù)據(jù)結(jié)構(gòu)以及指針等學(xué)習(xí)。通過以上的內(nèi)容規(guī)整后,教學(xué)效果有明顯提高。第二篇:C語言程序設(shè)計(jì)實(shí)習(xí)報告
第三篇:C語言圖形程序設(shè)計(jì)報告
第四篇:C語言程序設(shè)計(jì)
第五篇:C 語言程序設(shè)計(jì)