某大學(xué)C語(yǔ)言-實(shí)驗(yàn)報(bào)告_第1頁(yè)
某大學(xué)C語(yǔ)言-實(shí)驗(yàn)報(bào)告_第2頁(yè)
某大學(xué)C語(yǔ)言-實(shí)驗(yàn)報(bào)告_第3頁(yè)
某大學(xué)C語(yǔ)言-實(shí)驗(yàn)報(bào)告_第4頁(yè)
某大學(xué)C語(yǔ)言-實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

年卡科技大察

課程實(shí)驗(yàn)報(bào)告

課程名稱:c語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)

專業(yè)班級(jí):_______________

學(xué)號(hào):_______________

姓名:_______________

指導(dǎo)教師:_______________

報(bào)告日期:_______________

計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院

目錄

1流程控制實(shí)驗(yàn)......................................................1

1.1程序改錯(cuò)........................................................1

1.2程序修改替換..................................錯(cuò)誤!未定義書簽。

1.3程序設(shè)計(jì)........................................................3

1.4小結(jié)...........................................................18

2數(shù)組程序設(shè)計(jì)實(shí)驗(yàn).................................................19

2.1程序改錯(cuò)與跟蹤調(diào)試............................................19

2.2程序完善與修改替換............................................22

2.3程序設(shè)計(jì)......................................................27

2.4小結(jié)..........................................................52

3結(jié)構(gòu)與聯(lián)合實(shí)驗(yàn)...................................................54

3.1表達(dá)式求值的程序驗(yàn)證..........................................54

3.2源程序修改替換.................................................56

3.3程序設(shè)計(jì).......................................................59

3.4小結(jié)...........................................................95

參考文獻(xiàn)..........................................................96

1流程控制實(shí)驗(yàn)

1.1程序改錯(cuò)

/*合數(shù)判斷器*/

#include<stdio.h>

intmain(void)

inti,x,k,flag=0;

printf("本程序判斷合數(shù),請(qǐng)輸入大于1的整數(shù),以ctrl+Z結(jié)束\n〃);

while(scanf&x)!=E0F)

