C語言程序設計實驗報告-數組_第1頁
C語言程序設計實驗報告-數組_第2頁
C語言程序設計實驗報告-數組_第3頁
C語言程序設計實驗報告-數組_第4頁
C語言程序設計實驗報告-數組_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

如有你有幫助,請購買下載,謝謝!一、實驗項目名稱數組二、實驗目的1.掌握數組的基本概念,包括:數組的定義、數組的類型、數組的初始化、數組的賦值、數組元素下標的范圍、數組元素的正確以及引用數組元素的輸入/輸出。2.掌握字符數組與字符串的使用方法。理解字符數組與其它數組的區(qū)別、理解字符串及其特點。掌握常用的字符串處理庫函數的用法并清楚對字符串的簡單處理。3.掌握與數組相關的算法,包括排序算法和查找算法等。三、實驗內容進行有關數組的程序設計。具體內容:1.編程實現:對任意一個一維數組,從中找出數組元素的最大值和最小值。要求:(1)數組為整型數組(10個元素)。(2)使用scanf函數實現數組元素的輸入。在輸入前給出必要的提示。(3)輸出時給出必要的說明,首先輸出原始的10個元素,大值在數組中的位置、最小值以及最小值在數組中的位置。(4)如果現改為20個元素的數組,怎樣修改程序?修改程序后,運行程序進行檢查。如果需要數組元素不斷改變,應怎樣修改程序?換行后輸出最大值以及最2.編程實現:在給定的字符串中查找滿足條件的第一個字符。要求:(1)字符串采用初始化的方式處理。(2)通過scanf函數讀入一(3)在字符串中查找該字符,如果存在該字符,輸出該字符在字符串中的位置以及相應的說明。如果不存在該字符,則要給出相應的信息。3.編程實現:首先任意輸入一個大于2且小于10的整數n,再輸入一個任意字符。個由n決定的二維整型數組(nn),形成nn階矩陣,將矩陣中最大元素所在的行和最小元素所在的行對調后,再輸出該矩陣(注意:數組不允許動態(tài)定義)。例如:原始數據:n=4123435910811141615276要求:結果數據:811141635910123415276(1)本題中所涉及到的循環(huán)都采用for語句。(2)在輸入/輸出時進行必要的說明。1頁

如有你有幫助,請購買下載,謝謝?。?)對輸入的2~10之間的整數(例如4)以n=4的格式輸出。(4)輸入一個nn矩陣(假定最大值與最小值不在同一行上),輸出原始矩陣數據(按上述矩陣形式)。(5)查找最大值與最小值,將矩陣中最大元素所在的行和最小元素所在的行對調,輸出對調后的矩陣數據。(6)修改程序,對最大值與最小值可能出現在一行上的情況做出說明。(7)對n為3,4,5時,輸入數組元素是要注意哪些問題?執(zhí)行程序,檢查程序的正確性。4.編程實現“折半查找”的過程。折半查找的處理過程是:在一個數據已排好序的數組中,首先比較關鍵字與數組中間的元素,如果兩者相等,則查找結束;如果前者比后者小,則要查找的數據必然在數組的前半部,此后只在需數組的前半部中繼續(xù)如果前者的數值比后者大,則要查找的數據必然在數組的后半部,此后只在需數組的后半部繼續(xù)進折半查找;行折半查找。要求:(1)設定一個數組存放20個數據,用賦初值的方法在程序中給出(假設這些數據已排序)。(2)用scanf函數輸入一個要找的數。(3)對查找的結果給出相應的說明,如果找到該數,則給出該數是數組中第幾個元素。如果該數不在數組中,則輸出“無此數”信息。(4)任意輸入一些數據,檢查程序的正確性。(5)修改程序,設定輸入的數據是無序的,采用scanf函數的形式輸入,首先要對這些無序的數據進行排序,然后再采用“折半查找”。最后通過測試幾組差別較大的數據檢查程序的正確性。(6)修改程序,改為函數調用的形式。編寫一個選擇法排序函數,對無序數據進行排序;編寫一個查找函數對已排好序的數據進行查找。在主函數中輸入數據(無序),調用上述函數,輸出結果。5.編程實現:三個學生、五門課程的成績分別存放出每個學生的平均成績存放在該數組的最后一列的對應行上。計算單科的成績在4×6矩陣的前3×5列,計算總和存放在最后一行的對應列上,并輸出單科成績的平均分。輸入/輸出格式舉例如下:Input(輸入成績):6587685678<cr>8394678591<cr>7175698489<cr>Output(輸出結果):65837187947568676956858478918970.584.077.52頁

