版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)報(bào)告指導(dǎo)老師: 專(zhuān)業(yè): 班級(jí): 學(xué)號(hào): 姓名: 日期:2011-05-29 重慶郵電大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院實(shí)驗(yàn)一實(shí)驗(yàn)名稱(chēng):一維數(shù)組程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康模?、 熟練掌握使用一維數(shù)組編程的方法。2、 熟練掌握排序算法。實(shí)驗(yàn)內(nèi)容:1、 調(diào)試示例輸入一個(gè)整數(shù)n(0n9)和一組數(shù),再輸入一個(gè)整數(shù),把x插入到這個(gè)數(shù)據(jù)中,使該組數(shù)據(jù)仍然有序。源程序:略調(diào)試好的程序:#includeint main()int i,j,n,x,a10;printf(輸入數(shù)據(jù)的個(gè)數(shù)n:);scanf(%d,&n);printf(輸入%d個(gè)整數(shù):,n);for(i=0;in;i+)scanf(%d,&ai);p
2、rintf(輸入要插入的整數(shù):);scanf(%d,&x);for(i=0;iai)continue;j=n-1;while(j=i)aj+1=aj;j-;ai=x;break;if(i=n)an=x;for(i=0;i=n;i+)printf(%dt,ai);return 0;2、 編程題1輸入一個(gè)正整數(shù)n(0n=10),再輸入n個(gè)整數(shù),輸出平均值(保留兩位小數(shù))。程序代碼:#includeint main()int i,n,sum=0,a10;float av;printf(輸入數(shù)據(jù)的個(gè)數(shù)n:);scanf(%d,&n);printf(輸入%d個(gè)整數(shù):,n);for(i=0;in;i+)s
3、canf(%d,&ai);for(i=0;in;i+)sum+=ai;av=(float)sum/n;printf(%0.2ft,av);return 0;3、 編程題2輸入一個(gè)正整數(shù)n(0n=10),再輸入n個(gè)整數(shù),按逆序輸出這些數(shù)。程序代碼#includeint main()int i,n,a10;printf(輸入數(shù)據(jù)的個(gè)數(shù)n:);scanf(%d,&n);printf(輸入%d個(gè)整數(shù):,n);for(i=0;i=0;i-)printf(%dt,ai);return 0;4、 編程題3輸入一個(gè)正整數(shù)n(0n=10),再輸入n個(gè)整數(shù),輸出最大值及其下標(biāo)(設(shè)最大值唯一,下標(biāo)從零開(kāi)始)。程序代
4、碼:#includeint main()int i,j,n,x,a10;printf(輸入數(shù)據(jù)的個(gè)數(shù)n:);scanf(%d,&n);printf(輸入%d個(gè)整數(shù):,n);for(i=0;in;i+)scanf(%d,&ai);x=a0;for(i=0;ix)x=ai;j=i;printf(最大數(shù):%dt下標(biāo):%dt,x,j);return 0;5、 編程題4輸入一個(gè)正整數(shù)n(0n=10),再輸入n個(gè)整數(shù),將最小值與第一個(gè)數(shù)交換,最大值與最后一個(gè)數(shù)交換,然后輸出交換后的n個(gè)數(shù)。程序代碼:#includeint main()int i,n,j=0,k=0,x,y,a10;printf(輸入數(shù)據(jù)的
5、個(gè)數(shù)n:);scanf(%d,&n);printf(輸入%d個(gè)整數(shù):,n);for(i=0;in;i+)scanf(%d,&ai);y=a0;x=a0;for(i=0;ix)x=ai;j=i;if(aiy)y=ai;k=i;aj=a0;a0=y;ak=ai-1;ai-1=x;for(i=0;in;i+)printf(%dt,ai);return 0;6、 編程題5輸入一個(gè)正整數(shù)n(0n=10),再輸入n個(gè)整數(shù),再將它們從小到大排序后輸出。程序代碼:#includeint main()int i,n,j=0,x,a10;printf(輸入數(shù)據(jù)的個(gè)數(shù)n:);scanf(%d,&n);printf(
6、輸入%d個(gè)整數(shù):,n);for(i=0;in;i+)scanf(%d,&ai);x=a0;for(i=0;in-1;i+)for(j=i;jaj+1)x=ai;ai=aj+1;aj+1=x;else continue;for(i=0;in;i+)printf(%dt,ai);return 0;實(shí)驗(yàn)總結(jié):本次C語(yǔ)言上機(jī)實(shí)驗(yàn),主要是對(duì)一維整數(shù)數(shù)組進(jìn)行處理,通過(guò)本次實(shí)驗(yàn),我熟練掌握了一維數(shù)組元素的處理組排序算法(冒泡排序法和選擇排序法)。實(shí)驗(yàn)二實(shí)驗(yàn)名稱(chēng):字符串程序設(shè)計(jì) 【實(shí)驗(yàn)1】判斷回文 從鍵盤(pán)輸入一串字符,判斷該字符串是否是回文,即該字符串從左向右讀,與從右向左讀都一樣,如“ABCBA”、“ABC
7、CBA”。編程思路:定義指針start和end,分別指向字符串首、尾。分別從串首、尾開(kāi)始向中間比較,若指針?biāo)缸址煌?,則不是回文。源程序: #include#includeint is(char*ptr);void main()char str100;printf(input a stringn);gets(str);if(is(str)printf(%s is a Palindromen,str);elseprintf(%s is a not palindromen,str);int is(char*ptr)int i,a,flag=0;a=(int)strlen(ptr)-1;/數(shù)組下標(biāo)
8、從0開(kāi)始!for(i=0;a=0;i+,a-)if(ptra=ptri)flag=1;elseflag=0;break;return flag;【實(shí)驗(yàn)2】刪除排序已知某已排好序的數(shù)組,其元素為1,3,5,7,9,從鍵盤(pán)輸入x的值,若數(shù)組中存在與x相等的元素,則刪除。編程思路:搜索整個(gè)數(shù)組判斷x是否存在于數(shù)組中;如果在,定位待刪除元素的下標(biāo) ;從該下標(biāo)開(kāi)始,將所有后續(xù)元素往前移。注意移動(dòng)順序應(yīng)從最后一個(gè)元素開(kāi)始,還是先從待刪除元素的位置開(kāi)始! 源程序:#include#includeint *Delete(int a,int n,int x)int i,pos,k;for(i=0;in;i+)i
9、f(ai=x)pos=i; break; for(k=pos;kn-1;k+)ak=ak+1;return a;int main()int arr5=1,3,5,7,9,x,i;printf(input x= );scanf(%d,&x);printf(before delete);for(i=0;i5;i+)printf(%4d,arri);printf(n);Delete(arr,5,x);printf(after delete);for(i=0;i4;i+)printf(%4d,arri);printf(n);return 0;實(shí)驗(yàn)總結(jié):通過(guò)這次實(shí)驗(yàn),了解了字符串的特點(diǎn),它在數(shù)組中有結(jié)束
10、標(biāo)志“0”,而其長(zhǎng)度又不將起算在內(nèi),牢記這點(diǎn)對(duì)編程速率很有幫助。實(shí)驗(yàn)三實(shí)驗(yàn)名稱(chēng):指針和二維數(shù)組【實(shí)驗(yàn)1】對(duì)N個(gè)字符串進(jìn)行排序編程思路:第一種實(shí)現(xiàn)方式:要求從鍵盤(pán)輸入N個(gè)字符串,將其存儲(chǔ)在二維數(shù)組中,在主函數(shù)中進(jìn)行排序。第二種實(shí)現(xiàn)方式:要求定義指針數(shù)組指向N個(gè)字符串,調(diào)用函數(shù)sort()進(jìn)行排序。sort()具有如下原型:/*函數(shù)返回值:多級(jí)指針類(lèi)型char*,返回指針數(shù)組首地址形式參數(shù):指針p,char *,用于操縱N個(gè)字符串line,int,表示字符串個(gè)數(shù)*/char * sort(char * p,int linel)源程序:#include #include #define N 5int
11、 main() /*定義二維數(shù)組*/int i,k,j;char aN30,temp20; /*從鍵盤(pán)輸入N 個(gè)字符串*/ printf(從鍵盤(pán)輸入%d個(gè)字符串n,N);for(i = 0;i N;i+)gets(ai); for(i=0;iN-1;i+) k = i; /*若當(dāng)前字符串大于 strk,記錄其下標(biāo)*/ for(j=i+1;jN;j+)if(strcmp(ak,aj)0)/ai改為akk=j; if(k!=i) /*交換字符串 strk和 stri*/ strcpy(temp,ai);strcpy(ai,ak);strcpy(ak,temp); puts(nAfter sort:
12、); for( i = 0;i N;i+) puts(ai); return 0; 【實(shí)驗(yàn)2】找眾數(shù)定義函數(shù)實(shí)現(xiàn): (1)輸出整數(shù)數(shù)組中重復(fù)出現(xiàn)的數(shù)和重復(fù)的次數(shù)。(2)找出整數(shù)數(shù)組中的眾數(shù)(即出現(xiàn)次數(shù)最多的數(shù)) 并編寫(xiě)相應(yīng)的主函數(shù)測(cè)試之。編程思路:先對(duì)數(shù)組排序,排序后數(shù)組內(nèi)的元素如有相同值就會(huì)緊鄰存儲(chǔ)。 定義maxCount、maxI、seek,分別表示最多重復(fù)次數(shù)、最多重復(fù)次數(shù)對(duì)應(yīng)的元素下標(biāo)、當(dāng)前正在查找的數(shù)值,將兩數(shù)置0。從頭掃描整個(gè)數(shù)組,統(tǒng)計(jì)每個(gè)元素出現(xiàn)的次數(shù),如果出現(xiàn)次數(shù)大于maxCount,記錄其出現(xiàn)次數(shù)和該元素對(duì)應(yīng)下標(biāo)。掃描完畢即可找到眾數(shù)及其出現(xiàn)次數(shù)。源程序:#include #
13、include #define N 6 int main() int aN; int i,j,k,temp; int maxCount = 0,maxI = 0,seek = 0,count = 0; for(i = 0;i N ;i+) printf(請(qǐng)輸入第%d 個(gè)數(shù):,i + 1); scanf(%d,a + i); /*選擇法對(duì)數(shù)組排序*/ for(i=0;iN-1;i+) k=i; for(j=i;jaj)/ai改為ak k=j; if(i!=k) temp=ai;ai=ak;ak=temp; for(i = 0,seek = a0;i maxCount)maxCount=count
14、;maxI=i-1; count = 0; count+; seek = ai; printf(nmaxNumber = %d,maxCount = %dn,amaxI,maxCount); return 0; 實(shí)驗(yàn)總結(jié):本次實(shí)驗(yàn)運(yùn)用了選擇法對(duì)數(shù)組進(jìn)行排序,不管是二維數(shù)組,還是一維數(shù)組,其思路是一樣的,只是具體的實(shí)現(xiàn)有所不同,比如比較字符串要用函數(shù)strcmp()。實(shí)驗(yàn)四實(shí)驗(yàn)名稱(chēng):結(jié)構(gòu)體【實(shí)驗(yàn)1】計(jì)算橢圓面積 已知坐標(biāo)系統(tǒng)中兩點(diǎn)p1、p2構(gòu)成的矩形是橢圓的外切矩形,如圖3-1所示。定義結(jié)構(gòu)體struct ellipse struct point int x; int y; p1,p2; dou
15、ble a ; double b ; ; 從鍵盤(pán)輸入p1、p2的坐標(biāo)值,計(jì)算橢圓面積,已知積計(jì)算公式為:S = ab。程序代碼:#include #include struct ellipsestruct pointint x;int y;p1,p2;double a ;double b ;typedef struct ellipse ell;int main()ell e;double s;printf(請(qǐng)輸入左上角頂點(diǎn)坐標(biāo):);/*輸入坐標(biāo)*/scanf(%d%d,&e.p1.x,&e.p1 .y);printf(請(qǐng)輸入右下角頂點(diǎn)坐標(biāo):);/*輸入坐標(biāo)*/scanf(%d%d,&e.p2.
16、x,&e.p2.y);/*計(jì)算橢圓面積*/e.a=abs(e.p1 .y-e.p2 .y)/2.0;/取整函數(shù)abs()e.b=abs(e.p1 .x-e.p2 .x)/2.0;s=3.14*e.a*e.b;printf(area = %lfn,s);return 0;實(shí)驗(yàn)總結(jié):這次實(shí)驗(yàn)用到了結(jié)構(gòu)體的嵌套定義,通過(guò)實(shí)驗(yàn),讓我更深入了解結(jié)構(gòu)體的定義,使用,訪問(wèn)等操作。實(shí)驗(yàn)五實(shí)驗(yàn)名稱(chēng):指針強(qiáng)化1【實(shí)驗(yàn)1】字符串逆序存儲(chǔ)編寫(xiě)一個(gè)函數(shù)inverse,實(shí)現(xiàn)將字符串逆序存放,即原字符串為“abcdef”,將其重新存儲(chǔ)為“fedcba”。實(shí)驗(yàn)思路:從字符串中第一個(gè)字符開(kāi)始,使其和最后一個(gè)字符交換,第二個(gè)字符
17、和倒數(shù)第二個(gè)字符交換,一直到字符串中間的字符為止。 程序代碼:#include #include char * inverse(char *p)/*定義需要用到的變量*/int i,len;char tmp;len = strlen(p);/*將原字符串逆序存儲(chǔ)于p所指數(shù)組中*/for(i=len-1;i=len/2;i-)tmp=*(p+i);*(p+i)=*(p+len-1-i);*(p+len-1-i)=tmp;return p;int main()char str100;printf(請(qǐng)輸入字符串:);gets(str);puts(inverse(str);return 0;【實(shí)驗(yàn)2】
18、字符串逆序存儲(chǔ)刪除字符串s中所有出現(xiàn)的與變量c相同的字符。程序代碼:#include #include char * squeez(char *s,char c)int i,j;for(i = j = 0;istrlen(s);i+)/_請(qǐng)?zhí)羁誣if(si != c) sj=si;/_請(qǐng)?zhí)羁誣j+;sj = 0;return s;int main()char s100,c;printf(請(qǐng)輸入字符串:);gets(s);printf(請(qǐng)輸入變量:);c = getchar();puts(squeez(s,c);return 0;實(shí)驗(yàn)總結(jié):這次與前面的某次實(shí)驗(yàn)的內(nèi)容差不多,用到了知識(shí)點(diǎn)是指針,字
19、符串。實(shí)驗(yàn)六實(shí)驗(yàn)名稱(chēng):指針強(qiáng)化2【實(shí)驗(yàn)1】實(shí)現(xiàn)庫(kù)函數(shù)atoi已知C標(biāo)準(zhǔn)庫(kù)函數(shù)atoi實(shí)現(xiàn)將字符串轉(zhuǎn)換為整數(shù)的功能,如: char str = ; printf(對(duì)應(yīng)的整數(shù)為:%dn,atoi(str); 自定義函數(shù):int atoi(char *str),使其實(shí)現(xiàn)同名標(biāo)準(zhǔn)庫(kù)函數(shù)的功能。實(shí)驗(yàn)思路:先考慮最簡(jiǎn)單的情況,字符串中只有數(shù)字,如果是負(fù)數(shù),字符串第一個(gè)元素是負(fù)號(hào)。定義變量sign,若字符串中第一個(gè)元素是,則sign值為-1,并讓字符串指針指向下一元素。指針指向字符串“-”的第一個(gè)數(shù)字字符1,將其轉(zhuǎn)換為對(duì)應(yīng)數(shù)字1,放入變量t中,指針下移至后一元素2,再將其轉(zhuǎn)換為對(duì)應(yīng)數(shù)字2,將t中1變成10,
20、再加2,如此循環(huán),至字符串結(jié)束。返回變量t*sign即可。程序代碼:#include#includeint atoi(char *str);int main() char str100; printf(請(qǐng)輸入字符串:); gets(str); /此處不能否替換成 scanf()! printf(對(duì)應(yīng)的整數(shù)為:%dn,atoi(str); return 0; int atoi(char*str)int i=0,a,s=0,sign=0,p=1;for(i=0;*(str+i)!=0&p;i+)if(*(str+i)=-&(*(str+i+1)=48&*(str+i+1)=48&*(str+i)=
21、57)a=*(str+i)-48;s=s*10+a;if(*(str+i+1)=57&p)p=0;if(sign)s*=sign;return s;【實(shí)驗(yàn)2】譯碼編寫(xiě)change函數(shù)實(shí)現(xiàn):將大于0小于1000的阿拉伯?dāng)?shù)字轉(zhuǎn)換為羅馬數(shù)字輸出。阿拉伯?dāng)?shù)字和羅馬數(shù)字對(duì)應(yīng)關(guān)系如下: 并編寫(xiě)相應(yīng)的主函數(shù)測(cè)試該函數(shù)。實(shí)驗(yàn)思路:先考慮最簡(jiǎn)單的情況,字符串中只有數(shù)字,如果是負(fù)數(shù),字符串第一個(gè)元素是負(fù)號(hào)。定義變量sign,若字符串中第一個(gè)元素是,則sign值為-1,并讓字符串指針指向下一元素。指針指向字符串“-”的第一個(gè)數(shù)字字符1,將其轉(zhuǎn)換為對(duì)應(yīng)數(shù)字1,放入變量t中,指針下移至后一元素2,再將其轉(zhuǎn)換為對(duì)應(yīng)數(shù)字2
22、,將t中1變成10,再加2,如此循環(huán),至字符串結(jié)束。返回變量t*sign即可。程序代碼:#include/*定義數(shù)據(jù)結(jié)構(gòu)code 存儲(chǔ)羅馬字符*/ typedef struct char s3;/別忘了0int a;COD;int change(COD *code,int num);int main() COD code13=M,1000,CM,900,D,500,CD,400,C,100,XC,90,L,50,XL,40,X,10,IX,9,V,5,IV,4,I,1; int x; printf(請(qǐng)輸入一個(gè)阿拉伯?dāng)?shù)字:); scanf(%d,&x); if(x0&x4000)change(c
23、ode,x); else printf(輸入的阿拉伯?dāng)?shù)字超出范圍!n); return 0; int change(COD *code,int num)int i,a,last=0;while(num)a=num/(*(code+last).a;if(a=0)last+;elsefor(i=0;ia;i+)printf(%s,(*(code+last).s);num%=(*(code+last).a;/有點(diǎn)類(lèi)似進(jìn)制型問(wèn)題putchar(10);return 0;實(shí)驗(yàn)總結(jié):這次實(shí)驗(yàn)譯碼實(shí)驗(yàn)給我的印象比較深,開(kāi)始在算法上有點(diǎn)糾結(jié),后來(lái)想到了以上程序中的算法,其實(shí)是個(gè)逐減和取余的問(wèn)題,另外還用到了結(jié)
24、構(gòu)體,指針等知識(shí),綜合性還是比較大的。但算法是面向過(guò)程程序設(shè)計(jì)的靈魂,想到算法就好辦了。實(shí)驗(yàn)七實(shí)驗(yàn)名稱(chēng):模擬1簡(jiǎn)單題:計(jì)算卡片的最大數(shù)量將一摞卡片按照?qǐng)D1所示疊放,使其中一部分懸于桌外(卡片數(shù)量為n,每張卡片長(zhǎng)度為1)。當(dāng)n=1時(shí),僅有一張卡片,其最大可懸空長(zhǎng)度為1/2;當(dāng)n=2時(shí), 置于底部的那張卡片其懸空長(zhǎng)度是1/3,而置于頂部的卡片其懸空長(zhǎng)度是1/2,故懸于桌外的總長(zhǎng)度是1/2 + 1/3 = 5/6??梢酝茢?,當(dāng)有n張卡片時(shí),懸空部分的總長(zhǎng)度是:1/2 + 1/3 + 1/4 + . + 1/(n + 1)。從鍵盤(pán)輸入一個(gè)最大懸空長(zhǎng)度值,判斷該長(zhǎng)度下最多能疊放幾張卡片。圖1 卡片最大可
25、懸空長(zhǎng)度示意圖程序代碼:#includeint main() int i,maxl;float l,sum=0;printf(input length:n);scanf(%f,&l);for(i=1;suml;i+)sum+=(floata)1/(i+1);maxl=i;printf(最多能放%d張。n,maxl);return 0; 高難度題:圖書(shū)管理(可選用結(jié)構(gòu)體數(shù)組或鏈表完成)圖書(shū)館的書(shū)對(duì)應(yīng)的數(shù)據(jù)類(lèi)型定義如下:struct book Char name_of_book100; Char author25; ; 編寫(xiě)函數(shù)實(shí)現(xiàn): (1)統(tǒng)計(jì)某一作者編寫(xiě)了幾本書(shū)。(2)將所有書(shū)的記錄存儲(chǔ)到文件
26、a.txt。然后編寫(xiě)相應(yīng)的主函數(shù)調(diào)用這兩個(gè)函數(shù)。程序代碼:#include#include#includetypedef struct bookchar book_name50, author20;struct book *next;BOOK;/*輸入鏈表單元內(nèi)容*/void input(BOOK *p)printf(book name:n);scanf(%s,p-book_name);printf(please input the author name:n);scanf(%s,p-author); /*創(chuàng)建一個(gè)鏈表單元*/BOOK *creat_node()BOOK *p;p=(BOOK
27、*)malloc(sizeof(BOOK);if(p = NULL) printf(No enough memory !);exit(0);input(p);p-next=NULL;return p;/*創(chuàng)建一個(gè)鏈表*/BOOK *creat_list()BOOK *head=NULL,*tail=NULL,*p;char str4;printf(List creating.n);doprintf(Do you want to continue (yes/no) :);scanf(%s,str);if(strcmp(str,yes)=0)p=creat_node();if(head=NULL)
28、head=tail=p;continue;tail-next=p;tail=p;if(strcmp(str,yes)!=0&strcmp(str,no)!=0)printf(You must input yes or no.n);/getchar();continue;if(strcmp(str,no)=0)break;/getchar();while(1);printf(List create end.nn);return head;/*輸出一個(gè)鏈表頭部*/void print_a_head()printf(bname authorn);/*輸出鏈表*/int print_list(BOOK
29、 *book)BOOK *p=book;if(book=NULL)printf(no records!n);return (0);print_a_head();while(p!=NULL)printf(%s;t%s;n,book-book_name,book-author);p=p-next;putchar(10);return (0);/*查找統(tǒng)計(jì)鏈表name*/int count(BOOK *book,char name)int count=0;BOOK *p=book;while(p!=NULL)if(strcmp(p-author,name)=0)count+;p=p-next;ret
30、urn count;/*輸入外部*/int output(BOOK *book)FILE *fp;BOOK *p=book;if(fp=fopen(a.txt,w)=NULL)printf(can not open!);return -1;while(p!=NULL)fputs(p-book_name,fp);fputc(32,fp);fputs(p-author,fp);fputc(10,fp);p=p-next;return 0;int main() char name20;BOOK *book;book=creat_list();/print_list(book);printf(輸入某作
31、者的名字:n);scanf(%s,name);printf(%s寫(xiě)的的書(shū)數(shù):%dn,name,count(book,name);output(book);return 0; 實(shí)驗(yàn)總結(jié):這次試驗(yàn)的第一題算法上想得到的話能很開(kāi)做出來(lái)?!皥D書(shū)管理(可選用結(jié)構(gòu)體數(shù)組或鏈表完成)”這題用到的知識(shí)點(diǎn)比較多,綜合性也比較大,和我們之前布置的一道作業(yè)題目很相似,我用了動(dòng)態(tài)鏈表+文件做這道題,算法上基本沒(méi)什么難度,就是工作量比較大,做出來(lái)的代碼也很長(zhǎng),這樣編程的速率就很重要了,要求編程者各方面的能力都必須過(guò)硬,比如打字、對(duì)知識(shí)點(diǎn)的熟練程度、編程調(diào)試技巧等。實(shí)驗(yàn)八實(shí)驗(yàn)名稱(chēng):文件【實(shí)驗(yàn)1】抓交通肇事犯(復(fù)習(xí)循環(huán))一
32、輛卡車(chē)交通肇事后逃逸。現(xiàn)場(chǎng)有三人目擊事件,但是都沒(méi)有記住車(chē)號(hào),只記下車(chē)號(hào)的一些特征。甲說(shuō):牌照的前兩位數(shù)字是相同的;乙說(shuō):牌照的后兩位數(shù)字是相同的,但與前兩位不同;丙是位數(shù)學(xué)家,他說(shuō):四位車(chē)號(hào)組成的數(shù)字剛好是一個(gè)整數(shù)的平方。請(qǐng)根據(jù)以上線索求出車(chē)號(hào)的四位數(shù)字。程序代碼:#include #include int main()int i,j,k,num;for(i=0;i=9;i+)for(j=0;j=9;j+)if(i=j) continue;num=1100*i+11*j;for(k=0;k=(int)sqrt(num);k+)if(num=k*k)printf(The number is:
33、%6dn,num);【實(shí)驗(yàn)2】寫(xiě)入數(shù)據(jù)至文件 從鍵盤(pán)輸入一個(gè)字符串,將其中的小寫(xiě)字母全部轉(zhuǎn)換為大寫(xiě)字母,然后輸出到磁盤(pán)文件“test”中保存。輸入的字符串以“!”結(jié)束。程序代碼:#include #include void PutToFile(char *FileName); void ReadFromFile(char *FileName); void PutToFile(char *FileName) char ch; FILE *fp = fopen(FileName,w); if(fp = NULL) printf(打開(kāi)文件失敗!n); exit(EXIT_FAILURE); prin
34、tf(請(qǐng)輸入數(shù)據(jù):); while(ch=getchar()!=!) /*當(dāng)前輸入字符不是!*/ if(ch96&chx和p-y賦值,再將該節(jié)點(diǎn)連接到head指針?biāo)告湵砦膊浚ň唧w辦法見(jiàn)8-0)。定義函數(shù)void DestroyLink(pt * head)實(shí)現(xiàn)鏈表的銷(xiāo)毀。具體辦法是:讓指針p指向頭指針head所指的第一個(gè)節(jié)點(diǎn),此時(shí)p所指節(jié)點(diǎn)即為本次循環(huán)要銷(xiāo)毀的當(dāng)前節(jié)點(diǎn),然后讓頭指針指向下一個(gè)節(jié)點(diǎn),即head = head -next,最后free(p)。這樣就銷(xiāo)毀了一個(gè)節(jié)點(diǎn)。利用循環(huán)即可按此方法消除所有節(jié)點(diǎn)。定義函數(shù)void PrintLink(pt * head)實(shí)現(xiàn)鏈表的打印。具體辦法是
35、:用p遍歷整個(gè)鏈表所有節(jié)點(diǎn),每遍歷一個(gè)節(jié)點(diǎn),即打印當(dāng)前節(jié)點(diǎn)的橫縱坐標(biāo),直到p指向鏈表的最后一個(gè)節(jié)點(diǎn)。定義函數(shù)double CalcLen(pt *head)實(shí)現(xiàn)折線長(zhǎng)度的計(jì)算。具體辦法是:定義指針pr、p,分別指向第一節(jié)點(diǎn)和第二節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn),計(jì)算兩個(gè)節(jié)點(diǎn)的距離,累加到累加器中,再讓pr、p分別挪向下一結(jié)點(diǎn),指向第二節(jié)點(diǎn)和第三節(jié)點(diǎn),在計(jì)算它們的距離,再進(jìn)行累加,直到p指向最后一個(gè)節(jié)點(diǎn)。最后返回累加器的結(jié)果。程序代碼:#include #include #include #include struct point int x; /橫坐標(biāo) int y; /縱坐標(biāo) struct point *ne
36、xt; ; typedef struct point PT; void PrintLink(PT * head) PT *p = head; puts(打印所有點(diǎn)的坐標(biāo):); puts(-); while(p) printf(%d,%d)n ,p - x , p - y ); p = p-next; PT * CreateLink()/前插法PT *p,*head=NULL;int i=0;while(getchar()=n&ix=rand()%101-1;p-y=rand()%101-1;p-next=head;head=p;i+;printf(%d,%d)n,p-x,p-y);return
37、 head; double CalcLen(PT * head) double length=0;PT * p1=head,* p2=head-next;while(p2!=NULL)length+=sqrt(pow(p2-x-p1-x),2)+pow(p2-y-p1-y),2);p1=p1-next;p2=p2-next;return length; void DestroyLink(PT * head)/脫節(jié)再釋放 PT * p=head,*p1; while(p!=NULL) p1=p;p=p-next;p1-next=NULL;free(p1); printf(成功釋放鏈表!n); i
38、nt main() PT * head = CreateLink(); double length; srand(time(NULL); PrintLink(head); length = CalcLen(head); printf(length = %lfn,length); DestroyLink(head); /這個(gè)函數(shù)沒(méi)有,考試至少扣 5 分! return 0; 實(shí)驗(yàn)總結(jié):這次試驗(yàn)主要練習(xí)鏈表處理,把那些相關(guān)的知識(shí)點(diǎn)記牢了,加上前面的編程的經(jīng)驗(yàn)積累,雖然難度是比較大的,但多練,多實(shí)踐,總會(huì)有收獲的。實(shí)驗(yàn)十實(shí)驗(yàn)名稱(chēng):綜合程序設(shè)計(jì)1【任務(wù)1】獲取當(dāng)前系統(tǒng)日期和時(shí)間已知標(biāo)準(zhǔn)C庫(kù)文件中,有如
39、下結(jié)構(gòu)體和函數(shù)可以獲取系統(tǒng)當(dāng)前的日期和時(shí)間: (1)與系統(tǒng)時(shí)間和日期相關(guān)的結(jié)構(gòu)體 struc tm int tm_sec; /秒,0-59 int tm_min; /分,0-59 int tm_hour; /時(shí),0-23 int tm_mday; /天數(shù),1-31 int tm_mon; /月數(shù),0-11 int tm_year; /自1900的年數(shù) int tm_wday; /自星期日的天數(shù)0-6 int tm_yday; /自1月1日起的天數(shù),0-365 int tm_isdst; /是否采用夏時(shí)制,采用為正數(shù); (2)獲取時(shí)間的兩個(gè)函數(shù)long time(long *tloc) /本函數(shù)給出自格林威治時(shí)間1970年1月1日凌晨至現(xiàn)在所經(jīng)/過(guò)的秒數(shù),并將該值存于tloc所指的單元中 struct tm *localtime(long *clock) /把clock所指的時(shí)間(如函數(shù)time()返回的時(shí)間) /轉(zhuǎn)換成當(dāng)?shù)貥?biāo)準(zhǔn)時(shí)間,并以結(jié)構(gòu)體tm形式返回程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 爬架生產(chǎn)管理制度
- 植絨車(chē)間生產(chǎn)規(guī)章制度
- 工貿(mào)企業(yè)生產(chǎn)管理制度
- 2025北京大學(xué)深圳研究生院培訓(xùn)中心培訓(xùn)專(zhuān)員招聘5人備考題庫(kù)(廣東)及答案詳解一套
- 生產(chǎn)經(jīng)營(yíng)類(lèi)管理制度
- 噴漆生產(chǎn)設(shè)備安全制度
- 安全教育生產(chǎn)培訓(xùn)制度
- 供水企業(yè)生產(chǎn)管理制度
- 扶貧辦安全生產(chǎn)制度
- 耐火材料生產(chǎn)規(guī)章制度
- 合肥市軌道交通集團(tuán)有限公司招聘筆試題庫(kù)及答案2025
- 《智慧水電廠建設(shè)技術(shù)規(guī)范》
- GB/T 46275-2025中餐評(píng)價(jià)規(guī)范
- 2025年6月大學(xué)英語(yǔ)四級(jí)閱讀試題及答案
- 信訪工作系列知識(shí)培訓(xùn)課件
- 壓力變送器拆校課件
- 2025年高考真題分類(lèi)匯編必修二 《經(jīng)濟(jì)與社會(huì)》(全國(guó))(原卷版)
- 2026屆高考英語(yǔ)二輪復(fù)習(xí):2025浙江1月卷讀后續(xù)寫(xiě) 課件
- 2.3.2 中國(guó)第一大河-長(zhǎng)江 課件 湘教版地理八年級(jí)上冊(cè)
- 2025貴州省某大型國(guó)有企業(yè)招聘光伏、風(fēng)電項(xiàng)目工作人員筆試備考題庫(kù)及答案解析
- 導(dǎo)致老年人跌倒的用藥風(fēng)險(xiǎn)研究
評(píng)論
0/150
提交評(píng)論