大學(xué)大一c語言程序設(shè)計實驗室上機(jī)題全部代碼答案(實驗報告)【完整版】_第1頁
大學(xué)大一c語言程序設(shè)計實驗室上機(jī)題全部代碼答案(實驗報告)【完整版】_第2頁
大學(xué)大一c語言程序設(shè)計實驗室上機(jī)題全部代碼答案(實驗報告)【完整版】_第3頁
大學(xué)大一c語言程序設(shè)計實驗室上機(jī)題全部代碼答案(實驗報告)【完整版】_第4頁
大學(xué)大一c語言程序設(shè)計實驗室上機(jī)題全部代碼答案(實驗報告)【完整版】_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

大學(xué)大一c語言程序設(shè)計實驗室上機(jī)題全部代碼答案(實驗報告)【完整版】(文檔可以直接使用,也可根據(jù)實際需要修訂后使用,可編輯放心下載)

C語言實驗?報告大學(xué)大一c語言程序設(shè)計實驗室上機(jī)題全部代碼答案(實驗報告)【完整版】(文檔可以直接使用,也可根據(jù)實際需要修訂后使用,可編輯放心下載)實驗1-1:hello?world?程序:源代碼:#inclu?de<stdio?.h>main(){print?f("hello?world?!\n");syste?m("pause?");}實驗1-2:完成3個數(shù)?據(jù)的輸入、求和并輸出?計算結(jié)果的?程序:源代碼:#inclu?de<stdio?.h>main(){inti,j,k,sum;scanf?("%d%d%d",&i,&j,&k);sum=i+j+k;print?f("sum=%d",sum);syste?m("pause?");實驗1-3:在屏幕上輸?出如以下圖形?:ABBBCCCCC?源代碼:#inclu?de<stdio?.h>main(){print?f("A\n");print?f("BBB\n");print?f("CCCCC?\n");syste?m("pause?");}實驗2-1:計算由鍵盤?輸入的任何?兩個雙精度?數(shù)據(jù)的平均?值源代碼:#inclu?de<stdio?.h>main(){doubl?ea,b;scanf?("%lf%lf",&a,&b);print?f("%.1lf\n",(a+b)/2);syste?m("pause?");}實驗2-2:寫一個輸入?7個數(shù)據(jù)的?程序,把輸入的數(shù)?據(jù)代入a+b*(c–d)/e*f–g表達(dá)式進(jìn)行?運算源代碼:#inclu?de<stdio?.h>main(){float?a,b,c,d,e,f,g,x;scanf?("%f%f%f%f%f%f%f",&a,&b,&c,&d,&e,&f,&g);x=a+b*(c-d)/e*f-g;print?f("x=%f",x);syste?m("pause?");}實驗2-3:編寫一個C?語言程序,測試以下各?表達(dá)式:i,ji+1,j+1i++,j++++i,++ji+++++j源代碼:#inclu?de<stdio?.h>main(){inti=1,j=1;print?f("%d%d\n",i+1,j+1);print?f("%d%d\n",i++,j++);print?f("%d%d\n",++i,++j);print?f("%d\n",(i++)+(++j));syste?m("pause?");}實驗2-4:輸入存款金?額mone?y,存期yea?r和年利率?rate,根據(jù)以下公?式計算存款?到期時的利?息inte?rest〔稅前〕,輸出時保存?2位小數(shù)。inter?est=money?(1+rate)year-money?源代碼:#inclu?de<stdio?.h>#inclu?de<math.h>main(){intyear=2;float?rate=0.1,money?=1000;float?futur?eMone?y;futur?eMone?y=money?*pow((1+rate),year);print?f("%10.2f",futur?eMone?y);syste?m("pause?");}實驗2-5:輸入華氏溫?度,輸出對應(yīng)的?攝氏溫度。計算公式如?下:c=5*(f-32)/9其中,c表示攝氏?溫度,f表示華氏?溫度源代碼:#inclu?de<stdio?.h>main(){ intc,f; scanf?("%d",&f); c=5*(f-32)/9; print?f("%d",c); syste?m("pause?");}實驗3-1:編寫一個程?序完成輸入?一個整數(shù),輸出它的符?號源代碼:#inclu?de<stdio?.h>main(){inti;scanf?("%d",&i);if(i>0)print?f("+");elseprint?f("-");syste?m("pause?");}實驗3-2:請編寫居民?應(yīng)交水費,并提供各種?測試數(shù)據(jù)。居民應(yīng)交水?費y〔元〕與月用水量?x〔噸〕的函數(shù)關(guān)系?式如下:0x<0y=f(x)=4x/30≤x≤152.5x–10.5x>15源代碼:#inclu?de<stdio?.h>main(){ float?x,y; scanf?("%f",&x); if(x<0) print?f("0"); elseif(x>=0&&x<=15) { y=4*x/3; print?f("%f",y); } elseif(x>15) { y=2.5*x-10.5; print?f("%f",y); }syste?m("pause?");}實驗3-3:請根據(jù)輸入?的學(xué)生成績?給出成績等?級的判斷,判斷規(guī)那么如?下:如果輸入的?成績大于等?于90,那么輸出優(yōu)秀?;如果輸入的?成績小于9?0、大于等于8?0,那么輸出良好?;如果輸入的?成績小于8?0、大于等于7?0,那么輸出中等?;如果輸入的?成績小于7?0、大于等于6?0,那么輸出及格?;其他輸出不?及格源代碼:#inclu?de<stdio?.h>main(){ intx; scanf?("%d",&x); if(x>=90) print?f("優(yōu)秀\n"); elseif(x>=80&&x<90) print?f("良好\n"); elseif(x>=70&&x<80) print?f("中等\n"); elseif(x>=60&&x<70) print?f("及格\n"); else print?f("不及格\n"); syste?m("pause?");}實驗3-4:運輸公司對?用戶計算運?費。路程〔s〕越遠(yuǎn),每公里運費?越低。標(biāo)準(zhǔn)如下:s=250km?沒有折扣250km?≤s<500km?2%折扣500km?≤s<1000k?m5%折扣1000k?m≤s<2000k?m8%折扣2000k?m≤s<3000k?m10%折扣3000k?m≤s15%折扣設(shè)每公里每?噸貨物的基?本運費為p?,貨物重為w?,距離為s,折扣為d,那么總運費的?計算公式為?:f=p*w*s*(1–d)請編程實現(xiàn)?:從鍵盤輸入?根本運費p?,貨物重w,距離s,計算輸出用?戶最終需要?支付的運費?源代碼:#inclu?de<stdio?.h>main(){ intp,w,s,f; scanf?("%d%d%d",&p,&w,&s); float?d; f=p*w*s*(1-d); if(s=250) { d==0; print?f("%d",f); } elseif(s>=250&&s<500) { d==0.02; print?f("%d",f); } elseif(s>=500&&s<1000) { d==0.05; print?f("%d",f); } elseif(s>=1000&&s<2000) { d==0.08; print?f("%d",f); } elseif(s>=2000&&s<3000) { d==0.1; print?f("%d",f); } elseif(s>=3000) { d==0.15; print?f("%d",f); } syste?m("pause?");}實驗4-1:xyz?+yzz=532,其中x、y、z都是數(shù)字?〔0~9〕,編寫一個程?序求出x、y、z分別代表?什么數(shù)字源代碼:#inclu?de<stdio?.h>main(){intx,y,z;for(x=1;x<=9;x++)for(y=1;y<=9;y++)for(z=1;z<=9;z++)if(100*x+10*y+z+100*y+10*z+z==532)print?f("%d%d%d",x,y,z);syste?m("pause?");}實驗4-2:編寫一個程?序打印如下?對稱圖形〔行數(shù)由鍵盤?輸入1~9范圍的值?〕,例如下面是?輸入的數(shù)字?4時的情形?:44444?4433333?222122233333?44444?44源代碼:#inclu?de<stdio?.h>main(){inti,j,k,n;print?f("請輸入一個?數(shù)字\n");scanf?("%d",&n);i=n;for(i=0;i<2*n-1;i++){k=i;if(i>=n)k=2*n-2-i;for(j=0;j<k;j++)print?f("");for(j=0;j<2*(n-k)-1;j++)print?f("%d",n-k);print?f("\n");}syste?m("pause?");}實驗4-3:學(xué)校有近千?名學(xué)生,在操場上排?隊,5人一行余?2人,7人一行余?3人,3人一行余?1人,編寫一個程?序求該校的?學(xué)生人數(shù)源代碼:#inclu?de<stdio?.h>main(){inti;for(i=900;i<=1100;i++){if(i%5==2&&i%7==3&&i%3==1){print?f("%d\n",i);break?;}}syste?m("pause?");}實驗4-4:學(xué)校某班A?、B、C、D四位同學(xué)?中的一位做?了好事不留?名,表揚信來了?之后,班主任問這?四位是誰做?了好事,四位答復(fù)如?下:A說:不是我。B說:是C。C說:是D。D說:他胡說。三個人?說的是真話?,一個人說的?是假話。請根據(jù)這些?信息,找出做了好?事的人源代碼:#inclu?de<stdio?.h>main(){inti,j,a,b,c,d;for(i=0;i<=4;i++){for(j=0;j<=4;j++)if(j==i)switc?h(j){case0:a=1;b=0;c=0;d=0;break?;case1:a=0;b=1;c=0;d=0;break?;case2:a=0;b=0;c=1;d=0;break?;case3:a=0;b=0;c=0;d=1;break?;defau?lt:break?;}if(a+b+c==1&&b+c==1&&c+d==1&&b+c+d==1)print?f("做好事的人?是%c\n",i+'a');}syste?m("pause?");}實驗5-1:從鍵盤輸入?一個長度為?N〔比方10〕的整型數(shù)組?,而后將數(shù)組?中小于零的?元素移動到?數(shù)組的前端?,大于零的元?素移到數(shù)組?的后端,等于零的元?素留在數(shù)組?中間。比方原來數(shù)?組為:2-5-89750-89093480,經(jīng)過處理后?的數(shù)組為:-5-89-890007593482。由于不要求?數(shù)組有序,所以不允許?用排序方法?源代碼:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>#defin?eN10main(){ inta[N]={2,-5,-89,75,0,-89,0,93,48,0}; inti,t,j; for(i=0;i<N;i++) print?f("%4d",a[i]); print?f("\n"); for(i=0;i<N;i++) { for(j=i+1;j<N;j++) { if(a[i]>0&&a[j]<0) { t=a[i]; a[i]=a[j]; a[j]=t; } elseif(a[i]>0&&a[j]==0) { t=a[i]; a[i]=a[j]; a[j]=t; } elseif(a[i]==0&&a[j]<0) { t=a[i]; a[i]=a[j]; a[j]=t; } } } for(i=0;i<N;i++) print?f("%4d",a[i]); print?f("\n"); syste?m("pause?");}實驗5-2:設(shè)數(shù)組a的?定義如下:inta[20]={2,4,6,8,10,12,14,16};已存入數(shù)組?中的數(shù)據(jù)值?已經(jīng)按由小?到大的順序?存放,現(xiàn)從鍵盤輸?入一個數(shù)據(jù)?,把它插入到?數(shù)組中,要求插入新?數(shù)據(jù)以后,數(shù)組數(shù)據(jù)仍?然保持有序?。請編寫一個?程序?qū)崿F(xiàn)上?述功能源代碼:#inclu?de<stdio?.h>main(){inta[9]={2,4,6,8,10,12,14,16};inti,j,numbe?r;print?f("原數(shù)組\n");for(i=0;i<=8;i++)//輸出數(shù)組原?有的元素print?f("%d",a[i]);print?f("\n");print?f("請輸入一個?數(shù)據(jù)\n");scanf?("%d",&numbe?r);i=0;//以下三行找?到插入位置?while?(a[i]<numbe?r&&i<8)i++;for(j=7;j>=i;j--)//將插入點以?后的元素順?序往后移一?位a[j+1]=a[j];a[i]=numbe?r;//插入數(shù)據(jù)print?f("輸出改變后?的數(shù)組\n");for(i=0;i<=8;i++)//輸出插入后?仍有序的數(shù)?組print?f("%d",a[i]);syste?m("pause?");}實驗5-3:寫一個3x5矩陣的轉(zhuǎn)?置程序,輸出其原矩?陣的值和轉(zhuǎn)?置以后的結(jié)?果源代碼:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>main(){ inti,j; inta[3][5]={1,2,3,4,5,6,7,8,9,4,5,6,7,8,9}; for(i=0;i<3;i++){ for(j=0;j<5;j++) print?f("%d",a[i][j]); print?f("\n"); }print?f("轉(zhuǎn)置后的矩?陣為\n"); for(i=0;i<5;i++){ for(j=0;j<3;j++) print?f("%d",a[j][i]);print?f("\n");} syste?m("pause?");}實驗5-4:編程實現(xiàn)隨?機(jī)產(chǎn)生10?個位于區(qū)間?[100200]互不相等的?整數(shù),并將其按降?序排序和輸?出源代碼:#inclu?de<stdio?.h>#inclu?de<time.h>#inclu?de<stdli?b.h>#defin?erando?m(x)(rand()%101+100)main(){inti,j,k,n;//產(chǎn)生隨機(jī)數(shù)?inta[10];srand?((int)time(0));for(i=0;i<=9;i++){a[i]=rando?m(200);print?f("%d",a[i]);}print?f("\n");for(i=0;i<=9;i++){//排序k=i;for(j=i;j<10;j++)if(a[k]<a[j])k=j;n=a[i];a[i]=a[k];a[k]=n;}print?f("排序后的數(shù)?組為\n");for(i=0;i<10;i++)print?f("%d",a[i]);syste?m("pause?");}實驗6-1:寫一個函數(shù)?intdigit?(intn,intk),它返回數(shù)n?的從右向左?的第k個十?進(jìn)數(shù)字值。例如,函數(shù)調(diào)用d?igit(1234,2)將返回值3?源代碼:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>intdigit?(intn,intk){inti,j,a,b;b=n%10;a=(n/10)%10;j=(n/100)%10;i=(n/1000)%10;n=1000*i+100*j+10*a+b;if(k==1)print?f("%d",b);elseif(k==2)print?f("%d",a);elseif(k==3)print?f("%d",j);elseif(k==4)print?f("%d",i);}main(){intx,y;print?f("請輸入一個?數(shù)據(jù)\n");scanf?("%d%d",&x,&y);digit?(x,y);syste?m("pause?");}實驗6-2:寫一個函數(shù)?intispri?me(intn),當(dāng)n是質(zhì)數(shù)?時,函數(shù)返回非?零值;當(dāng)n是合數(shù)?時,函數(shù)返回零?值源代碼:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>intispri?me(intn){inti;for(i=2;i<sqrt(n);i++)if(n%i==0){//判斷retur?n(0);}else{retur?n(1);}}main(){intx;print?f("請輸入一個?數(shù)據(jù)\n");scanf?("%d",&x);print?f("%d",ispri?me(x));syste?m("pause?");}實驗6-3:寫一個函數(shù)?rever?se(chars[]),將字符串s?[]中的字符串?倒序輸出。試分別用遞?歸和非遞歸?兩種形式編?寫源代碼:遞歸:#inclu?de<stdio?.h>#inclu?de<strin?g.h>#inclu?de<stdli?b.h>voidres(chars[],intlen){ if(len>=0) { print?f("%c",s[len-1]); len--; res(s,len); getch?ar(); } }voidrever?se(charb[]){ res(b,strle?n(b));}voidmain(){ chara[100]; gets(a); rever?se(a); syste?m("pause?");}源代碼:非遞歸:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>voidrever?se(chars[]);voidmain(){ chars[100]; gets(s); rever?se(s);}voidrever?se(chars[])//非遞歸調(diào)用?的reve?rse函數(shù)?{ intj,i=0; do { i++; }while?(s[i]!='\0'); for(j=i-1;j>=0;j--) print?f("%c",s[j]); print?f("\n"); syste?m("pause?");}實驗6-4:寫一個主函?數(shù)輸入測試?數(shù)據(jù)〔自己指定〕,并調(diào)用上述?函數(shù),檢查函數(shù)功?能的正確性?源代碼:#inclu?de<stdio?.h>intmax(inta,intb){ if(a>b) retur?na; if(a<b) retur?nb;}main(){ inta,b; scanf?("%d%d",&a,&b); print?f("%d\n",max(a,b));}實驗6-5:一個數(shù)如果?從左到右和?從右到左讀?,數(shù)字是相同?的,那么稱這個數(shù)?字為回文數(shù)?,比方898?、1221、15651?都是回文數(shù)?。求:既是回文數(shù)?又是質(zhì)數(shù)的?5位十進(jìn)制?數(shù)有多少個??要求:回文判斷和?質(zhì)數(shù)判斷都?需要通過子?函數(shù)實現(xiàn),輸出的時候?要求5個數(shù)?字一行源代碼:#inclu?de"stdio?.h"inthw(intn){ inta[5],i,k=n,j; for(i=2;i<n/2;i++) if(n%i==0) retur?n0; else { for(i=0;i<5;i++) { a[i]=k%10; k=k/10; } if(n==a[0]*10000?+a[1]*1000+a[2]*100+a[3]*10+a[4]) retur?n1; else retur?n0; }}intmain(){ inti,s,j=0; for(i=10000?;i<=99999?;i++) { s=hw(i); if(s) { print?f("%10d",i); j++; if(j%5==0) print?f("\n"); } } getch?ar(); syste?m("pause?");}實驗6-6:在n個已排?好序〔設(shè)為從小到?大〕的數(shù)據(jù)〔數(shù)或字符串?〕中查找某一?個數(shù)據(jù),如果找到了?,就指出其在?n個數(shù)中的?位置;否那么給出無?該數(shù)據(jù)的信?息。請用遞歸的?方法實現(xiàn)二?分查找來實?現(xiàn)這一查找?過程源代碼:#inclu?de"stdio?.h"voidfound?(ints[],intmax,intmin,intl){ intmid; mid=(max+min)/2; if(mid>max||mid<min) print?f("此數(shù)不存在?于此數(shù)列中?!"); else { if(s[mid]==l) { print?f("該數(shù)在10?個數(shù)中的位?置是%d",mid+1); } elseif(s[mid]>l) { max--; found?(s,max,min,l); } else { min++; found?(s,max,min,l); } } getch?ar();}intmain(){ inta[100],i,n; for(i=0;i<10;i++) scanf?("%d",&a[i]); scanf?("%d",&n); found?(a,9,0,n); syste?m("pause?");}實驗7-1:編寫一個函?數(shù)char?*delk(char*sp),把sp所指?向的字符串?中所有的“$〞字符刪除,并把處理后?的字符串指?針返回源代碼:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>voiddelch?ar(char*s,charc){chars2[50];inti,j;for(i=0,j=0;s[i]!='\0';i++){if(s[i]!=c){s2[j]=s[i];j++;}}s2[j]='\0';for(i=0;s2[i]!='\0';i++){s[i]=s2[i];}s[i]="\0";}intmain(){charstr[20]="abcde?f";delch?ar(str,'c');puts(str);syste?m("pause?");}實驗7-2:寫一個函數(shù)?intfind(char*s1,char*s2),函數(shù)fin?d的功能是?查找串s1?中是否包含?指定的詞〔s2指向〕,如果存在那么?返回第1次?出現(xiàn)的位置?,否那么返回-1.約定串中的?詞由1個或?1個以上的?空格符分隔?。源代碼:#inclu?de<stdio?.h>intfind(char*s1,char*s2){ inti=0,j=0; char*p=s2; for(;s1!='\0';s1++,i++) { if(*s1!=*s2) { s2=p; j=0; } if(*s1==*s2) { j++; s2++; if(*s2=='\0') { retur?ni-j+2; } } } retur?n-1;}intmain(){ char*s1="Iamagirl",*s2="am"; print?f("%d",find(s1,s2)); print?f("\n");}實驗7-3:編程實現(xiàn)將?輸入的十進(jìn)?制整數(shù)n通?過函數(shù)Dt?oH轉(zhuǎn)換為?十六進(jìn)制數(shù)?,并將轉(zhuǎn)換結(jié)?果以字符形?式輸出。例如:輸入十進(jìn)制?數(shù)79,將輸出十六?進(jìn)制數(shù)4f?源代碼:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>intDtoH(intn,inta[]){inti=0;while?(n!=0){intbit=n%16;a[i]=bit;i++;n=n/16;}retur?ni;}intmain(){intx;print?f("pleas?eenter?anumbe?r\n");scanf?("%d",&x);inta[10]={0};intnbits?=DtoH(x,a);inti;print?f("轉(zhuǎn)換后的數(shù)?為\n");for(i=nbits?-1;i>=0;i--){if(a[i]>9)print?f("%c",a[i]-10+'A');elseprint?f("%d",a[i]);}print?f("\n");syste?m("pause?");}實驗7-4:定義函數(shù)v?oidMerge?(inta[],intn,intb[],intm),參數(shù)a、b為一維數(shù)?組,數(shù)組中的數(shù)?據(jù)為升序排?列,n和m分別?為它們的元?素個數(shù)。函數(shù)的功能?為:將數(shù)組a和?b合并為一?個數(shù)組,合并后的結(jié)?果存放于數(shù)?組a中,要求合并后?的數(shù)組a仍?舊為升序排?列。請編程實現(xiàn)?,并編寫ma?in函數(shù)對?其測試。源代碼:#inclu?de<stdio?.h>voidMerge?(inta[],intn,intb[],intm){ int*p,*q,i,j,k; p=a; q=b; for(i=0;i<10;i++) { if(i>0&&*(p+i)<*(p+i-1)) { *(p+i)=*q;q++; } } for(i=0;i<10;i++) for(j=i+1;j<10;j++) if(*(p+i)>*(p+j)) { k=*(p+i); *(p+i)=*(p+j); *(p+j)=k; }}main(){ inta[10]={2,3,5,7,9},b[5]={1,4,6,8,10}; inti; Merge?(a,10,b,5); for(i=0;i<10;i++) print?f("%3d",a[i]);}實驗8-1:編寫一個書?名排序程序?,輸入10個?書名存入一?個二維數(shù)組?,用函數(shù)vo?idsorts?tring?(char*name[],intn)實現(xiàn)它們的?字典順序。源代碼:#inclu?de<stdio?.h>#inclu?de<strin?g.h>voidsorts?tring?(char*name[],intn){ char*p; inti,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) { if(strcm?p(name[i],name[j])>0) { p=name[i]; name[i]=name[j]; name[j]=p; } }}main(){ char*name[]={"hello?","world?","start?","end","then","first?","follo?w","watch?","see","hear"}; inta; sorts?tring?(name,10); for(a=0;a<10;a++) print?f("%s\n",name[a]);}實驗8-2:編寫函數(shù)v?oidsearc?h(char*s1,char*s2,char*s3)。函數(shù)sea?rch()從的兩?個字符串s?1與s2中?找出它們都?包含的最長?的單詞放入?字符串s3?,約定字符串?中只有小寫?字母和空格?字符,單詞用1個?或1個以上?空格分隔源代碼:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>#inclu?de<strin?g.h>voidsearc?h(char*s1,char*s2,char*s3){char*p;intword,i,m,n;chara[20];p=s1;s3[0]='\0';while?(*p!='\0') {word=0;for(i=0;p[i]!='\0';i++)//記錄單詞的?長度i {if(p[i]!=''&&word==0) { word=1; m=i; }elseif(p[i]==''&&word==1) { n=i; break?; }}if(p[i]=='\0'&&word==1) n=i;if(word==1) {//將單詞復(fù)制?到atem?p中strnc?py(a,p+m,n-m);a[n-m]='\0';//puts(s3);char*pfind?;//strst?r:找出ate?mp字符串?在s2字符?串中第一次?出現(xiàn)的位置?。if((pfind?=strst?r(s2,a))!=NULL) {//finde?d//只是找到包?含,如果完全一?致,應(yīng)該將找到?對應(yīng)的單詞?取出來再比?較if(*(pfind?+strle?n(a))==''||*(pfind?+strle?n(a))=='\0')if(strle?n(a)>strle?n(s3))strcp?y(s3,a);}p=p+n;}elsebreak?;}}main(){char*s1="What'syourname";char*s2="Mynameis007";chars3[20];searc?h(s1,s2,s3); print?f("%s\n",s3);}實驗8-3:編寫一個主?函數(shù),測試上述兩?個函數(shù)的正?確性。結(jié)果如上兩?題所示。實驗8-4:輸入一個字?符串,內(nèi)有數(shù)字和?非數(shù)字字符?,例如:A123c?df456.78cpc?876.9er849.1將其中連續(xù)?的數(shù)字作為?一個實數(shù),依次存放到?一數(shù)組a中?。例如123?存放在a[0],456.78存放在?a[2],依次類推,統(tǒng)計共有多?少個數(shù),并輸出這些?數(shù)。源代碼:#inclu?de<stdio?.h>voidf(char*sp,float?b[]){ char*p; float?value?; intpower?,i=0,j=0; p=sp; while?(*p) { for(;!(*p>='0'&&*p<='9');p++) value?=0; for(value?=0;(*p>='0'&&*p<='9');p++,i++) value?=value?*10+*p-'0'; if(*p=='.') p++; for(power?=1;(*p>='0'&&*p<='9');p++,i++) { value?=value?*10+*p-'0'; power?=power?*10; } value?=value?/power?; b[j++]=value?; } print?f("數(shù)字個數(shù)為?:%d\n",i);}voidmain(){ intj; float?b[4]={0}; char*a="A123c?df456.78cpc?876.9er849.1"; f(a,b); for(j=0;j<4;j++) print?f("%.2f\n",b[j]);}實驗9-1:編寫一個建?立單鏈表的?函數(shù),設(shè)鏈表的表?元素信息包?含學(xué)號、姓名、一門課的成?績;寫一個按照?學(xué)號查學(xué)生?成績的函數(shù)?;最后寫一個?主函數(shù),它先調(diào)用建?立函數(shù),再調(diào)用查詢?函數(shù),顯示查到學(xué)?生的姓名和?成績。源代碼:#inclu?de<stdio?.h>struc?tstude?nt{ intnum; charname[20]; float?score?;}stu[4]={{1,"zeng",98},{2,"pu",90},{3,"wu",90},{4,"wang",89}};main(){ inti,j; print?f("請輸入學(xué)號?:\n"); scanf?("%d",&i); for(j=0;j<4;j++) if(stu[j].num==i) print?f("%4d%8s%12f\n",stu[j].num,stu[j].name,stu[j].score?);}實驗9-2:編一程序,能把從終端?輸入的一個?字符串中的?小寫字母全?部轉(zhuǎn)換成大?寫字母,要求輸入的?字符的同時?指定該字符?在字符串中?的序號〔即字符在字?符串中的順?序號,例如第1個?字符的序號?為1〕,字符和序號?存入結(jié)構(gòu)體?中,字符串存入?結(jié)構(gòu)體數(shù)組?中,然后顯示結(jié)?構(gòu)體數(shù)組的?結(jié)果〔用字符!表示輸入字?符串的結(jié)束?〕。源代碼:#inclu?de<stdio?.h>struc?tstr{ chara; intnum;}s[10];main(){ inti=0; print?f("請輸入字母?,以!為結(jié)束標(biāo)志?\n"); while?(1) { scanf?("%c",&s[i].a); if(s[i].a!='!') s[i].num=i+1; else break?; if(s[i].a>'Z') s[i].a=s[i].a-32; print?f("%c,%d\n",s[i].a,s[i].num); i++; }}實驗9-3:在本實驗的?實驗內(nèi)容1?的根底上,實現(xiàn)在鏈表?元素ind?ex之前插?入元素的操?作Inse?rt(struc?tnode*head,intindex?)和刪除指定?位置元素的?操作Del?ete(struc?tnode*head,intindex?),并編寫主函?數(shù)測試。源代碼:#inclu?de<stdio?.h>#inclu?de<stdli?b.h>#inclu?de<strin?g.h>#inclu?de<mallo?c.h>struc?tstude?nt{ charname[15]; charnum[15]; charrisk[15]; struc?tstude?nt*next;};struc?tstude?nt*fun(){ struc?tstude?nt*p,*q,*head; q=head=NULL; charstr[15]={'\0'}; print?f("請依次輸入?學(xué)生的姓名?,學(xué)號,成績:(以'0'作為結(jié)束標(biāo)?志)\n"); while?(1) { scanf?("%s",str); if(str[0]=='0') break?; p=(struc?tstude?nt*)mallo?c(sizeo?f(struc?tstude?nt)); strcp?y(p->name,str); scanf?("%s",p->num); scanf?("%s",p->risk); if(head==NULL) head=q=p; else { q->next=p; q=p; } } q->next=NULL; retur?nhead;}struc?tstude?nt*park(struc?tstude?nt*head){ inti; charstr[15]; struc?tstude?nt*p,*q; print?f("你想要刪除?某個學(xué)生的?信息嗎?是/否(1/0)\n"); scanf?("%d",&i); if(!i) retur?nhead; print?f("請輸入你想?要刪除的學(xué)?生姓名\n"); scanf?("%s",str); for(p=head,q=NULL;p!=NULL;q=p,p=p->next) if(!strcm?p(p->name,str)) break?; if(p==NULL) { print?f("沒有你要刪?除的學(xué)生的?信息\n");retur?nhead; } else { if(q==NULL) head=p->next; else { q->next=p->next; } free(p); } retur?nhead;}struc?tstude?nt*wall(struc?tstude?nt*head){ inti,j,k=1; struc?tstude?nt*p,*q,*r; print?f("你想要添加?某個學(xué)生的?信息嗎?是/否(1/0)\n"); scanf?("%d",&i); if(!i) retur?nhead; print?f("請輸入你想?要添加的學(xué)?生的信息:〔依次為:姓名,學(xué)號,成績〕\n"); p=(struc?tstude?nt*)mallo?c(sizeo?f(struc?tstude?nt)); scanf?("%s",p->name); scanf?("%s",p->num); scanf?("%s",p->risk); print?f("請輸入你想?要添加到的?位置\n"); scanf?("%d",&j); for(q=head,r=NULL;q!=NULL;r=q,q=q->next) { if(j==1) { p->next=head; head=p; break?; } if(k==j) { p->next=q; r->next=p; break?; } k++; } if(q==NULL&&j==k) { q=p; p->next=NULL; } if(q==NULL&&j>k) print?f("你的添加的?位置不合法?\n"); retur?nhead;}voidprin(struc?tstude?nt*head){ struc?tstude?nt*p; for(p=head;p!=NULL;p=p->next) { print?f("%s",p->name); print?f("%s",p->num); print?f("%s",p->risk); print?f("\n"); }}main(){ struc?tstude?nt*head; head=fun(); head=wall(head); head=park(head); prin(head);}實驗10-1:編寫一個程?序,讀取磁盤上?的一個C語?言程序文件?,要求加上注?釋后再存放?到磁盤上,文件可以另?外命名。源代碼:#inclu?de<stdio?.h>#inclu?de

溫馨提示

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

評論

0/150

提交評論