網(wǎng)站排名提升工具免費(fèi)北京seo業(yè)務(wù)員
鶴壁市浩天電氣有限公司
2026/01/22 10:22:43
網(wǎng)站排名提升工具免費(fèi),北京seo業(yè)務(wù)員,門戶網(wǎng)站模板下載,關(guān)鍵詞搜索愛站網(wǎng)練習(xí)1#xff1a;動態(tài)數(shù)組#xff08;數(shù)組與指針#xff09;
#xff08;一#xff09;題目
一開始未知數(shù)組長度#xff0c;根據(jù)要求創(chuàng)建不同類型的指針#xff0c;并且使用指針創(chuàng)建相應(yīng)長度的數(shù)組#xff0c;然后再完成不同的要求
若要求創(chuàng)建整數(shù)數(shù)組#xff0c;計算…練習(xí)1動態(tài)數(shù)組數(shù)組與指針一題目一開始未知數(shù)組長度根據(jù)要求創(chuàng)建不同類型的指針并且使用指針創(chuàng)建相應(yīng)長度的數(shù)組然后再完成不同的要求若要求創(chuàng)建整數(shù)數(shù)組計算數(shù)組內(nèi)所有數(shù)據(jù)的平均值若要求創(chuàng)建字符數(shù)組找出數(shù)組內(nèi)的最大字母若要求創(chuàng)建浮點(diǎn)數(shù)數(shù)組找出數(shù)組的最小值要求程序整個過程不能使用數(shù)組下標(biāo)從數(shù)組創(chuàng)建、輸入到搜索、比較、計算到輸出都必須使用指針要求使用通過指針動態(tài)創(chuàng)建數(shù)組使用malloc函數(shù)輸入第一行輸入t表示有t個測試實(shí)例第二行先輸入一個大寫字母表示數(shù)組類型I表示整數(shù)類型C表示字符類型F表示浮點(diǎn)數(shù)類型然后輸入n表示數(shù)組長度。第三行輸入n個數(shù)據(jù)依次輸入t個實(shí)例輸出每個根據(jù)不同的數(shù)組類型輸出相應(yīng)的結(jié)果二解題思路按照題目要求即可三參考代碼#includestdio.h#includestdlib.h#includectype.h// 用于判斷字母isalphaintmain(){intt;scanf(%d,t);while(t--){chartype;intn;// 讀取數(shù)組類型長度%c前加空格跳過前序空白符回車/空格scanf( %c %d,type,n);intorig_nn;// 保存原始長度避免循環(huán)修改后丟失switch(type){// 整數(shù)數(shù)組計算平均值caseI:{int*arr(int*)malloc(orig_n*sizeof(int));int*parr;while(n--){scanf(%d,p);p;}// 3. 計算總和重置指針計數(shù)器parr;norig_n;doublesum0.0;while(n--){sum*p;p;}printf(%g
,sum/orig_n);//要使用四舍五入法free(arr);//記得freebreak;}// 字符數(shù)組找最大字母caseC:{char*arr(char*)malloc(orig_n*sizeof(char));char*parr;while(n--){charc;scanf( %c,c);// 加空格跳過空格 不然連空格也讀進(jìn)來了//只存字母if(isalpha(c)){*pc;p;}}// 3. 找最大字母重置指針計數(shù)器parr;norig_n;charmax_chA-1;// 初始值比所有字母小while(n--){if(isalpha(*p)*pmax_ch){max_ch*p;}p;}printf(%c
,max_ch);free(arr);break;}// 浮點(diǎn)數(shù)數(shù)組找最小值caseF:{double*arr(double*)malloc(orig_n*sizeof(double));double*parr;while(n--){scanf(%lf,p);p;}// 3. 找最小值重置指針計數(shù)器parr;norig_n;doublemin_val1e20;// 初始值設(shè)為極大數(shù)while(n--){if(*pmin_val){min_val*p;}p;}printf(%g
,min_val);//依舊四舍五入free(arr);break;}}}return0;}練習(xí)2 指針數(shù)組一題目已知每個月份的英文單詞如下要求創(chuàng)建一個指針數(shù)組數(shù)組中的每個指針指向一個月份的英文字符串要求根據(jù)輸入的月份數(shù)字輸出相應(yīng)的英文單詞1月 January2月 February3月 March4月 April5月 May6月 June7月 July8月 August9月 September10月 October11月 November12月 December輸入第一行輸入t表示t個測試實(shí)例接著每行輸入一個月份的數(shù)字依次輸入t行輸出每行輸出相應(yīng)的月份的字符串若沒有這個月份的單詞輸出error二解題思路同理按照題目要求即可注意指針數(shù)組的創(chuàng)建方法三參考代碼#includestdio.hintmain(){char*month[12]{January,February,March,April,May,June,July,August,September,October,November,December};intt0;scanf(%d,t);while(t--){intn0;scanf(%d,n);if(n1n12){printf(%s
,month[n-1]);}elseprintf(error
);}return0;}練習(xí)3指針和字符數(shù)組一題目輸入三個字符串通過指針讀取各個字符串的子串子串是指字符串中連續(xù)的一小部分把它們合并成一個新字符串要求三個字符串的創(chuàng)建和輸入可以使用數(shù)組也可以不用輸入后根據(jù)三個字符串的子串的長度計算出新字符串的長度使用動態(tài)數(shù)組的方法創(chuàng)建新的字符串并且使用指針讀取三個字符串的不同部分并且復(fù)制到新字符串中要求整個過程都不能使用數(shù)組下標(biāo)使用指針輸出新的字符串輸入第一行輸入t表示有t個測試實(shí)例連續(xù)三行輸入三個字符串每個字符串都包含10個字符連續(xù)三行每行輸入數(shù)字a和b表示每個子串的開始和結(jié)束位置。注意字符串的位置是按照一般意義從1開始計算和編程中的數(shù)組位置不同。例如字符串a(chǎn)bcdefg開始位置是3結(jié)束位置是5那么子串就是cde依次輸入t個實(shí)例輸出每行輸出合并后的新字符串二解題思路按照題意創(chuàng)建指針即可三參考代碼#includestdio.h#includestdlib.hintmain(){intt0;scanf(%d,t);while(t--){chars1[11],s2[11],s3[11];inta1,b1,a2,b2,a3,b3;scanf( %s %s %s,s1,s2,s3);scanf(%d %d %d %d %d %d,a1,b1,a2,b2,a3,b3);char*ps1s1a1-1;char*ps2s2a2-1;char*ps3s3a3-1;intnb1-a1b2-a2b3-a33;intn1b1-a11;intn2b2-a21;intn3b3-a31;char*s0(char*)malloc(n*sizeof(char));char*ps0;while(n1--){*p*ps1;p;ps1;}while(n2--){*p*ps2;p;ps2;}while(n3--){*p*ps3;p;ps3;}printf(%s
,s0);free(s0);}return0;}練習(xí)4 矩陣左轉(zhuǎn)一題目輸入一個2*3的矩陣將這個矩陣向左旋轉(zhuǎn)90度后輸出比如現(xiàn)在有2*3矩陣 1 2 34 5 6向左旋轉(zhuǎn)90度后的矩陣變?yōu)? 62 51 4要求除了矩陣創(chuàng)建和數(shù)據(jù)輸入可以使用數(shù)組和數(shù)組下標(biāo)的方法其他過程對矩陣的任何訪問都必須使用指針提示m行n列的二維矩陣第i行第j列的元素與首元素的距離為i*nj序號從0開始計算輸入第一行輸入t表示有t個測試實(shí)例連續(xù)兩行輸入一個2*3的矩陣的數(shù)據(jù)依次輸入t個實(shí)例輸出依次輸出左轉(zhuǎn)后的矩陣結(jié)果在輸出的每行中每個數(shù)據(jù)之間都用空格隔開最后一個數(shù)據(jù)后面也帶有空格二解題思路題目要求使用指針?biāo)员绢}使用行指針指向矩陣的一整行當(dāng)行指針移動一位時就移動了一行此時就能夠利用指針來模擬二維數(shù)組來進(jìn)行數(shù)組的寫入和讀取操作三參考代碼#includestdio.hintmain(){intt0;scanf(%d,t);while(t--){intmatrix[2][3]{0};/* int* ROW matrix[0]; 還是指向一維數(shù)組首元素地址不是行指針 */int(*p_row)[3]matrix;//這才是真正的行指針for(inti0;i2;i,p_row){int*col*p_row;//獲取到這一行的地址for(intj0;j3;j,col){scanf(%d,col);}}//記得重置回首行p_rowmatrix;for(inti2;i0;i--)//列{for(intj0;j2;j)//行{intval*(*(p_rowj)i);printf(%d ,val);}printf(
);}}return0;}練習(xí)5字符串比較指針與函數(shù)一題目編寫一個函數(shù)比較兩個字符串參數(shù)是兩個字符指針要求顯式定義例如char *S char *T比較字符串S和T的大小。如果S大于T則返回1如果S小于T則返回-1如果S與T相等則返回0。比較規(guī)則1.把兩個字符串的相同位置上的字符進(jìn)行比較字符的大小比較以ASCII值為準(zhǔn)2.在比較中如果字符串S的字符大于字符串T的字符的數(shù)量超過小于的數(shù)量則認(rèn)為S大于T如果等于則S等于T如果小于則S小于T例如S為aaccddT為eebbbb每個位置比較得到S前兩個字母都小于T但后4個字母都大于T最終認(rèn)為S大于T3.如果兩個字符串長度不同則更長的字符串為大在主函數(shù)中輸入兩個字符串并調(diào)用該函數(shù)進(jìn)行判斷在判斷函數(shù)中必須使用函數(shù)參數(shù)的指針進(jìn)行字符比較輸入輸入t表示有t個測試實(shí)例接著每兩行輸入兩個字符串依次輸入t個實(shí)例輸出每行輸出一個實(shí)例的比較結(jié)果二解題思路①判斷長度 如果不相等直接返回②如果相等比較計數(shù) 再比較計數(shù)的大小三種情況 如果再相等就返回0三參考代碼#includestdio.h#includestring.hintcmp(char*s,char*t){intlen_sstrlen(s);intlen_tstrlen(t);char*pss;char*ptt;intcnts0;intcntt0;if(len_slen_t)return1;elseif(len_slen_t)return-1;while(*ps!){if(*ps*pt)cnts;elseif(*ps*pt)cntt;ps;pt;}if(cntscntt){return1;}elseif(cntscntt){return-1;}else{return0;}}intmain(){intq;scanf(%d,q);getchar();while(q--){chars[1000]{0};chart[1000]{0};fgets(s,sizeof(s),stdin);fgets(t,sizeof(t),stdin);//刪去末尾的換行符改為終止符s[strcspn(s,
)];t[strcspn(t,
)];intresultcmp(s,t);printf(%d
,result);}return0;}練習(xí)6取子串一題目寫函數(shù)char *substrchar *sint startloc int len功能是取字符串s的從statrlocstartloc1,2,…,開始長度為len的子串并返回求得的子串。如果從startloc開始的子串長度小于len求得的子串為從startloc到s串的結(jié)束。如果startloc大于s串長度返回空指針。根據(jù)樣例編寫子函數(shù)測試取子串函數(shù)。輸入測試次數(shù)t每組測試數(shù)據(jù)為串s(假設(shè)長度小于50不含空格整數(shù)startloc0 整數(shù)len輸出每組測試數(shù)據(jù)輸出求得的子串。沒有求得子串輸出NULL二解題思路沒啥思路注意一下操作細(xì)節(jié)即可請看代碼三參考代碼#includestdio.h#includestring.h#includestdlib.hchar*substr(char*s,intstartloc,intlen){char*ret(char*)malloc((len1)*sizeof(char));//需要返回字符數(shù)組char*p_retret;char*startsstartloc-1;//轉(zhuǎn)為0為基準(zhǔn)的開始位置char*pstart;intlen_sstrlen(s);intlen_retlen;if(startloclen_s)returnNULL;else{while(*p!len_ret--)//包含兩種情況請仔細(xì)品味畫數(shù)軸更方便{*p_ret*p;p;p_ret;}ret[len];//注意要加終止符不然越界}returnret;}intmain(){intt0;scanf(%d,t);getchar();while(t--){chars[1000];intstartloc,len;scanf(%s,s);scanf(%d %d,startloc,len);char*psubstr(s,startloc,len);if(pNULL){printf(NULL
);}else{printf(%s
,p);free(p);//記得釋放}}return0;}練習(xí)7求矩陣最大最小值一題目定義一個函數(shù)用一級指針接收一個任意行任意列的矩陣并返回該矩陣元素的最大和最小值.輸入矩陣的行數(shù) 矩陣的列數(shù)矩陣各元素的值輸出最大值最小值二解題思路將二維轉(zhuǎn)化為一維降維處理更便捷三參考代碼#includestdio.h#includestdlib.hintmain(){intn,m;scanf(%d%d,n,m);intsumn*m;int*matrix(int*)malloc(sum*sizeof(int));int*pmatrix;for(inti0;isum;i){scanf(%d,p);p;}pmatrix;intmin19999999;intmax-19999999;for(inti0;isum;i){if(*pmin)min*p;if(*pmax)max*p;p;}printf(%d
%d,max,min);free(matrix);return0;}