(

for(i=2,k=x?l;i<=k;i++)

(

if(!x%i)※※此處應(yīng)改為if(!(x/i))或改為if(x/i==0)

(

flag=l;

break;

)

)

if(flag=l)※※此處應(yīng)改為flag==l,一個(gè)“=”表示賦值

printf(zz%d是合數(shù)\n”,x);

else

printf("%d不是合數(shù)\n”,x);

※※此處應(yīng)添加語(yǔ)句flag=0,否則無(wú)論是否是合數(shù)flag的值始終是1

return0;

1.2程序修改替換

(1)修改方案:將原實(shí)驗(yàn)程序中if語(yǔ)句的break改為k=i;保證了if語(yǔ)句

執(zhí)行后退出循環(huán)。

(2)修改方案:將for循環(huán)改為如下代碼:

inti=2,k;

k=x>>l;

do{

if(!(x%i)){

flag=l;

break;}

i++;

}while(i<=k);

2

OC:\Users\20140\Desktop\Operate\X^L20201104\^^ft£SJ2.exe-□X

3不是合數(shù)

78是合數(shù)

79

79不是合數(shù)

103

103不是合數(shù)

234

234是合數(shù)

14

14是合數(shù)

17

17不是合數(shù)

*Z

Processexitedafter28.22secondswithreturnvalue0

請(qǐng)按任意鍵繼續(xù)...

(3)修改方案:定義兩個(gè)函數(shù),一個(gè)函數(shù)判斷為合數(shù),另一個(gè)判斷是純粹

合數(shù),并在main函數(shù)中調(diào)用判斷純粹合數(shù)的函數(shù),輸出所有的3位純粹合數(shù)。

程序代碼如下:

#include<stdio.h>

intNotPrime(intx)〃判斷是合數(shù)

I

inti,k,flag=0;

for(i=2,k=x>>l;i<=k;i++){

if(x%i==0){

flag=l;

break;

)

)

returnflag;

)

〃判斷是純粹合數(shù)

intpure(intx){

intflag=0,count=0;

for(intj=0;j<3;++j){

if(NotPrime(x))

count++;

x/=10;

3

if(count==3)

flag=l;

returnflag;

intmain(void){

intnum=0;

printf(〃純粹合數(shù)有\(zhòng)n〃);

for(intx=100;x<=999;++x){

if(pure(x)){

printf(〃%d\t〃,x);

num++;

if(num%10==0)

printfr\nz,);

)

return0;}

I3C:\Users\2O140\Desktop\Operate\±m(xù)20201104\g^fttS3.exe

-□X

純粹合數(shù)有

400402403404405406407408420422

423424425426427428429440441442

444445446447448450451452453454

455456458459460462464465466468

480481482483484485486488489

492493494495496497498600602

604605606608609620621622623

625626627628629630632633634

636637638639640642644645646

649650651652654655656657658

662663664665666667668669680

682684685686687688689690692

693694695696697698699800801802

804805806807808810812813814

816817818819820822824825826

840841842843844845846847848

850851852854855856858860861

864865866867868869870871872

874875876878879880882884885

888889900901902903904905906

909910912913914915916917918

921922923924925926927928930

932933934935936938939940942

944945946948949950951952954

956957958959960961962963964

966968969980981982984985986

988989990992993994995996998

999

Processexitedafter0.02486secondswithreturnvalue0

話按仃:點(diǎn)鍵繼續(xù).

I

4

1.3程序設(shè)計(jì)

1.計(jì)算稅金

1)解題思路:

2)程序源代碼:

①利用switch語(yǔ)句:

#include<stdio.h>

intmain(void){

intwage,tax,flag=l;

while(flag){

printf(〃\n請(qǐng)輸入工資:\n〃);//提示輸入工資

scanf(〃%d〃,&wage);

tax=(int)((wage)/1000);//用于計(jì)算不同的工資范圍

switch(tax){

case0:printf(〃您不用交稅金!〃);break;

case1:printf(〃您應(yīng)交稅金:%.3f,z,(float)wage*0.05);break;

case2:printf(〃您應(yīng)交稅金:%.3f,z,(float)wage*0.1);break;

case3:printf(〃您應(yīng)交稅金:%.3f,z,(float)wage*0.15);break;

5

case4:printf("您應(yīng)交稅金:%.3f”,(float)wage*0.2);break;

default:printf("您應(yīng)交稅金:%.3f”,(float)wage*O.25);break;

)〃強(qiáng)制類型轉(zhuǎn)換,輸出較為精確的浮點(diǎn)數(shù)

printf("\n是否需要繼續(xù)計(jì)算?(0or1)\n\n,/);

scanf(袋d〃,&flag);〃用于決定是否繼續(xù)循環(huán)的語(yǔ)句

)

return0;

)

②利用if語(yǔ)句:

#include<stdio.h>

intmain(void){

intx,y,flag=l;

while(flag){

printf(〃\n請(qǐng)輸入工資:\n");〃提示輸入工資

scanf&x);

if(x<0)

printf(”請(qǐng)輸入正整數(shù)!”);

if(x<1000)

printf(〃您不用交稅金!“);

if(x<2000&&x>=1000)

printf(“您應(yīng)交稅金:%.3f,z,(float)x*0.05);

if(x<3000&&x>=2000)

printf(“您應(yīng)交稅金:%.3r,(float)x*0.1);

if(x<4000&&x>=3000)

printf("您應(yīng)交稅金:%.3f/z,(float)x*0.15);

if(x<5000&&x>=4000)

printf("您應(yīng)交稅金:%.3r,(float)x*0.2);

if(x>5000)

printf("您應(yīng)交稅金:%.3f,z,(float)x*0.25);

6

〃強(qiáng)制類型轉(zhuǎn)換,輸出較為精確的浮點(diǎn)數(shù)

printf("\n是否需要繼續(xù)計(jì)算?(0orl)\n\n");

scanf("%d”,&flag);〃用于決定是否繼續(xù)循環(huán)的語(yǔ)句

return0;

3)測(cè)試:

X[0,1000)[10000,2000)[2000,3000)[3000,4000)[4000,5000)[5000,+8)

輸入值99911002400345643125679

結(jié)果不用交稅金55.000240.000518.400862.4001419.750

圖1-1程序設(shè)計(jì)題1的運(yùn)行結(jié)果

7

2.輸出滿足條件的三位數(shù)

1)解題思路:

2)程序源代碼:

#include<stdio.h>

intmain(void){

for(inti=100;i<=999;i++){〃for循環(huán)語(yǔ)句確定是三位數(shù)

intt;

t=i*i;

if(t/lOOO==i)〃if判斷該數(shù)平方末三位是否是該數(shù)本身

printf("%d\n”,i);〃若結(jié)果為真,輸出該值。

)

return0;

)

3)測(cè)試:

[1C:\Users\20140\Desktop\OperateVttfl20201104\2.exe-OX

625

Processexitedafter0.01501secondswithreturnvalue0

請(qǐng)按任意鍵繼續(xù)...

圖1?2程序設(shè)計(jì)題2的運(yùn)行結(jié)果

8

3.股票收盤價(jià)格波動(dòng)值

1)解題思路:

2)程序源代碼:

#include<stdio.h>

doubleabs(doublea){

if(a<0)

cl=-H

returna;

}〃定義絕對(duì)值函數(shù)

intmain(void){

doublea,b,max;

intday;

printf(〃請(qǐng)輸入天數(shù):\n〃);

scanf(〃%d〃,&day);

printf(〃請(qǐng)輸入這些天的收盤價(jià)格:\n〃);

scanf&b);〃提示輸入收盤天數(shù)與每天收盤價(jià)格

for(inti=l;i〈day;++i){

a=b;

scanf("lf〃,&b);

if(abs(a-b)>max)//if語(yǔ)句將每次的最大波動(dòng)值賦給max

max=abs(a-b);

)

printfC%.21f\n〃,max);〃輸出最大波動(dòng)值

return0;

}

3)測(cè)試:

項(xiàng)目測(cè)試輸入輸出

115396.00

21.231.782.571.590.98

3200267.45345.8978.44

9

圖1-3程序設(shè)計(jì)題3的運(yùn)行結(jié)果

4.將正文的多個(gè)空格用一個(gè)代替

1)解題思路:

2)程序源代碼:

#include<stdio.h>

intmain(void){

chara,b;

printf(〃請(qǐng)輸入一段正文,并以Ctrl+Z結(jié)束:\n〃);

while((b=getchar())!=EOF){

if(!(a=32&&b=32))〃如果前后兩個(gè)字符均為空格,則只輸出一個(gè)

putchar(b);

a=b;〃將后一個(gè)字符賦給前一個(gè)字符

return0;

10

Processexitedafter38.27secondswithreturnvalue0

請(qǐng)按任意鍵繼續(xù)...

圖1-4程序設(shè)計(jì)題4的運(yùn)行結(jié)果

5.輸出10行楊輝三角

1)解題思路:

2)程序源代碼:

Sinclude<stdio.h>

intmainO{

ii

inti,j,a[100][100];〃定義一個(gè)二維數(shù)組,代表行和列

for(i=0;i<10;++i)

a[i][0]=l;〃通過(guò)遍歷,將第一列的值賦為1

for(i=0;i<10;++i)

(

for(j=l;j<10;++j)

a[i][j]=(a[i][jT])*(i-j+l)/j;〃應(yīng)用公式將值存入二維數(shù)組中

)

for(i=0;i<10;++i)

(

for(j=i;j<10;++j)

printfC");〃打印空格,形成三角格式

for(j=0;j<10;++j)

(

if(a[i][j]!=0)

printf("Md",a[i][j]);〃按一個(gè)數(shù)字占四個(gè)字符的域?qū)捿敵?/p>

)

printf("\n");〃確保換行輸出

return0;

3)輸出結(jié)果:

圖1-5程序設(shè)計(jì)題5的運(yùn)行結(jié)果

6.輸出梅森素?cái)?shù)