如有你有幫助,請購買下載,謝謝!219.0256.0204.0258.0232.00average:73.085.368.086.077.3要求:(1)數組類型為實型,輸入成績由scanf函數實現。(2)輸出已輸入的原始成績數據(3×5)。(3)計算每個學生的平均成績以及單科的成績總和并按要求填入到數組中,輸出填入結果后的數組(4×6)。(4)j計算單科平均成績6.編寫函數catStr(charstr1[],charstr2[])用于進行兩個字符串的編寫函數cmpStr()用于判斷兩個字符串的后輸出。連接,編寫函數lenStr()用于統(tǒng)計一個字符串的長度。大小。要求:(1)不允許使用字符處理庫函數。(2)在主函數以初始化的方式輸入兩個字符串str1、str2。調用函數lenStr()計算字符串的長度。(3)調用函數cmpStr()判斷兩個字符串的大小,如果str1大于等于str2,調用函數catStr()進行兩個字符串的連接,將str1連接在str2后,將str2連接在str1后,調用函數lenStr()統(tǒng)計連接后的字符串長度。(4)在主函數中輸出兩個原始字符串和各自的長度以及處理后字符串及其長度。否則,四、實驗步驟在編程軟件中寫如以下代碼:一、#include<stdio.h>voidmain(){inta[10],i,j,k,max,min;printf("請輸入10個數:\n");for(i=0;i<10;++i)scanf("%d",&a[i]);printf("原始數據:");for(i=0;i<10;++i)printf("%d",a[i]);printf("\n");max=a[0];/*初始化max和min*/min=a[0];for(i=0;i<10;++i){if(a[i]>=max)3頁

如有你有幫助,請購買下載,謝謝!max=a[i];if(a[i]<=min)min=a[i];/*找最大值和最小值*/}printf("最大值為for(i=0;i<10;++i)/*應對有多個最值的情況if(a[i]==max)printf("第%d個",i+1);printf("數,printf("最小值為");*/%d\n",max);");for(i=0;i<10;++i)if(a[i]==min)printf("第%d個",i+1);printf("數,%d",min);}修改為20個元素的方案:將程序中所有的10改為20即可。如果數組元素不斷改變,只需將代碼中的10改成元素個數即可。二、#include<stdio.h>#include<string.h>voidmain(){intj,n;chari;charc[]={"Iamastudent"};/*初始化字符串*/printf("給定字符串為:%s\n請輸入要查找的字符:",c);scanf("%c",&i);n=strlen(c);/*得到函數for(j=0;j<n;++j)if((int)c[j]==(int)i)給定字符串的長度*/{printf("字符串中滿足條件的第一個字符為第%d個字符",j+1);break;/*找到符合條件的第一個字符,結束循環(huán)*/}if(j>=n)printf("字符串中不存在滿足條件的字符!");}三、4頁

如有你有幫助,請購買下載,謝謝!#include<stdio.h>voidmain(){intn,j,k,z,x,max,min,a[10][10];printf("請輸入一個2到10之間的數:");scanf("%d",&n);printf("請輸入一個n*n數組:\n");for(j=0;j<n;++j)for(k=0;k<n;++k)scanf("%d",&a[j][k]);printf("原始數組為:n=%d\n",n);for(j=0;j<n;++j){for(k=0;k<n;++k)printf("%5d",a[j][k]);/*輸出原始數組*/printf("\n");/*輸出n個數后換行,使數組為n*n的格式*/}max=a[0][0];/*初始化最大值和最小值*/min=a[0][0];z=0;x=0;for(j=0;j<n;++j)for(k=0;k<n;++k)if(a[j][k]>max){max=a[j][k];z=j;/*得到最大值的行數*/}for(j=0;j<n;++j)for(k=0;k<n;++k)if(a[j][k]<min){min=a[j][k];x=j;/*得到最小值的行數*/}for(j=0;j<n;++j){k=a[z][j];a[z][j]=a[x][j];a[x][j]=k;/*交換最大值所在行和最小值所在行*/}printf("結果數據:\n");for(j=0;j<n;++j)/*輸出結果*/{for(k=0;k<n;++k)printf("%5d",a[j][k]);5頁

