



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《C程序設(shè)計(jì)I》實(shí)驗(yàn)指導(dǎo)書信息工程學(xué)院計(jì)算機(jī)系TOC\o"1-5"\h\zC程序設(shè)計(jì)實(shí)驗(yàn)要求 2實(shí)驗(yàn)ー簡(jiǎn)單程序設(shè)計(jì) 21010測(cè)試驗(yàn)證結(jié)果 21011溫度轉(zhuǎn)換 21012計(jì)算書費(fèi) 31013時(shí)間相加 3實(shí)驗(yàn)二分支結(jié)構(gòu)程序設(shè)計(jì) 41020函數(shù)值計(jì)算 41021顛倒整數(shù) 51022整數(shù)排序 51023自整除數(shù) 61024選作題:FibonacciAgain 6實(shí)驗(yàn)三循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 71030整數(shù)的立方和 7\o"CurrentDocument"1031求累加和 71032與7無關(guān)的數(shù) 81033選作題:細(xì)菌繁殖 8實(shí)驗(yàn)四數(shù)組應(yīng)用 91040楊輝三角形 91041矩陣乘法 321042學(xué)生成績(jī)管理 351043選作題:大整數(shù)乘法 43實(shí)驗(yàn)五函數(shù)應(yīng)用 451050各類型變量在函數(shù)調(diào)用過程中的變化 461051最大公約數(shù)和最小公倍數(shù) 471052進(jìn)制轉(zhuǎn)換 541053字符串替換 561054排序 591055選作題:數(shù)制轉(zhuǎn)換 61實(shí)驗(yàn)六綜合應(yīng)用 641060同一天生日 641061忽略大小寫比較字符串 701062不吉利日期 721063統(tǒng)計(jì)字符數(shù) 741064選作題:DigitalRoots 77附錄 19ー、VisualC++調(diào)試環(huán)境的使用 19二、TC環(huán)境下的使用 84三、實(shí)驗(yàn)報(bào)告要求 90四、C程序設(shè)計(jì)常見錯(cuò)誤及解決方案 84C程序設(shè)計(jì)實(shí)驗(yàn)要求課程實(shí)驗(yàn)是c程序設(shè)計(jì)課程的一個(gè)重要的實(shí)踐環(huán)節(jié),要求每個(gè)同學(xué)按以下要求獨(dú)立完成每次實(shí)驗(yàn),每次上機(jī)前必須編寫完實(shí)驗(yàn)要求的所有題目,并按輸出格式寫出程序的運(yùn)行結(jié)果,上機(jī)時(shí)調(diào)試程序并驗(yàn)證結(jié)果的正確性,若與運(yùn)行結(jié)果不符,則要分析原因,上機(jī)時(shí)間由課內(nèi)和課外上機(jī)兩部分,以下時(shí)間為課內(nèi)上機(jī)時(shí)間。實(shí)驗(yàn)ー簡(jiǎn)單程序設(shè)計(jì)目的及要求:.熟練掌握c開發(fā)環(huán)境的窗口、菜單命令及相應(yīng)的命令,并掌握在開發(fā)環(huán)境下如何編輯、編譯、連接、運(yùn)行一個(gè)C程序,以及如何保存和修改C語言的源程序。.通過運(yùn)行ー個(gè)簡(jiǎn)單的C程序過程,逐步了解C程序的基本結(jié)構(gòu)及特點(diǎn)。.掌握C語言的基本數(shù)據(jù)類型,熟悉它們的使用方法及定義方式,了解各類型數(shù)據(jù)輸出時(shí)所用的格式轉(zhuǎn)換符,熟悉各種運(yùn)算符和表達(dá)式的使用特點(diǎn)。.熟練掌握C中賦值運(yùn)算的使用。1010測(cè)試驗(yàn)證結(jié)果習(xí)題4.5〇1011溫度轉(zhuǎn)換第三題:Description華氏溫度和攝氏溫度的轉(zhuǎn)換公式為:C=5/9*(F-32)其中:F為華氏溫度C攝氏溫度Input一個(gè)整數(shù)表示華氏溫度。Output輸出一行。該行包含ー個(gè)浮點(diǎn)數(shù)C,表示轉(zhuǎn)換的攝氏溫度。精確到小數(shù)點(diǎn)后兩位。SampleInput93SampleOutput33.89答案:#include<stdio.h>voidmain(){intf;floatc;scanf&f);c=(5/9.0)*(f-32);printf(*%0.2f\n",c);getchar();1012計(jì)算書費(fèi)Description下面是ー個(gè)圖書的單價(jià)表:計(jì)算概論28.9元/本數(shù)據(jù)結(jié)構(gòu)與算法32.7元/本數(shù)字邏輯45.6元/本C++程序設(shè)計(jì)教程Y8兀/本人工智能35元/本計(jì)算機(jī)體系結(jié)構(gòu)86.2元/本編譯原理27.8元/本操作系統(tǒng)43元/本計(jì)算機(jī)網(wǎng)絡(luò)56元/本JAVA程序設(shè)計(jì)65元/本給定每種圖書購買的數(shù)量,編程計(jì)算應(yīng)付的總費(fèi)用。Input輸入每行包含ー組10個(gè)整數(shù)(大于等于〇,小于等于100),分別表示購買的《計(jì)算概論》、《數(shù)據(jù)結(jié)構(gòu)與算法》、《數(shù)字邏輯》、《C++程序設(shè)計(jì)教程》、《人工智能》、《計(jì)算機(jī)體系結(jié)構(gòu)》、《編譯原理》、《操作系統(tǒng)》、《計(jì)算機(jī)網(wǎng)絡(luò)》、《JAVA程序設(shè)計(jì)》的數(shù)量(以本為單位)。每?jī)蓚€(gè)整數(shù)用一個(gè)空格分開。Output輸出一行。該行包含ー個(gè)浮點(diǎn)數(shù)f,表示應(yīng)付的總費(fèi)用。精確到小數(shù)點(diǎn)后兩位??捎胮rintf(“先2f\n",sum)來輸出sum的值,并精確到小數(shù)點(diǎn)后兩位。SampleInpuampleOutput2140.201013時(shí)間相加Description用整數(shù)表示時(shí)間,如:1050表示10點(diǎn)50分,2010表示20點(diǎn)10分?,F(xiàn)輸入兩個(gè)時(shí)間,求兩個(gè)時(shí)間的和。例:2030+850=520不是28801055+850=1945不是1905Input兩行數(shù)據(jù),每行ー個(gè)整數(shù)。Output輸出相加后的時(shí)間整數(shù)。SampleInput2030850SampleOutput520答案ー:#include"stdio.h"voidmain()(inta,b,bl,b2,a1,a2,sl,s2,sum;scanf("%d",&a);scanf("%d",&b);al=a/100;a2=a-al*100;bl=b/100;b2=b-bl*100;if(a2+b2>=60)(s2=a2+b2-60;if(al+bl+l>=24)sl=al+bl+l-24;elsesl=al+bl+l;)else(s2=a2+b2;if(al+bl>=24)sl=a1+b1-24;elsesl=al+bl;sum=sl*100+s2;printf("%03d\n",sum);getchar();}答案ニ:#include"stdio.h"#include"conio.h"voidmain()(inta,b;scanf("%d",&a);scanf("%d",&b);inth=0;intc=a%100+b%100;intinc=0;if(c>=60){c=c-60;inc=l;printf("%03d",((a/100+b/100+inc)%24)*100+c);getch();實(shí)驗(yàn)二分支結(jié)構(gòu)程序設(shè)計(jì)目的及要求:.掌握C程序設(shè)計(jì)的基本語句表達(dá)方式及基本語句結(jié)構(gòu)的方法。.掌握C語言中輸入、輸出函數(shù)的基本功能。.掌握順序和分支結(jié)構(gòu)程序設(shè)計(jì)的方法。.能獨(dú)立編寫順序及分支結(jié)構(gòu)的C程序。1020函數(shù)值計(jì)算第四題:Description有一個(gè)函數(shù) y=x (x<1)=2x-1 (1く=xく10)-3x-11 (x>=10)寫ー程序,輸入x值,計(jì)算y值。Inputー個(gè)整數(shù)XoOutput輸出函數(shù)值y。SampleInput20SampleOutput49答案:#include"stdio.h"voidmain()(intx,y;scanf("%d",&x);if(x<l)y=x;elseif(x<10&&x>=l)y=2*x-l;elsey=3*x-l1;printf("%d\n",y);getchar();1021顛倒整數(shù)第五題Description給定一個(gè)最多4位的正整數(shù),將其顛倒過來輸出。例如:輸入123,則輸出321。Inputー個(gè)小于!0000的正整數(shù)。Output顛倒后整數(shù)。SampleInput1234SampleOutput4321答案:#include"stdio.h"voidmain(){intx;scanf("%d",&x);printf("%d",x%10);x=x/10;)getchar();)答案ニ:#include"stdio.h"#include"stdlib.h"intmain()(intx,y;scanf("%d",&x);if(x<10)y=x;elseif(x<100)y=(x%10)*10+x/10;elseif(x<1000)y=(x%10)*100+((x/10)%10)*10+x/l00;elseif(x<10000)y=(x%10)*1000+((x/10)%10)*100+((x/100)%10)*10+x/1000;printf("%d",y);return0;)1022整數(shù)排序第六題Description對(duì)給定的4個(gè)整數(shù)進(jìn)行排序,將由小到大的順序輸出。Input一行中有4個(gè)整數(shù),整數(shù)之間用空格分隔。Output按升序輸出,各整數(shù)之間用ー個(gè)空格分隔。SampleInput253141827SampleOutput182527314答案:#include"stdio.h"#include"stdlib.h"intmain()inti,j,a[4],t;for(i=0;i<4;i++)scanf("%d",&a[i]);t=a[O];for(i=0;i<3;i++)for(j=0;j<3;j++)if(a[j]>a|j+l]){t=a[j];a[j]=a|j+l];a[j+l]=t;)for(i=0;i<4;i++)printf("%d",a[i]);return0;1023自整除數(shù)第一題Description對(duì)ー個(gè)整數(shù)n,如果其各個(gè)位數(shù)的數(shù)字相加得到的數(shù)m能整除n,則稱n為自整除數(shù).例如21,21%(2+1)==0?所以21是自整除數(shù)。Inputー個(gè)整數(shù)nOutput若n為自整除數(shù),則輸出TRUE,否則輸出FALSE。SampleInput42SampleOutputTRUE答案:#include"stdio.h"voidmain()(intn,m=0,t;scanf("%d",&n);t=n;while(t>0)m+=t%10;t=t/10;)if(m!=O&&n%m==O)printf("true\n");elseprintf("false\n");getchar();)答案ニ:#include"stdio.h"#include"stdlib.h"intmain()(intm=0,n,t;scanf("%d",&n);t=n;while(t>0)(m+=t%10;if(n%m==O)printf("TRUE");elseprintf("FALSE");return0;1024選作題:FibonacciAgainProblemDescriptionThereareanotherkindofFibonaccinumbers:F(0)=7,F(l)=11,F(n)=F(n-l)+F(n-2)(n>=2).InputInputanintegern.(n<1,000,000).OutputPrinttheword"yes"if3divideevenlyintoF(n).Printtheword"no"ifnot.SampleInput5SampleOutputnoSampleInput2SampleOutputYes答案:ttinclude“stdio.h"#include“stdlib.h"intmain()iintn,a=7,b=ll,c;scanf("刎",&n);if(n==0)b=7;elseif(n==l)b=ll;elsefor(inti=2;i〈=n;i++)c=b;b=(a+b)%3;a=c;}if(b%3==0)printf("yes");elseprintf("no");return0;)答案ニ:#include"stdio.h"intFibonacci(intn);voidmain(){intfn,n;scanf("%d",&n);fn=Fibonacci(n);if(fn%3==0)printf("yes\n");elseprintf("no\n");getchar();intFibonacci(intn){if(n-0)return7;elseif(n-1)return11;elsereturnFibonacci(n-l)+Fibonacci(n-2);)答案三:#include“stdio.h"#include“stdlib.h"longF(intn);intmain(){intn;longf=0;scanf(%d",&n);if(n==0)f=7;elseif(n==l)f=ll;elsef=F(n);if(f%3==0)printf("yes");elseprintf("no");return0;)longF(intn){inta=7,b=ll;longtmp=0;for(inti=2;iく=n;i++)(tmp-a+b;a=b;b=tmp;returntmp;實(shí)驗(yàn)三循環(huán)結(jié)構(gòu)程序設(shè)計(jì)目的及要求:.熟練掌握循環(huán)語句中for語句、while語句和dowhile語句使用方法。.掌握編寫循環(huán)結(jié)構(gòu)程序的方法。1030整數(shù)的立方和第二題Description給定一個(gè)正整數(shù)k(l<k<10),求1到k的立方和m。即m=l+2*2*2+...+k*k*k。Input輸入只有一行,該行包含一個(gè)正整數(shù)k。Output輸出只有一行,該行包含1到k的立方和。SampleInput5SampleOutput225答案:ttinclude“stdio.h"voidmain()intsum=0,n;scanf("%d",&n);for(inti=0;i〈=n;i++)sum+=i*i*i;printf("%d\n",sum);getchar();)1031求累加和Description有一分?jǐn)?shù)序列:2,3,5,8,13,21 12 3 5 8 13求出該序列的前n項(xiàng)之和。Input輸入只有一行,該行包含一個(gè)正整數(shù)n(n<200)。Output序列前n項(xiàng)之和(保留兩位小數(shù))。SampleInput2SampleOutput3.50答案:#include"stdio.h"voidmain()intn;floatsum=0,a=2,b=l,t;scanf("%d",&n);for(inti=0;i<n;i++)sum+=a/b;t=a;a=a+b;b=t;printf("%.2f\n",sum);getchar();1032與7無關(guān)的數(shù)Descriptionー個(gè)正整數(shù),如果它能被7整除,或者它的十進(jìn)制表示中某位數(shù)字為7,則稱其為與7相關(guān)的數(shù)?,F(xiàn)求所有小于等于n(nGOO)的與7無關(guān)的正整數(shù)的平方和.Input輸入為一行,正整數(shù)n,(n<100)oOutput輸出小于等于n的與7無關(guān)的正整數(shù)的平方和SampleInput21SampleOutput2336答案:#include<stdio.h>voidmain()(intn,sum=0;scanf("%d",&n);for(inti=0;i<=n;i++){if(i%7!=0&&!(i%10==7ll(i/l0)%10==7))sum+=i*i;printf("%d\n",sum);getchar();1033選作題:細(xì)菌繁殖Descriptionー種細(xì)菌的繁殖速度是每天成倍增長。例如:第一天有10個(gè),第二天就變成20個(gè),第三天變成40個(gè),第四天變成80個(gè),……?,F(xiàn)在給出第一天的日期和細(xì)菌數(shù)目,要你寫程序求出到某一天的時(shí)候,細(xì)菌的數(shù)目。Input一行有5個(gè)整數(shù),整數(shù)之間用ー個(gè)空格隔開。第一個(gè)數(shù)表示第一天的月份,第二個(gè)數(shù)表示第一天的日期,第三個(gè)數(shù)表示第一天細(xì)菌的數(shù)目,第四個(gè)數(shù)表示要求的那一天的月份,第五個(gè)數(shù)表示要求的那一天的日期。已知第一天和要求的一天在同一年并且該年不是閏年,要求的一天一定在第一天之后。數(shù)據(jù)保證要求的ー天的細(xì)菌數(shù)目在長整數(shù)(long)范圍內(nèi)。Output對(duì)于每ー組測(cè)試數(shù)據(jù),輸出一行,該行包含ー個(gè)整數(shù),為要求的一天的細(xì)菌數(shù)。SampleInput40答案:#include"stdio.h"#include"math.h"intmain(){intm1,d1,m2,d2,num,days=0;longsum=0;intms[13]={0,31,28,31,30,31,30,31,31,30,31,30,31);scanf("%d%d%d%d%d",&ml,&dI,&num,&m2,&d2);if(m2<mlll(m2==m1&&d2<=d1)){printf("第二個(gè)日期必須大于第一個(gè)日期\n");)else{for(inti=mi;1cm2;i++)(if(m2>=12lldl>ms[mI]lld2>ms[m2]){printf("日期不合法、n");return0;}days+=ms[i];days=days+d2-d1;sum=num*pow(2,days);printf("%d\n",sum);)getchar();return1;實(shí)驗(yàn)四數(shù)組應(yīng)用目的及要求:.理解并掌握ー維數(shù)組、二維數(shù)組的定義及引用。.熟練掌握利用數(shù)組處理數(shù)據(jù)的方法。.掌握字符串?dāng)?shù)組和字符串的使用方法及常用字符串函數(shù)在程序中的使用。1040楊輝三角形Description打印出楊輝三角形的前n行。Input輸入ー個(gè)正整數(shù)n(n<20)〇Output楊輝三角形。SampleInput5SampleOutput111TOC\o"1-5"\h\z1 2 11 3 3 11 4 6 4 1答案:#include"stdio.h"intmain()(inti,j,n,k;scanf("%d",&n);inta[20][20];a[0][0]=a[l][0]=a[l][l]=l;for(i=2;i<n;i++)a[i][O]=a[i][i]=l;for(j=l;j<i;j++)(a[i][j]=a[i-l]|j-l]+a[i-l]U];for(i=0;i<n;i++){for(k=n;k>i;k—)printf("");for(j=0;j<=i;j++)printf("%d",a[i][j]);)printf("\n");return0;1041矩陣乘法Description已知矩陣A(mxn)和矩陣B(nxp),求C=AXBInput第一行三個(gè)整數(shù)為m、n、p(m、n、p均小于10),從第二行開始為m行n列A矩陣,然后為n行p列的B矩陣。所有數(shù)據(jù)之間均由一個(gè)空格分隔。Output輸出m行p列的C矩陣,所有數(shù)據(jù)之間均由一個(gè)空格分隔。SampleInput234103340102123452115SampleOutput7351611122223答案:#include"stdio.h"voidmain()inti,j,h,g,m,n,p,sum=O;scanf("%d%d%d",&m,&n,&p);printf("\n");intA[20][20],B[20][20],C[20][20];〃矩陣Afor(i=0;i<m;i++)for(j=0;j<n;j++){scanf("%d",&A[i][j]);)printf("\n");)printf("\n");〃矩陣Bfor(g=0;g<n;g++){for(h=0;h<p;h++)scanf("%d",&B[g][h]);〃兩個(gè)矩陣相乘for(i=0;i<m;i++){for(j=0;j<p;j++)(sum=O;for(h=0;h<n;h++){sum+=A[i][h]*B[h][j];}C[i][j]=sum;〃輸出兩個(gè)矩陣printf("%-4d",C[i][j]);printf("\n");1042學(xué)生成績(jī)管理Description學(xué)生信息包括:學(xué)號(hào)、姓名、數(shù)學(xué)成績(jī)、英語成績(jī)、計(jì)算機(jī)成績(jī)。共有N個(gè)人(Nく=10,可在程序內(nèi)部定義,如用#defineN10)的信息,要求計(jì)算每人的總成績(jī),并按總成績(jī)由高到低的順序輸出所有人的信息。最后輸出各門課程的平均成績(jī)(保留2位小數(shù))。Input為調(diào)試方便,N和學(xué)生信息可以在程序內(nèi)部以初值的方式賦值給對(duì)應(yīng)變量。Output見下例。SampleInputSampleOutputNoNameMathsEnglishComputerTotal1001zhang908088 2581003wang888580 2531002li7880 82240averageofMaths:85.33averageofEnglish:81.67averageofComputer:83.33答案ー:#include"stdio.h"#defineN10intmain()(inti,j,k,q,sum=0,score[N][4]={{90,80,88},{78,80,82},{88,85,80}},tscore;chartitle[6][N]={"NO","Name","Maths","English","Computer","Ibtal"),no[N][N]={,,100r,,"1002","1003"},tno;charname[N][N]={"zhang","li","wang"},tname;floatavgMath=0,avgEnglish=0,avgComputer=0;for(i=0;i<3;i++){sum=0;〃計(jì)算總成績(jī)for(j=0;j<3;j++){sum+=score[i][j];)score[i][3]=sum;avgMath+=score[i][0];avgEnglish+=score[i][l];avgComputer+=score[i][2];〃排序for(i=0;i<2;i++){for(j=0;j<2;j++)if(score[j][3]<score[j+l][3]){for(q=0;q<4;q++){〃交換所有成績(jī)tscore=score[j][q];score[j][q]=score[j4-l][q];score[j+l][q]=tscore;)for(k=0;k<N;k++){〃交換學(xué)號(hào)tno=no[j][k];no[j][k]=no[j+l][k];no|j+l][k]=tno;〃交換姓名tname=name[j][k];name[j][k]=name[j4-l][k];name[j+l][k]=tname;〃輸出標(biāo)題for(i=0;i<6;i++)printf("%s",title[i]);printf("\n");〃輸出學(xué)號(hào)+姓名+成績(jī)for(i=0;i<3;i++){printf("%s ",no[i]);printf("%s ",name[i]);for(j=0;j<4;j++)printf("%d",score[i][j]);printf("\n");)printf("averageofMaths:%.2f\n",avgMath/3);printf("averageofEnglish:%.2f\n",avgEnglish/3);printf("averageofComputer:%.2f\n",avgComputer/3);return0;)答案ニ:#include"stdio.h"#defineN10intmain()(inti,j,k,q,sum=0,score[N][4],tscore;chartitle[6][N]={"NO","Name","Maths","English","Computer","Total"},no[N][N],tno,name[N][N],tname;floatavgMath=0,avgEnglish=0,avgComputer=0;for(i=0;i<3;i++)〃輸入學(xué)號(hào)scanf("%s",&no[i]);〃輸入姓名scanf("%s",&name[i]);sum=O;〃輸入成績(jī)for(j=0;j<3;j++){scanf("%d",&score[i][j]);sum+=score[i][j];)score[i][3]=sum;avgMath+=score[i][0];avgEnglish+=score[i][1];avgComputer+=score[i][2];〃排序for(i=0;i<2;i++)for(j=0;j<2;j++)if(score[j][3]<score[j+l][3])for(q=0;q<4;q++)(〃交換所有成績(jī)tscore=score[j][q];score[j][q]=score[j+l][q];score[j+l][q]=tscore;}for(k=0;k<N;k++)(〃交換學(xué)號(hào)tno=no[j][k];no|j][k]=no|j+l][k];no[j+l][k]=tno;〃交換姓名tname=name[j][k];name[j][k]=name[j4-l][k];name[j4-l][k]=tname;〃輸出標(biāo)題for(i=0;i<6;i++)printf("%s",title[i]);printf("\n");〃輸出學(xué)號(hào)+姓名+成績(jī)for(i=0;i<3;i++){printf("%s ",no[i]);printf("%s ",name[i]);for(j=0;j<4;j++)printf("%d",score[i][j]);printf("\n");printf("averageofMaths:%.2f\n",avgMath/3);printf("averageofEnglish:%.2f\n",avgEnglish/3);printf("averageofComputer:%.2f\n",avgComputer/3);return0;)1043選作題:大整數(shù)乘法Description求兩個(gè)不超過200位的非負(fù)整數(shù)的積。Input有兩行,每行是ー個(gè)不超過200位的非負(fù)整數(shù),沒有多余的前導(dǎo)〇。Output一行,即相乘后的結(jié)果。結(jié)果里不能有多余的前導(dǎo)〇,即如果結(jié)果是342,那么就不能輸出為0342。SampleInput1234567890098765432100SampleOutput1219326311126352690000答案:#include<stdio.h>#include<string.h>intmain()inti,j,cut=0,a[200]={0},b[200]={0},c[400]={0},temp;charca[200]="0",cb[200]="0";〃輸入字符串類型的a,bscanf("%s%s",&ca,&cb);〃轉(zhuǎn)化成int類型的a,bfor(i=0;i<strlen(ca);i++)a[i]=(int)(ca[i]-'O');for(i=0;i<strlen(cb);i++)b[i]=(int)(cb[i]-'O');〃a,b相乘for(i=0;i<strlen(ca);i++)for(j=0;j<strlen(cb);j++)c[i+j+l]+=a[i]*b|j];〃處理進(jìn)位for(i=strlen(ca)+strlen(cb)-1;i>0;i—)temp=c[i];c[i]=c[i]%10;c[i-l]+=temp/10;)〃去除前導(dǎo)符0while(c[cut]==O){cut++;)〃輸出結(jié)果for(i=cut;i<strlen(ca)+strlen(cb);i++)(//if(c[O]!=0)printf("%d",c[i]);)return0;實(shí)驗(yàn)五函數(shù)應(yīng)用目的及要求:.理解函數(shù)的定義及函數(shù)的調(diào)用過程(函數(shù)的調(diào)用格式、調(diào)用方式及被調(diào)用函數(shù)的使用說明)。.掌握局部變量、全局變量的說明形式和引用方法。.掌握函數(shù)的嵌套與遞歸調(diào)用的全過程。1050各類型變量在函數(shù)調(diào)用過程中的變化Description采用單步運(yùn)行方式運(yùn)行下面程序,觀察各變量(靜態(tài)局部變量及自動(dòng)變量)在函數(shù)調(diào)用過程中的變化。main(){inta=3,i;for(i=0;i<3;i++)printf(<<P=%d\n>>,p(a));)intp(a)inta;{staticintc=l;autointb=0;b=b+l;c=c+l;return(a+b+c);1051最大公約數(shù)和最小公倍數(shù)Description對(duì)給定的兩組數(shù)(每組包括2個(gè)整數(shù)),分別計(jì)算出兩組數(shù)的最大公約數(shù)和最小公倍數(shù)的和。如:20、12為第一組,28、7為第二組。第一組數(shù)的最大公約數(shù)為4,最小公倍數(shù)為60:第二組數(shù)的最大公約數(shù)為7,最小公倍數(shù)為28:所以兩組數(shù)的最大公約數(shù)之和為11,兩組數(shù)的最小公倍數(shù)之和為88。Input輸入包括兩行,每行為ー組,每組兩個(gè)整數(shù)。Output輸出包括兩行,第一行為兩組數(shù)的最大公約數(shù)之和,第二行為兩組數(shù)的最小公倍數(shù)之和。SampleInput2012287SampleOutput1188答案ー:#include"stdio.h"intgongyue(inta,intb);intgongbei(inta,intb);intmain()(inta,b,c,d,sl,s2;scanf("%d",&a);scanf("%d",&b);scanf("%d",&c);scanf("%d",&d);〃最大公約數(shù)s1=gongyue(a,b)+gongyue(c,d);〃最小公倍數(shù)s2=gongbei(a,b)+gongbei(c,d);printf("%d\n",sl);printf("%d\n",s2);return0;〃最大公約數(shù)intgongyue(inta,intb)(intsum,i;if(a>b){if(a%b==O)sum=b;else{for(i=l;i<b;i++){if(a%i==O&&b%i==O)sum=i;else{if(b%a==O)sum=a;elsefor(i=l;i<a;i++)if(a%i==O&&b%i==O)sum=i;returnsum;}〃最小公倍數(shù)intgongbei(inta,intb)(intsum,i;if(a>b){if(a%b==O)sum=a;elsefor(i=a;i<=a*b;i++)if(i%a==O&&i%b==O)sum=i;returni;else{if(b%a==O)sum=b;else(for(i=b;i<=a*b;i++){if(i%a==O&&i%b==O)(sum=i;returni;returnsum;答案ニ:#include"stdio.h"#include"conio.h"intdivisor(intm,intn)(intr;do(r=m%n;m=n;n=r;}while(r!=0);returnm;intlcm(intm,intn)intRem;Rem=divisor(m,n);return(m*n/Rem);)main(){inta,b,c,d;scanf("%d%d",&a,&b);if(a>b)(c=divisor(a,b);d=lcm(a,b);)else(c=divisor(b,a);d=lcm(b,a);)//printfC'a=%d,b=%d\n",a,b);printf("%d\n",c);printf("%d",a*b/c);getch();1052進(jìn)制轉(zhuǎn)換Description對(duì)輸入的兩十六進(jìn)制數(shù)(兩個(gè)字符串),將其轉(zhuǎn)換成十進(jìn)制后再求和。要求十六進(jìn)制到十進(jìn)制的轉(zhuǎn)換功能由函數(shù)完成。例如:輸入3al、80,由于3al轉(zhuǎn)換為十進(jìn)制后為929,80轉(zhuǎn)換為十進(jìn)制后為128,所以和為1057。Input輸入包括兩行,每行為一個(gè)十六進(jìn)制數(shù)。Output輸出包括一行為兩數(shù)之和的十進(jìn)制表示。SampleInput3al80SampleOutput1057答案:#include<stdio.h>#include<string.h>#include<math.h>intconversion(charsix[],intlen)(inti,sixint[10],sum=0;〃轉(zhuǎn)化成int類型for(i=0;i<len;i++){switch(six[i]){case'A':case'a':sixint[i]=10;break;case'B':case'b':sixint[i]=l1;break;case'C:case'c':sixint[i]=12;break;case'D':case'd':sixint[i]=13;break;case'E':case'e':sixint[i]=14;break;case'F':case'f:sixint[i]=15;break;default:sixint[i]=(int)(six[i]-'O');break;)sum+=sixint[i]*pow(16,len-i-l);)returnsum;}intmain()(intsum=O;charca[200]="0",cb[200]="0";〃輸入字符串類型的a,bscanf("%s%s",&ca,&cb);sum=conversion(ca,strlen(ca))+conversion(cb,strlen(cb));printf("%d",sum);return0;1053字符串替換Description將一段英文文章中字符串用給定的字符串替換。Input輸入包括多行,第一行為一段英文文章(長度不超過80)o以后每行包括2個(gè)字符串(長度不超過20),之間由空格分隔,第一個(gè)串為原串,第二個(gè)串為替換串。當(dāng)遇到。〇兩個(gè)串時(shí)表示輸入結(jié)束,并且此行不需處理。Output輸出替換后的文章。SampleInputhellohowareyes.hHesou00SampleOutputHelloHowareyou.答案:#include<stdio.h>#include<string.h>voidswap(chartext[],chara[],charb[])char*str=text,back[2O];//a是textー個(gè)子串while((str=strstr(str,a))!=NULL){strcpy(back,str+strlen(a));*str=O;strcat(text,b);strcat(text,back);str+=strlen(b);intmain()(intsum=O;chartext[80],a[20],b[20];〃輸入textgets(text);while(true){scanf("%s",&a);scanf("%s",&b);if(strcmp(a,"0")==0&&strcmp(b,n0")==0)break;//b替換aswap(text,a,b);)〃輸出textputs(text);return0;1054排序Description對(duì)輸入的10個(gè)整數(shù)進(jìn)行排序,按從小到大的順序輸出。要求排序過程由函數(shù)完成。Input輸入包括一行,共10個(gè)整數(shù),各數(shù)之間由空格分割。Output在同一行上輸出排好序的10個(gè)數(shù),各數(shù)之間由空格分割。SampleInput25481327687643209659132025274348656876答案:#include<stdio.h>voidsort(intnumロ)iinti,j,temp=0;for(i=0;i<10;i++)for(j=i+l;j<10;j++)if(num[j]<num[i])itemp=num[i];num[i]=num[j];num[j]=temp;intmain(){inti,num[10];for(i=0;i<10;i++)scanf("%d”,&num[i]);sort(num);for(i=0;iく10;i++)printf(“/d”,num[i]);return0;1055選作題:數(shù)制轉(zhuǎn)換Description求任意兩個(gè)不同進(jìn)制非負(fù)整數(shù)的轉(zhuǎn)換(2進(jìn)制?16進(jìn)制),所給整數(shù)在long所能表達(dá)的范圍之內(nèi)。不同進(jìn)制的表示符號(hào)為(0,1,…,9,A,B,C,D,E,F)oInput輸入只有一行,包含三個(gè)整數(shù)a,n,boa表示其后的n是a進(jìn)制整數(shù),b表示欲將a進(jìn)制整數(shù)n轉(zhuǎn)換成b進(jìn)制整數(shù)。a,b是十進(jìn)制整數(shù),2=<a,b<=16oOutput輸出包含一行,該行有一個(gè)整數(shù)為轉(zhuǎn)換后的b進(jìn)制數(shù)。輸出時(shí)字母符號(hào)全部用大寫表示,即(0,1, 9,A,B,C,D,E,F)oSampleOutput210306Hint用字符串表示不同進(jìn)制的整數(shù)。答案:#include<stdio.h>#include<string.h>#include<ctype.h>voidconvert(inta,charn[],intb,intlen)(inti,intn[10],sum=0,temp,count=0;charm[20];〃轉(zhuǎn)化成int類型并求十進(jìn)制的和sumfor(i=0;i<len;i++){n[i]=toupper(int(n[i]));if(n[i]>='A'&&n[i]<='F')intn[i]=n[i]-'A'+10;if(n[i]>='O'&&n[i]<='9')intn[i]=(int)(n[i]-'O');sum=sum*a+intn[i];)〃轉(zhuǎn)化為b進(jìn)制for(i=O;sum>0;i++){temp=sum%b;if(temp>=0&&temp<=9)m[i]=temp+'O';if(temp>=10&&temp<=15)m[i]=temp+'A'-10;sum=sum/b;count=i;)〃輸出for(i=count;i>=0;i--)printf("%c",m[i]);}intmain()inta,b,len;charn[10];scanf("%d",&a);scanf("%s",&n);scanf("%d",&b);len=strlen(n);convert(a,n,b,len);return0;實(shí)驗(yàn)六綜合應(yīng)用目的及要求:.掌握程序的基本方法和技巧,能夠獨(dú)立完成較復(fù)雜程序的設(shè)計(jì)。.掌握程序的調(diào)試方法,熟悉各種類型錯(cuò)誤的改正方法。21060同一天生日Description在ー個(gè)有200人的大班級(jí)中,存在兩個(gè)人生日相同的概率非常大,現(xiàn)給出每個(gè)學(xué)生的學(xué)號(hào),出生月日。試找出所有生日相同的學(xué)生。Input第一行為整數(shù)n,表示有n個(gè)學(xué)生,n<=200。此后每行包含一個(gè)字符串和兩個(gè)整數(shù),分別表示學(xué)生的學(xué)號(hào)(字符串長度為11位)和出生月(l<=m<=12)0(l<=d<=31)o學(xué)號(hào)、月、日之間用ー個(gè)空格分隔。Output對(duì)每組生日相同的學(xué)生,輸出一行,其中前兩個(gè)數(shù)字表示月和日,后面跟著所有在當(dāng)天出生的學(xué)生的學(xué)號(hào),數(shù)字、學(xué)號(hào)之間都用ー個(gè)空格分隔。對(duì)所有的輸出,要求按日期從前到后的順序輸出。對(duì)生日相同的學(xué)號(hào),按輸入的順序輸出。SampleInput6071010201053150710102011545071010201183150710102010845071010201114507101020121810SampleOutput31507101020105071010201184507101020115071010201080710102011181007101020121答案:#include<stdio.h>#include<string.h>intmain(){inti,j,k,p,start=0,count=l,n,tmonth,tday,month[200],day[200];charnumber[200][12],tnumber;scanf("%d",&n);〃輸入信息for(i=0;i<n;i++)scanf("%s%d%d",number[i],&month[i],&day[i]);〃選擇穩(wěn)定排序法:冒泡排序〃按照月份排序for(i=0;i<n-l;i++)for(j=0;j<n-l-i;j++){if(month[j]>month[j4-1]){〃交換月份tmonth=month[j];month[j]=month[j+1];month[j+l]=tmonth;〃交換天數(shù)tday=day[j];day[j]=day[j+l];day[j+l]=tday;〃交換學(xué)號(hào)for(k=0;k<ll;k++)(tnumber=number[j][k];number[j][k]=number[j+l][k];number[+l][k]=tnumber;〃當(dāng)月份相同時(shí),按照天排序for(p=start;p<n;p++)count++;else(if(count>=2)〃對(duì)有相同月份的人,按照天排序(for(i=start;i<start+count-l;i++)for(j=start;j<start+count-1-i;j++)(if(day[j]>day[j+l]){〃交換月份tmonth=month[j];month[j]=month[j+1];month[j+1]=tmonth;〃交換天數(shù)tday=day[j];day[j]=day[j4-l];day[j+l]=tday;〃交換學(xué)號(hào)for(k=0;k<l1;k++)tnumber=number[j][k];number[j][k]=number[j4-l][k];number[j4-]][k]=tnumber;〃重新調(diào)整start位置start=start+count;count=l;〃輸出信息count=l;for(i=0;i<n;i++){if(count==l){printf("%d%d",month[i],day[i]);printf("%s",number[i]);if(month[ij==month[i+1]&&day[i]==day[i+1])〃找出月份和天數(shù)相同count++;printf("%s",number[i+l]);)elsecount=l;printf("\n");))return0;1061忽略大小寫比較字符串Description一般我們用strcmp可比較兩個(gè)字符串的大小,比較方法為對(duì)兩個(gè)字符串從前往后逐個(gè)字符相比較(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到VT為止。如果全部字符都相同,則認(rèn)為相同;如果出現(xiàn)不相同的字符,則以第一個(gè)不相同的字符的比較結(jié)果為準(zhǔn)。但在有些時(shí)候,我們比較字符串的大小時(shí),希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小寫時(shí)是相等的。請(qǐng)寫ー個(gè)程序,實(shí)現(xiàn)對(duì)兩個(gè)字符串進(jìn)行忽略字母大小寫的大小比較。Input輸入為兩行,每行一個(gè)字符串,共兩個(gè)字符串。(請(qǐng)用gets錄入每行字符串)(每個(gè)字符串長度都小于80)Output如果第一個(gè)字符串比第二個(gè)字符串小,輸出ー個(gè)字符"ぐ如果第一個(gè)字符串比第二個(gè)字符串大,輸出ー個(gè)字符"〉"如果兩個(gè)字符串相等,輸出一個(gè)字符"ゴSampleInputHellohelloSampleOutput答案:#include<stdio.h>#include<string.h>#include<ctype.h>intmain()(inti,cmp;charstrl[80],str2[80];gets(strl);gets(str2);〃全部轉(zhuǎn)化為大寫for(i=0;i<strlen(strl);i++)strl[i]=toupper(strl[i]);for(i=0;i<strlen(str2);i++)str2[i]=toupper(str2[i]);〃比較兩個(gè)字符串cmp=strcmp(strl,str
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 社區(qū)孤獨(dú)癥患者關(guān)懷的個(gè)人方法計(jì)劃
- 分配任務(wù)與跟進(jìn)進(jìn)度的秘書工作計(jì)劃
- 品牌資產(chǎn)與市場(chǎng)風(fēng)險(xiǎn)的關(guān)聯(lián)研究計(jì)劃
- 全面提升團(tuán)隊(duì)績(jī)效的年度規(guī)劃計(jì)劃
- 強(qiáng)化職能部門之間的配合計(jì)劃
- 如何選擇合適的品牌推廣渠道計(jì)劃
- 2025年物位儀項(xiàng)目建議書
- 2025年數(shù)字貨幣金融項(xiàng)目發(fā)展計(jì)劃
- 2025年瀝青試驗(yàn)儀器項(xiàng)目發(fā)展計(jì)劃
- 新員工入職引導(dǎo)及工作流程簡(jiǎn)明教程
- 音樂學(xué)科閱讀方案
- 2024-2030年中國醫(yī)藥設(shè)備市場(chǎng)發(fā)展分析及市場(chǎng)趨勢(shì)與投資方向研究報(bào)告
- 基于新課標(biāo)學(xué)習(xí)的教材解讀及教學(xué)建議部編《道德與法治》二年級(jí)下冊(cè)
- 《勞動(dòng)教育》+勞動(dòng)項(xiàng)目八《栽種小樹》課件
- 《社區(qū)康復(fù)》課件-第二章 社區(qū)康復(fù)的內(nèi)容
- 淚道狹窄與阻塞的護(hù)理
- 銑床工安全技術(shù)操作規(guī)程培訓(xùn)
- 宏觀報(bào)告:美國房地產(chǎn)市場(chǎng)的五大特點(diǎn)
- 視頻監(jiān)控系統(tǒng)驗(yàn)收測(cè)試報(bào)告
- 醫(yī)院骨科專病數(shù)據(jù)庫建設(shè)需求
- 湖北省普通高中2022-2023學(xué)年高一下學(xué)期學(xué)業(yè)水平合格性考試模擬化學(xué)(二)含解析
評(píng)論
0/150
提交評(píng)論