1)解題思路:

定義判斷素裁的函敢定義判斷梅森素?cái)?shù)的函數(shù)

12

2)程序源代碼:

#include<stdio.h>

#include<math.h>

longisprime(longn)〃定義一個(gè)函數(shù)判斷是素?cái)?shù)

{

intflag=l;

for(inti=2;i<=sqrt(n);i++)

(

if(n%i==0)

(

fl

ag=0;

break;

)

)

returnflag;

)

longisMasonNumber(longnum)〃定義一個(gè)函數(shù)判斷是梅森數(shù)

(

intflag=0;

if(((num+1)&(num))==0)

flag=l;

returnflag;

)

intcount(longx)〃定義一個(gè)求某數(shù)是2的幾次方的函數(shù)

{

intcount=0;

inttotal=l;

while(totaKx)

(

total=total*2;

++count;

)

if(total==x)

returncount;

)

intmain(void)

(

longi=2,m;

printf(〃請(qǐng)輸入一個(gè)長(zhǎng)度大于三的長(zhǎng)整數(shù):\n〃);

scanf(〃%d〃,&m);

for(;i<=m;++i)

(

if(isMasonNumber(i))

//if循環(huán)的嵌套,先判斷是梅森數(shù),再判斷是否為梅森素?cái)?shù)

13

if(isprime(i))

printf(/ZM(%d)=%ld\n//,count(i+1),i);〃按示例輸出

}

)

return0;

)

