“C程序設計I”實驗指導書_第1頁
“C程序設計I”實驗指導書_第2頁
“C程序設計I”實驗指導書_第3頁
“C程序設計I”實驗指導書_第4頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《C程序設計I》實驗指導書信息工程學院計算機系TOC\o"1-5"\h\zC程序設計實驗要求 2實驗ー簡單程序設計 21010測試驗證結果 21011溫度轉換 21012計算書費 31013時間相加 3實驗二分支結構程序設計 41020函數(shù)值計算 41021顛倒整數(shù) 51022整數(shù)排序 51023自整除數(shù) 61024選作題:FibonacciAgain 6實驗三循環(huán)結構程序設計 71030整數(shù)的立方和 7\o"CurrentDocument"1031求累加和 71032與7無關的數(shù) 81033選作題:細菌繁殖 8實驗四數(shù)組應用 91040楊輝三角形 91041矩陣乘法 321042學生成績管理 351043選作題:大整數(shù)乘法 43實驗五函數(shù)應用 451050各類型變量在函數(shù)調用過程中的變化 461051最大公約數(shù)和最小公倍數(shù) 471052進制轉換 541053字符串替換 561054排序 591055選作題:數(shù)制轉換 61實驗六綜合應用 641060同一天生日 641061忽略大小寫比較字符串 701062不吉利日期 721063統(tǒng)計字符數(shù) 741064選作題:DigitalRoots 77附錄 19ー、VisualC++調試環(huán)境的使用 19二、TC環(huán)境下的使用 84三、實驗報告要求 90四、C程序設計常見錯誤及解決方案 84C程序設計實驗要求課程實驗是c程序設計課程的一個重要的實踐環(huán)節(jié),要求每個同學按以下要求獨立完成每次實驗,每次上機前必須編寫完實驗要求的所有題目,并按輸出格式寫出程序的運行結果,上機時調試程序并驗證結果的正確性,若與運行結果不符,則要分析原因,上機時間由課內和課外上機兩部分,以下時間為課內上機時間。實驗ー簡單程序設計目的及要求:.熟練掌握c開發(fā)環(huán)境的窗口、菜單命令及相應的命令,并掌握在開發(fā)環(huán)境下如何編輯、編譯、連接、運行一個C程序,以及如何保存和修改C語言的源程序。.通過運行ー個簡單的C程序過程,逐步了解C程序的基本結構及特點。.掌握C語言的基本數(shù)據(jù)類型,熟悉它們的使用方法及定義方式,了解各類型數(shù)據(jù)輸出時所用的格式轉換符,熟悉各種運算符和表達式的使用特點。.熟練掌握C中賦值運算的使用。1010測試驗證結果習題4.5〇1011溫度轉換第三題:Description華氏溫度和攝氏溫度的轉換公式為:C=5/9*(F-32)其中:F為華氏溫度C攝氏溫度Input一個整數(shù)表示華氏溫度。Output輸出一行。該行包含ー個浮點數(shù)C,表示轉換的攝氏溫度。精確到小數(shù)點后兩位。SampleInput93SampleOutput33.89答案:#include<stdio.h>voidmain(){intf;floatc;scanf&f);c=(5/9.0)*(f-32);printf(*%0.2f\n",c);getchar();1012計算書費Description下面是ー個圖書的單價表:計算概論28.9元/本數(shù)據(jù)結構與算法32.7元/本數(shù)字邏輯45.6元/本C++程序設計教程Y8兀/本人工智能35元/本計算機體系結構86.2元/本編譯原理27.8元/本操作系統(tǒng)43元/本計算機網絡56元/本JAVA程序設計65元/本給定每種圖書購買的數(shù)量,編程計算應付的總費用。Input輸入每行包含ー組10個整數(shù)(大于等于〇,小于等于100),分別表示購買的《計算概論》、《數(shù)據(jù)結構與算法》、《數(shù)字邏輯》、《C++程序設計教程》、《人工智能》、《計算機體系結構》、《編譯原理》、《操作系統(tǒng)》、《計算機網絡》、《JAVA程序設計》的數(shù)量(以本為單位)。每兩個整數(shù)用一個空格分開。Output輸出一行。該行包含ー個浮點數(shù)f,表示應付的總費用。精確到小數(shù)點后兩位。可用printf(“先2f\n",sum)來輸出sum的值,并精確到小數(shù)點后兩位。SampleInpuampleOutput2140.201013時間相加Description用整數(shù)表示時間,如:1050表示10點50分,2010表示20點10分?,F(xiàn)輸入兩個時間,求兩個時間的和。例:2030+850=520不是28801055+850=1945不是1905Input兩行數(shù)據(jù),每行ー個整數(shù)。Output輸出相加后的時間整數(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();實驗二分支結構程序設計目的及要求:.掌握C程序設計的基本語句表達方式及基本語句結構的方法。.掌握C語言中輸入、輸出函數(shù)的基本功能。.掌握順序和分支結構程序設計的方法。.能獨立編寫順序及分支結構的C程序。1020函數(shù)值計算第四題:Description有一個函數(shù) y=x (x<1)=2x-1 (1く=xく10)-3x-11 (x>=10)寫ー程序,輸入x值,計算y值。Inputー個整數(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給定一個最多4位的正整數(shù),將其顛倒過來輸出。例如:輸入123,則輸出321。Inputー個小于!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對給定的4個整數(shù)進行排序,將由小到大的順序輸出。Input一行中有4個整數(shù),整數(shù)之間用空格分隔。Output按升序輸出,各整數(shù)之間用ー個空格分隔。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對ー個整數(shù)n,如果其各個位數(shù)的數(shù)字相加得到的數(shù)m能整除n,則稱n為自整除數(shù).例如21,21%(2+1)==0?所以21是自整除數(shù)。Inputー個整數(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;實驗三循環(huán)結構程序設計目的及要求:.熟練掌握循環(huán)語句中for語句、while語句和dowhile語句使用方法。.掌握編寫循環(huán)結構程序的方法。1030整數(shù)的立方和第二題Description給定一個正整數(shù)k(l<k<10),求1到k的立方和m。即m=l+2*2*2+...+k*k*k。Input輸入只有一行,該行包含一個正整數(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有一分數(shù)序列:2,3,5,8,13,21 12 3 5 8 13求出該序列的前n項之和。Input輸入只有一行,該行包含一個正整數(shù)n(n<200)。Output序列前n項之和(保留兩位小數(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無關的數(shù)Descriptionー個正整數(shù),如果它能被7整除,或者它的十進制表示中某位數(shù)字為7,則稱其為與7相關的數(shù)。現(xiàn)求所有小于等于n(nGOO)的與7無關的正整數(shù)的平方和.Input輸入為一行,正整數(shù)n,(n<100)oOutput輸出小于等于n的與7無關的正整數(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選作題:細菌繁殖Descriptionー種細菌的繁殖速度是每天成倍增長。例如:第一天有10個,第二天就變成20個,第三天變成40個,第四天變成80個,……?,F(xiàn)在給出第一天的日期和細菌數(shù)目,要你寫程序求出到某一天的時候,細菌的數(shù)目。Input一行有5個整數(shù),整數(shù)之間用ー個空格隔開。第一個數(shù)表示第一天的月份,第二個數(shù)表示第一天的日期,第三個數(shù)表示第一天細菌的數(shù)目,第四個數(shù)表示要求的那一天的月份,第五個數(shù)表示要求的那一天的日期。已知第一天和要求的一天在同一年并且該年不是閏年,要求的一天一定在第一天之后。數(shù)據(jù)保證要求的ー天的細菌數(shù)目在長整數(shù)(long)范圍內。Output對于每ー組測試數(shù)據(jù),輸出一行,該行包含ー個整數(shù),為要求的一天的細菌數(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("第二個日期必須大于第一個日期\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ù)組應用目的及要求:.理解并掌握ー維數(shù)組、二維數(shù)組的定義及引用。.熟練掌握利用數(shù)組處理數(shù)據(jù)的方法。.掌握字符串數(shù)組和字符串的使用方法及常用字符串函數(shù)在程序中的使用。1040楊輝三角形Description打印出楊輝三角形的前n行。Input輸入ー個正整數(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第一行三個整數(shù)為m、n、p(m、n、p均小于10),從第二行開始為m行n列A矩陣,然后為n行p列的B矩陣。所有數(shù)據(jù)之間均由一個空格分隔。Output輸出m行p列的C矩陣,所有數(shù)據(jù)之間均由一個空格分隔。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]);〃兩個矩陣相乘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;〃輸出兩個矩陣printf("%-4d",C[i][j]);printf("\n");1042學生成績管理Description學生信息包括:學號、姓名、數(shù)學成績、英語成績、計算機成績。共有N個人(Nく=10,可在程序內部定義,如用#defineN10)的信息,要求計算每人的總成績,并按總成績由高到低的順序輸出所有人的信息。最后輸出各門課程的平均成績(保留2位小數(shù))。Input為調試方便,N和學生信息可以在程序內部以初值的方式賦值給對應變量。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;〃計算總成績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++){〃交換所有成績tscore=score[j][q];score[j][q]=score[j4-l][q];score[j+l][q]=tscore;)for(k=0;k<N;k++){〃交換學號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;〃輸出標題for(i=0;i<6;i++)printf("%s",title[i]);printf("\n");〃輸出學號+姓名+成績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++)〃輸入學號scanf("%s",&no[i]);〃輸入姓名scanf("%s",&name[i]);sum=O;〃輸入成績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++)(〃交換所有成績tscore=score[j][q];score[j][q]=score[j+l][q];score[j+l][q]=tscore;}for(k=0;k<N;k++)(〃交換學號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;〃輸出標題for(i=0;i<6;i++)printf("%s",title[i]);printf("\n");〃輸出學號+姓名+成績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求兩個不超過200位的非負整數(shù)的積。Input有兩行,每行是ー個不超過200位的非負整數(shù),沒有多余的前導〇。Output一行,即相乘后的結果。結果里不能有多余的前導〇,即如果結果是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);〃轉化成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];〃處理進位for(i=strlen(ca)+strlen(cb)-1;i>0;i—)temp=c[i];c[i]=c[i]%10;c[i-l]+=temp/10;)〃去除前導符0while(c[cut]==O){cut++;)〃輸出結果for(i=cut;i<strlen(ca)+strlen(cb);i++)(//if(c[O]!=0)printf("%d",c[i]);)return0;實驗五函數(shù)應用目的及要求:.理解函數(shù)的定義及函數(shù)的調用過程(函數(shù)的調用格式、調用方式及被調用函數(shù)的使用說明)。.掌握局部變量、全局變量的說明形式和引用方法。.掌握函數(shù)的嵌套與遞歸調用的全過程。1050各類型變量在函數(shù)調用過程中的變化Description采用單步運行方式運行下面程序,觀察各變量(靜態(tài)局部變量及自動變量)在函數(shù)調用過程中的變化。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對給定的兩組數(shù)(每組包括2個整數(shù)),分別計算出兩組數(shù)的最大公約數(shù)和最小公倍數(shù)的和。如:20、12為第一組,28、7為第二組。第一組數(shù)的最大公約數(shù)為4,最小公倍數(shù)為60:第二組數(shù)的最大公約數(shù)為7,最小公倍數(shù)為28:所以兩組數(shù)的最大公約數(shù)之和為11,兩組數(shù)的最小公倍數(shù)之和為88。Input輸入包括兩行,每行為ー組,每組兩個整數(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進制轉換Description對輸入的兩十六進制數(shù)(兩個字符串),將其轉換成十進制后再求和。要求十六進制到十進制的轉換功能由函數(shù)完成。例如:輸入3al、80,由于3al轉換為十進制后為929,80轉換為十進制后為128,所以和為1057。Input輸入包括兩行,每行為一個十六進制數(shù)。Output輸出包括一行為兩數(shù)之和的十進制表示。SampleInput3al80SampleOutput1057答案:#include<stdio.h>#include<string.h>#include<math.h>intconversion(charsix[],intlen)(inti,sixint[10],sum=0;〃轉化成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個字符串(長度不超過20),之間由空格分隔,第一個串為原串,第二個串為替換串。當遇到。〇兩個串時表示輸入結束,并且此行不需處理。Output輸出替換后的文章。SampleInputhellohowareyes.hHesou00SampleOutputHelloHowareyou.答案:#include<stdio.h>#include<string.h>voidswap(chartext[],chara[],charb[])char*str=text,back[2O];//a是textー個子串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對輸入的10個整數(shù)進行排序,按從小到大的順序輸出。要求排序過程由函數(shù)完成。Input輸入包括一行,共10個整數(shù),各數(shù)之間由空格分割。Output在同一行上輸出排好序的10個數(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ù)制轉換Description求任意兩個不同進制非負整數(shù)的轉換(2進制?16進制),所給整數(shù)在long所能表達的范圍之內。不同進制的表示符號為(0,1,…,9,A,B,C,D,E,F)oInput輸入只有一行,包含三個整數(shù)a,n,boa表示其后的n是a進制整數(shù),b表示欲將a進制整數(shù)n轉換成b進制整數(shù)。a,b是十進制整數(shù),2=<a,b<=16oOutput輸出包含一行,該行有一個整數(shù)為轉換后的b進制數(shù)。輸出時字母符號全部用大寫表示,即(0,1, 9,A,B,C,D,E,F)oSampleOutput210306Hint用字符串表示不同進制的整數(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];〃轉化成int類型并求十進制的和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];)〃轉化為b進制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;實驗六綜合應用目的及要求:.掌握程序的基本方法和技巧,能夠獨立完成較復雜程序的設計。.掌握程序的調試方法,熟悉各種類型錯誤的改正方法。21060同一天生日Description在ー個有200人的大班級中,存在兩個人生日相同的概率非常大,現(xiàn)給出每個學生的學號,出生月日。試找出所有生日相同的學生。Input第一行為整數(shù)n,表示有n個學生,n<=200。此后每行包含一個字符串和兩個整數(shù),分別表示學生的學號(字符串長度為11位)和出生月(l<=m<=12)0(l<=d<=31)o學號、月、日之間用ー個空格分隔。Output對每組生日相同的學生,輸出一行,其中前兩個數(shù)字表示月和日,后面跟著所有在當天出生的學生的學號,數(shù)字、學號之間都用ー個空格分隔。對所有的輸出,要求按日期從前到后的順序輸出。對生日相同的學號,按輸入的順序輸出。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;〃交換學號for(k=0;k<ll;k++)(tnumber=number[j][k];number[j][k]=number[j+l][k];number[+l][k]=tnumber;〃當月份相同時,按照天排序for(p=start;p<n;p++)count++;else(if(count>=2)〃對有相同月份的人,按照天排序(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;〃交換學號for(k=0;k<l1;k++)tnumber=number[j][k];number[j][k]=number[j4-l][k];number[j4-]][k]=tnumber;〃重新調整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可比較兩個字符串的大小,比較方法為對兩個字符串從前往后逐個字符相比較(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到VT為止。如果全部字符都相同,則認為相同;如果出現(xiàn)不相同的字符,則以第一個不相同的字符的比較結果為準。但在有些時候,我們比較字符串的大小時,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小寫時是相等的。請寫ー個程序,實現(xiàn)對兩個字符串進行忽略字母大小寫的大小比較。Input輸入為兩行,每行一個字符串,共兩個字符串。(請用gets錄入每行字符串)(每個字符串長度都小于80)Output如果第一個字符串比第二個字符串小,輸出ー個字符"ぐ如果第一個字符串比第二個字符串大,輸出ー個字符"〉"如果兩個字符串相等,輸出一個字符"ゴSampleInputHellohelloSampleOutput答案:#include<stdio.h>#include<string.h>#include<ctype.h>intmain()(inti,cmp;charstrl[80],str2[80];gets(strl);gets(str2);〃全部轉化為大寫for(i=0;i<strlen(strl);i++)strl[i]=toupper(strl[i]);for(i=0;i<strlen(str2);i++)str2[i]=toupper(str2[i]);〃比較兩個字符串cmp=strcmp(strl,str

溫馨提示

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

評論

0/150

提交評論