如有你有幫助,請購買下載,謝謝!printf("\n");}}修改程序得到最大值和最小值所在行,只需在程序末尾加上語句:printf(“最大值在第%d行,最小值在第%d行”,z,x);在輸入數組元素時要注意盡量不要重復出現最大值和最小值,程序會以最值中第一個出現的值作為最值。四、#include<stdio.h>voidmain(){inta[20];intn,j,i,k;printf("給定的數組為:\n");for(n=0;n<20;++n){a[n]=2*n+3;/*給定數組的初始化*/printf("%d",a[n]);}printf("\n");printf("請輸入要查找的數:");scanf("%d",&j);intm=20;for(n=0;n<=m;)/*折半查找*/{i=(n+m)/2;if(a[i]<j)n=i+1;elseif(a[i]>j)m=i-1;elseif(a[i]=j){printf("該數在數組的第%d位上if(n>m)printf("無此數",i+1);break;}/*輸出找到的數,結束循環(huán)*/}");}按要求修改后的程序為:#include<stdio.h>voidarr();/*聲明排序intsea(intj);/*聲明折半查找函數inta[20];/*定義全局變量函數*/*/*/voidmain(){intn,j,i,h;printf("請輸入20個數據:\n");6頁

如有你有幫助,請購買下載,謝謝!for(n=0;n<20;++n){scanf("%d",&a[n]);/*輸入無序的20個數據*/}arr();/*調用排序函數*/printf("\n請輸入要查找的數:");scanf("%d",&j);h=sea(j);/*調用折半查找函數*/if(h==0)printf("無此數");elseprintf("該數在已排序數組的第%d位",h);}voidarr()/*排序函數*/{intz,n;for(intn=0;n<20;++n)for(intk=0;k<19-n;++k)if(a[k]>a[k+1]){z=a[k];a[k]=a[k+1];a[k+1]=z;}printf("將數組排序,得:\n");for(n=0;n<20;++n)printf("%d",a[n]);/*輸出已排序的數組*/}intsea(intj){intn,i,h,m=20;for(n=0;n<=m;){i=(n+m)/2;if(a[i]<j)n=i+1;elseif(a[i]>j)m=i-1;elseif(a[i]=j){h=i+1;break;}/*找到該數后停止循環(huán)*/}7頁

如有你有幫助,請購買下載,謝謝!if(n>m)h=0;returnh;/*返回h值*/}五、#include<stdio.h>voidmain(){intj,k;floata[3][5],d[3]={0},b[6]={0},c[5]={0};printf("Input(輸入成績):\n");for(j=0;j<3;++j)for(k=0;k<5;++k)scanf("%f",&a[j][k]);for(j=0;j<3;++j)for(k=0;k<5;++k)d[j]=d[j]+a[j][k]/5;for(k=0;k<5;++k)for(j=0;j<3;++j)b[k]=b[k]+a[j][k];for(j=0;j<3;++j)b[5]=b[5]+d[j];for(k=0;k<5;++k)c[k]=b[k]/3;printf("\nOutput(輸出結果):");for(j=0;j<3;++j){printf("\n");for(k=0;k<5;++k)printf("%-7.0f",a[j][k]);printf("%-7.1f",d[j]);}printf("\n");for(k=0;k<6;++k)printf("%-7.1f",b[k]);printf("\nAverage:\nfor(k=0;k<5;++k)printf("%-7.1f",c[k]);");}六、#include<stdio.h>voidcatStr(charstr1[],charstr2[]);/*聲明連接兩個字符串的函數*/intlenStr(charstr[]);/*聲明統(tǒng)計長度的函數*/intcmpStr(charstr1[],charstr2[]);/*聲明比較字符串大小的函數*/charstr3[]={""};voidmain(){intn,j,k,len1,len2,len3;8頁

如有你有幫助,請購買下載,謝謝!charc,str1[]={""},str2[]={""};printf("請輸入str1:");gets(str1);printf("請輸入str2:");gets(str2);printf("str1原長為:%d\nstr2原長為:%d\n",lenStr(str1),lenStr(str2));/*調用統(tǒng)計長度的函數并輸出原始長度*/j=cmpStr(str1,str2);/*調用比較大小函數*/if(j==1)/*將小字符串連接在大字符串后面*/{printf("\"%s\"大于\"%s\"\n",str1,str2);catStr(str1,str2);/*調用連接兩個字符串的函數*/printf("合成的字符串為:%s\n",str3);}else{printf("\"%s\"小于\"%s\"\n",str1,str2);catStr(str2,str1);printf("合成的字符串為:%s\n",str3);}printf("合成的字符串長度為:%d",lenS

溫馨提示

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

評論

0/150

提交評論