3)測(cè)試:

輸入一個(gè)較大的m可得到結(jié)果如圖

dC:\Users\2O140\Desktop\Operate\±tn20201104\6.exe-OX

12345678

M(2)=3

M(3)=7

M(5)=31

M(7)=127

M(13)=8191

M(17)=131071

M(19)=524287

Processexitedafter2.18secondswithreturnvalue0

請(qǐng)按任意就繼續(xù)..■

圖1-6程序設(shè)計(jì)題6的運(yùn)行結(jié)果

7.篩法構(gòu)造素?cái)?shù)表

1)解題思路:

先利用篩法將素?cái)?shù)的倍數(shù)篩去,得到的數(shù)組的值為1的元素的下標(biāo)即為素?cái)?shù)

通過(guò)循環(huán)結(jié)構(gòu),格下標(biāo)存入半數(shù)數(shù)組中

2)程序源代碼:

#include<stdio.h>

Sdefinescale100000〃可改變素?cái)?shù)表輸出范圍

intmainO

{longlongi,j,a[scale],prime[scale];

for(a[0]=a[l]=0,i=2;Kscale;i++)

14

a[i]=l;

for(i=2;i<scale;i++)

(

if(a[i]){

for(j=i*2:j<scale;j+=i)a[j]=0;〃篩掉素?cái)?shù)的倍數(shù)

longlongn=0;

for(i=2;i〈scale;++i)

(

if(a[i])

{prime[n]=i;++n;〃將表中的下標(biāo)(素?cái)?shù))存入素?cái)?shù)表中

})

longlongm;scanf&m);

longlongq=0;

for(;prime[q+l]。;q++)〃查找素?cái)?shù)表輸出季生素?cái)?shù)

(

if(prime[q+l]-prime[q]==2)

printf(/z(%lld,%1Id)\nz,,prime[q],prime[q+1]);

)

return0;}

3)測(cè)試輸出:

分別輸入m的值為50,150,500可得如圖結(jié)果:

ClC:\Users\20140\Desktop\Operate\Jz^L20201104\10.exe?(3C:\Users\2O140\Desktop\Operate\Jb?l20201104\10.exe

50(3,5)

(3.5)(5,7)

(11.13)

(5,7)(17.19)

(11,13)(29,31)

(17,19)(41.43)

(59,61)

(29,31)(71,73)

(41,43)(101,103)

(107,109)

(137,139)

Processexitedafter1.198secondswithreturnvalue0

信按任意鍵繼續(xù)....Processexitedafter1.765secondswithreturnvalue0

請(qǐng)按住總鍵繼續(xù)....

[1C:\Users\2O140\Desktop\Operate\±?U0201104\10.exe

廨之叫的俏:O00

(3.5)

(5,7)

(11,13)

(17.19)

(29.31)

(41,43)

(59.61)

(71.73)

(101,103)

(107,109)

(137,139)

(149.151)

(179,181)

(191,193)

(197,199)

(227,229)

(239,241)

(269.271)

(281,283)

(311.313)

(347,349)

(419.421)

(431,433)

(461,463)

Processexitedafter1.953secondswithreturnvalue0

請(qǐng)按任意鍵繼續(xù)...

圖1-7程序設(shè)計(jì)題7的運(yùn)行結(jié)果

15

8.輸出符合形式的表達(dá)式

1)解題思路:

2)程序源代碼:

#include<stdio.h>

intmainO{

intp,i=0,j=0,k=0,A[10],x;

longm=0,n=0;

scanf(〃%d〃,&p);

for(;n<=98765;n++){

x=0;

m=n;

for(i=4;i>=0;i"){〃將被除數(shù)各位存在數(shù)組中

A[i]=m%10;

m=m/10;

)

if((n%p)!=0)

continue;

else{〃當(dāng)被除數(shù)可整除輸入的數(shù)時(shí),將除數(shù)的各位存在數(shù)組中

m=n/p;

for(i=9;i>=5;i-){

A[i]=m%10;

m=m/10;

16

for(k=0;k<=8;k++){〃嵌套循環(huán),當(dāng)有重復(fù)數(shù)字時(shí)退出循環(huán)

for(j=k+l;j<=9;j++){

if(A[k]==ALj]){

x=l;

break;}

)

if(x==l)

break;

)

if(x==O){〃循環(huán)得到保存在數(shù)組中的數(shù)字,并按格式輸出

for(i=0;i<=4;i++)

printf(級(jí)d”,A[i]);

printf('/");

for(i=5;i<=9;i++)

printf(袋d”,A[i]);

printf(//=%d\n/,,p);

return0;

3)測(cè)試:

項(xiàng)目測(cè)試輸入輸出

13275168/02349=32

22439528/01647=24

46872/01953=24

36898736/01452=68

01C:\Users\2O140\Desktop\mtfirg1.exe-□X1

32

75168/02349=32

Processexitedafter1.401secondswithreturnvalue0

請(qǐng)按任意鍵繼續(xù)..?

□1C:\Users\20140\DesktopVfe命名1.exe□1C:\Users\20140\Desktop\^^€1.exe

2468

39528/01647=2498736/01452=68

46872/01953=24

Processexitedafter1.777secondswithreturnvalue0Processexitedafter1.322secondswithreturnvalue0

遣按任意鍵繼續(xù)...請(qǐng)按任意鍵繼續(xù)..■

圖1-8程序設(shè)計(jì)題8的運(yùn)行結(jié)果

17

1.4小結(jié)

通過(guò)本節(jié)有關(guān)程序設(shè)計(jì)中流程控制的程序設(shè)計(jì)題目,我進(jìn)一步地練習(xí)了如何

運(yùn)用嵌套循環(huán),掌握了用篩法求素?cái)?shù)表,但是在按照格式輸出結(jié)果,算法的實(shí)現(xiàn)

上尚還欠缺能力。

18

2數(shù)組程序設(shè)計(jì)實(shí)驗(yàn)

2.1程序改錯(cuò)與跟蹤調(diào)試

(i)單步執(zhí)行源程序的跟蹤調(diào)試

?t=0x62fe00"Programming"1#include<stdio.h>

s=0x62fe10"Language"2voidstrcate(char[],char[1:

回i=123voidstrdeIc(char[J,char);

?j=04intmain(void)

回典=owoa

50{

“Pi

?t=Ox62feOO"Programming"1#include<stdio.h>

M

gs=0x62fe10uage"2voidstrcate(char(],char[])

◎i=123voidstrdeIc(char(],char);

&j=04intmain(void)

@^t(i]=OAOOO'

5B(

Pi

由調(diào)試結(jié)果可知,當(dāng)其進(jìn)入strcate函數(shù)時(shí),字符數(shù)組t和s的內(nèi)容都是正確的。當(dāng)處在第二

個(gè)while語(yǔ)句時(shí)i=12,但是由于“Programming"的字符個(gè)數(shù)是11,因此此時(shí)應(yīng)該是在t[l1]

的位置,所以i應(yīng)該減去1;才能順利完成后續(xù)的拼接操作。而當(dāng)執(zhí)行到花括號(hào)時(shí),發(fā)現(xiàn)按預(yù)

料的一樣并未執(zhí)行正確。因?yàn)閠[ll]的值也為,\0',所以此時(shí)字符數(shù)組t的結(jié)果就像是沒(méi)有

拼接一樣,其實(shí)是從U12]開始進(jìn)行了復(fù)制操作。我們添加代碼i=i-l;后得到如下結(jié)果:

我們發(fā)現(xiàn)此時(shí)s的值輸出并不正確。

19

t=0x62fe00"ProgrammingLanguage"1#incIude<stdio.h>

s=0x62fe10',ageM2voidstrcate(char[],char|

is113voidstrdeIc(char[],char);

0J=04intmain(void)

?t[i]=o、oo(y

5E3{

6chara[]="Language",b[]

7p「intf("%s%s\n”,b,a);

08

10return0:

11L)

12

13voidstrcate(chart[],chars

14Epn

15inti?0,j?0;

16whiIe(t[i??]);

17i=i-1;

18whiIe((t[i?+]=s[j++])!n'

?9

20

21voidstrdelc(chars[],charc

22E3{

23intj,k;

24for(j?k■0;s[j]!s*\0';j+?

25if(s[j]!=c)s[k++]=s[j];

26L)

*57

(2)跟蹤進(jìn)入strdelc函數(shù)

國(guó)s=0x62fe00"ProgrammingLanguage"1#incIude<stdio.h>

0LJ=O2voidstrcate(c[].Char[

國(guó)k=0

3voidstrdeIc(c[],char);

4intmain(void)

5E3(

u

6chara[]?**Languagerb(J?

7printf("%s%s\n",b,a);

?8

?9

10return0;

11-)

12

13voidstrcate(chart[],char

14E3(

15inti?0,j?0;

16whiIe(t[i?+])

17i=i-1;

18whi1e((t(i++]

L

19)

20

21voidstrdelc(char

22E3(

23intj,k;

24fo-(j=k=O;c[j,\O';j??

?5

26L)

我們看到,初始進(jìn)入函數(shù)時(shí)值是正確的,然而最終得到的結(jié)果卻是

ProgrmmingLngugeage,正確結(jié)果是ProgrmmingLnguge,可見數(shù)組末尾多了"age”

20

三個(gè)字符。這是由于數(shù)組本該在s[k]處終止,因此,要將其值賦為‘\0'。最后

得到結(jié)果如圖:

□IC:\Users\20140\Desktop\Operate\C語(yǔ)音上機(jī)友魁第五次上機(jī)20201119\程序改錯(cuò)與痢捺調(diào)試.exe一口X

ProgrammingLanguage

ProgrannningLanguageLanguage

PrognnmingLnguge

最終代碼修改方案如下:

#include<stdio.h>

voidstrcate(char[],char[]);

voidstrdelc(char[],char);

intmain(void)

(

chara口二〃Language”,b□二〃Programming”;

printf(,z%s%s\n〃,b,a);

strcate(b,a);printf(〃%s%s\n,,>b,a);

strdelc(b,'a');printf(〃%s\n〃,b);

return0;

voidstrcate(chart[],chars[])

(

inti=0,j=0;

while(t[i++]);

此處添加代碼i=i-l;

while((t[i++]=s[j++])!-\0f);

)

voidstrdelc(chars[],charc)

intj,k;

for(j=k=0;s[j]!='\0';j++)

if(s[j]!=c)s[k++]=s[j];

2l

此處添加代碼s[k]='\O';

)

2.2程序完善與修改替換

(1)文本去重

①完善后代碼:

#include<stdio.h>

#include<string.h>

voidRemoveDuplicate(char*s);

intmain(){

charstr[200];

printf(z,Inputstrings,endofCtrl+z\n,z);

while(fgets(str,200,stdin)!=NULL){

RemoveDuplicate(str);

printf(〃%s〃,str);

)

return0;

)

voidRemoveDuplicate(char*s){

intr,w,i,len;

len=strlen(s);

for(r=w=0;r<1en;r++){

if(s[r]){

s[w++]=s[r];

for(i=r+l;i<len;i++){

if(s[i]=s[r])

s[i]='\0';

22

s[w]=\0";

運(yùn)行結(jié)果如下:

ClC:\Users\20140\Desktop\Operate\C語(yǔ)占上機(jī)能五次上機(jī)20201119、程序完善和修改苕換L1.exe-□X

Inputstrings,endofCtrl+z

12eerer

12er

husthust666!!

hust6!

'Z

Processexitedafter28.54secondswithreturnvalue0

請(qǐng)按任意鍵繼續(xù)....

②空間換時(shí)間提高效率:

#include<stdio.h>

#include<string.h>

voidRemoveDuplicate(char*s);

intmain(){

charstr[200];

printf("Inputstrings,endofCtrl+z\n〃);

while(fgets(str,200,stdin)!=NULL){

RemoveDuplicate(str);

printf(〃%s〃,str);

)

return0;

)

voidRemoveDuplicate(char*s){

inti,j,len,remainder;

intcheck[8]={0};

len=strlen(s);

for(i=j=0;i<len;i++){

remainder=s[i]%32;

if((check[s[i]?5]&(1<<remainder))==0)

s[j++]=s[i];

23

check[s[i]?5]=(1?remainder);

I

s[j]='\(r;

運(yùn)行后截圖:

ClC:\U$ers\20140\De$ktop\Operate\C?8±ai5aS!\3gfi5LtVl2020111.Z.exe-□X

Inputstrings,endofCtrl+z

12eerer

12er

husthust888!!!

hust8!

pioJ.inH

progflniin

-Z

Processexitedafter33.19secondswithreturnvalue0

請(qǐng)按任意鍵繼續(xù)...

(2)約瑟夫問(wèn)題

①完善代碼:

#include<stdio.h>

#include<string.h>

intmain(void)

(

intM,N;

scanf("%d%d”,&M,&N);

inta[M],b[M];

inti,j,k;

for(i=0;i<M;i++)

a[i]=i+l;

for(i=M,j=0;i>l;i—)

(

for(k=l;k<=N;k++)

if(++j>i-l)j=0;

b[M-i]=(j?a[j-l]:a[i-l]);

if(j)

for(k=-j;k<i;k++)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論