版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 第六次作業(yè):指針(以下題目如無特殊聲明,請(qǐng)使用指針技術(shù)實(shí)現(xiàn),盡量不要使用數(shù)組作為形參,也盡量避免使用數(shù)組下標(biāo)引用數(shù)組元素)1. 數(shù)組元素循環(huán)移位有n個(gè)整數(shù),使前面的各整數(shù)順序向后移動(dòng)m個(gè)位置,后面的m個(gè)整數(shù)則變成最前面的m個(gè)數(shù)。寫一函數(shù)實(shí)現(xiàn)以上功能。在主函數(shù)中輸入n及n個(gè)整數(shù),輸入m (m<n),調(diào)用編寫的上述函數(shù),然后輸出調(diào)整后的n個(gè)整數(shù)。#include<stdio.h>void main()void inv(int *p,int n,int m);int n,m,a20,*p;printf("please input n=");scanf(&quo
2、t;%d",&n);printf("please input %d numbers:",n);p=a;while(p<a+n)scanf("%d",p+);printf("please input m=");scanf("%d",&m);p=a;inv(a,n,m);printf("the new array:n");while(p<a+n)printf("%d ",*p+);putchar('n');void inv(i
3、nt *p,int n,int m)int i;for(i=1;i<=n;i+)*(p+n-i+m)=*(p+n-i);for(i=0;i<m;i+)*(p+i)=*(p+n+i);2. 矩陣元素的排序?qū)⒁粋€(gè)5×5的整數(shù)型矩陣中各元素重新排序。排序規(guī)則為,矩陣元素按照從左到右,從上到下的順序依次遞增,即 。要求編寫一個(gè)函數(shù)實(shí)現(xiàn)上述排序功能。在主函數(shù)中輸入該矩陣,調(diào)用編寫的上述函數(shù),然后輸出排序后的矩陣。#include<stdio.h>void main()void inv(int (*x)5);int i,j,a55;int (*p)5;printf(&qu
4、ot;please input an 5*5 array:n");p=a;for(i=0;i<5;i+)for(j=0;j<5;j+)scanf("%d",*(p+i)+j);inv(p);printf("the new array:n");for(i=0;i<5;i+)for(j=0;j<5;j+)printf("%4d",*(*(p+i)+j);putchar('n');putchar('n');void inv(int (*x)5)int i,j,t;for(i=
5、0;i<24;i+)for(j=i+1;j<25;j+)if(*(*x+i)>*(*x+j)t=*(*x+i);*(*x+i)=*(*x+j);*(*x+j)=t;return;3. 星期的查找編寫一個(gè)程序,輸入一個(gè)17之間的整數(shù),表示星期幾,然后輸出相應(yīng)的文字。例如:如用戶輸入3,則輸出“星期三”。要求:用指針數(shù)組的方法來實(shí)現(xiàn)。#include<stdio.h>void main()int n;char (*p)3;char a73="一","二","三","四","五&q
6、uot;,"六","七"printf("please input n=");scanf("%d",&n);p=a;printf("星期%sn",p+n-1);4. 字符串庫函數(shù)的實(shí)現(xiàn)請(qǐng)使用指針的方法來實(shí)現(xiàn)如下的庫函數(shù):Char * strncpy( char *s, char * t, int n) /復(fù)制t的前n個(gè)字符至sChar * strncat( char *s, char * t, int n) /連接t的前n個(gè)字符至s的末尾int strncmp( char *s, char
7、 * t, int n) /比較s和t的前n個(gè)字符并請(qǐng)編寫一個(gè)主函數(shù)來調(diào)用并測(cè)試自己編寫的庫函數(shù)。#include<stdio.h>#include<string.h>char *strncpy(char *s,char *t,int n)int i,length;length=strlen(s);for(i=0;i<n;i+)*(s+i)=*(t+i);if(length<n)*(s+n)='0'return(s);char *strncat(char *s,char *t,int n)int i,length;length=strlen(
8、s);for(i=0;i<n;i+)*(s+i+length)=*(t+i);*(s+length+n)='0'return(s);int strncmp(char *s,char *t,int n)int i;for(i=0;i<n;i+)if(*(s+i)=*(t+i)continue;else if(*(s+i)>*(t+i)return(1);break;else return(-1);break;void main()char a20,b20;int n;scanf("%s%s%d",a,b,&n);printf(&quo
9、t;%sn",strncpy(a,b,n);scanf("%s%s%d",a,b,&n);printf("%sn",strncat(a,b,n);scanf("%s%s%d",a,b,&n);printf("%dn",strncmp(a,b,n);5. 算術(shù)練習(xí)程序(指針型函數(shù))一位小朋友正在學(xué)習(xí)兩個(gè)100以內(nèi)正整數(shù)的簡(jiǎn)單運(yùn)算(加法、減法、乘法、除法),請(qǐng)編寫一個(gè)程序來幫助他學(xué)習(xí)。該程序調(diào)用一個(gè)GetRandomExpression(),由它隨機(jī)返回一個(gè)簡(jiǎn)單的表達(dá)式;然后程序提示用戶輸入表
10、達(dá)式的計(jì)算結(jié)果,并判斷答案是否正確。#include<stdio.h>#include<time.h>#include<stdlib.h>int result=1;void GetRanddomExpression(int *num1,char *a,int *num2)int n;srand(time(NULL);*num1=rand()%100+1;*num2=rand()%100+1;n=rand()%4;switch(n)case 0:while(*num2>*num1) *num2=rand()%100+1;result=(*num1)-(*
11、num2);*a='-'break;case 1:while(*num1+*num2)>100)*num2=rand()%100+1;*a='+'result=(*num1)+(*num2);break;case 2:while(*num1*(*num2)>100)*num2=rand()%100+1;*a='*'result=(*num1)*(*num2);break;case 3:while(*num1%*num2!=0)*num2=rand()%100+1;result=(*num1)/(*num2);*a='/'
12、;break;int judge(int answer)if(answer=result)return(1);else return(0);void main()int num1,num2;char a;int answer;while(result!=answer)GetRanddomExpression(&num1,&a,&num2);printf("please input the result of the expression:n%d%c%d=",num1,a,num2);scanf("%d",&answer);
13、if(judge(answer)=1)printf("you are right!");else printf("sorry,it not the right answer.n");6. 數(shù)組分區(qū)(指針作為函數(shù)參數(shù))本題由三個(gè)部分構(gòu)成(1) 編寫一個(gè)函數(shù)CountEvensAndOdds,其功能是統(tǒng)計(jì)一個(gè)整型數(shù)組中奇數(shù)和偶數(shù)的個(gè)數(shù)。該函數(shù)有4個(gè)參數(shù),整數(shù)型數(shù)組、數(shù)組的長(zhǎng)度和兩個(gè)指針(用于返回奇數(shù)、偶數(shù)的個(gè)數(shù))(2) 利用(1)中的CountEvensAndOdds函數(shù),編寫一個(gè)Partition函數(shù),其功能是找出給定長(zhǎng)度的一個(gè)整型數(shù)組中的所有奇數(shù)和偶數(shù),
14、并把它們分別保存在兩個(gè)新的整型數(shù)組中(用C語言的庫函數(shù)malloc函數(shù)動(dòng)態(tài)創(chuàng)建),然后返回這兩個(gè)新數(shù)組及其長(zhǎng)度。該函數(shù)的參數(shù)有6個(gè),整型數(shù)組、數(shù)組長(zhǎng)度、奇數(shù)數(shù)組及其長(zhǎng)度、偶數(shù)數(shù)組及其長(zhǎng)度。(3) 編寫主函數(shù),要求能夠定義一個(gè)數(shù)組,并能夠用隨機(jī)數(shù)對(duì)該數(shù)組進(jìn)行初始化,然后調(diào)用(2)中的函數(shù)Partition,將原始數(shù)組、奇數(shù)數(shù)組、偶數(shù)數(shù)組輸出。#include <stdio.h>#include<malloc.h>#include<time.h>#include<stdlib.h>void CountEvensAndOdds(int *parr,in
15、t arr_len,int *even_count,int *odds_count)int i;int count_even=0,count_odds=0;for (i=0;i<arr_len;i+) if (*(parr+i)%2)=0)count_even+;else count_odds+;*even_count=count_even;*odds_count=count_odds;void Partition(int *parr,int arr_len,int *even_arr,int *even_len,int *odds_arr,int *odds_len)int even_
16、count,odds_count,i,m=0,n=0;int count_even=0,count_odds=0;CountEvensAndOdds(parr,arr_len,&even_count,&odds_count);*even_arr=(int *)malloc(sizeof(int)*even_count);*odds_arr=(int *)malloc(sizeof(int)*odds_count);for (i=0;i<arr_len;i+)if(*(parr+i)%2)=0)*(*even_arr+m) = *(parr+i);m+;else*(*odd
17、s_arr+n) = *(parr+i);n+;*even_len=m;*odds_len=n;void print_arr(int *parr,int arr_len)int i;for(i=0;i<arr_len;i+) printf("%-3d",*(parr+i);if(i+1)%10=0)printf("n");printf("n");void main()int *parr,arr_len,i,*even_arr,even_len,*odds_arr,odds_len; srand(time(NULL);arr_le
18、n = rand()%50;parr=(int *)malloc(sizeof(int)*arr_len);printf("arr_len=%dn",arr_len);for(i=0;i<arr_len;i+)parri = rand()%100;Partition(parr,arr_len,&even_arr,&even_len,&odds_arr,&odds_len);printf("arr:n");print_arr(parr,arr_len);printf("even_arr len=%dn&quo
19、t;,even_len);printf("even_arr:n");print_arr(even_arr,even_len);printf("odds_arr len=%dn",odds_len);printf("odds_arr:n");print_arr(odds_arr,odds_len);7. 字符串壓縮(使用字符指針)編寫一個(gè)程序,輸入一個(gè)字符串,然后采用如下的規(guī)則對(duì)該字符串當(dāng)中的每一個(gè)字符進(jìn)行壓縮:(1) 如果該字符是空格,則保留該字符。(2) 如果該字符是第1次出現(xiàn)或第3次出現(xiàn)或第6次出現(xiàn),則保留該字符(3) 否則刪除該
20、字符。例如,若用戶輸入occurrence,經(jīng)過壓縮后,字符c的第2次出現(xiàn)被刪除,第1和第3次出現(xiàn)仍保留;字符r和e的第2次出現(xiàn)均被刪除,因此最后的結(jié)果為: occurrence 。#include<stdio.h>#include<malloc.h>#include<string.h>void main()char *p,str50='0'int n,i,j=0,num26=0;gets(str);n=strlen(str);p=(char*)malloc(n*sizeof(char);for(i=0;stri!=0;i+)if(stri=
21、' ')*(p+j+)=stri;else if(numstri-97=0|numstri-97=2|numstri-97=5)*(p+j+)=stri;numstri-97+;else numstri-97+;for(i=0;i<j;i+)printf("%c",*(p+i);putchar('n'); 8. 字符查找(使用指針數(shù)組)用一個(gè)指針數(shù)組存儲(chǔ)6種計(jì)算機(jī)語言FORTRAN、PASCAL、BASIC、C、COBOL、SMALLTALK,根據(jù)用戶輸入的若干個(gè)開頭字符,顯示所有相匹配的計(jì)算機(jī)語言,例如:輸入”BA”,顯示”BASIC
22、”;輸入”C”,顯示”C”和”COBOL”。#include<stdio.h>#include<string.h>void main()char *a6="FORTRAN","PASCAL","BASIC","C","COBOL","SMALLTALK"char b6,*p;int length,i,k;printf("please input some charactors:");scanf("%s",b);l
23、ength=strlen(b);for(i=0;i<6;i+)for(p=b;p<b+length;p+,ai+)if(*p=*ai)k=i;else k=6;break;if(k=i)printf("%sn",ai-length);9. 字符串排序(使用多級(jí)指針)用指向指針的指針的方法對(duì)于輸入的5個(gè)字符串進(jìn)行排序并輸出。(假設(shè)每個(gè)字符串最大長(zhǎng)度不超過20)/用指向指針的指針的方法對(duì)于輸入的5個(gè)字符串進(jìn)行排序并輸出。#include<stdio.h>#include<string.h>void sort(char *name,int n)
24、char *temp;int i,j,k;for(i=0;i<n-1;i+)k=i;for(j=i+1;j<n;j+)if(strcmp(namek,namej)>0)k=j;if(k!=i)temp=namei;namei=namek;namek=temp;void print(char *name,int n)int i;for(i=0;i<n;i+)printf("%sn",namei);void main()char *name5;char a520;int n=5,i;printf("please input five str:n
25、");for(i=0;i<n;i+)scanf("%s",ai);namei=*(a+i);printf("nthe new str:n");sort(name,n);print(name,n);10. 最長(zhǎng)公共字串(提示使用strstr()庫函數(shù))編寫一個(gè)程序,求給定三個(gè)字符串的最長(zhǎng)公共子串。假設(shè)給定的三個(gè)字符串分別為:What is local bus?Name some local bus.A Local bus is high speed I/O bus close to the processor.#include<std
26、io.h>#include<string.h>int str_match(char *s1,char *s2,int len)while(len>0)if(*s1!=*s2)return 0;s1+;s2+;len-;return 1;void main()int i,j,s,l,flag1,flag2;char str360="what the local bus?","Name some local bus.","A Local bus is high speed I/O bus close to the proce
27、ssor." int len3;for(i=0;i<3;i+)leni=strlen(stri);for(l=len0;l>0;l-)for(s=0; s+l-1<len0;s+)flag1=1;for(i=1;i<3;i+)flag2 = 0;for(j=0;j+l-1<leni;j+)if(str_match(str0+s,stri+j,l)flag2=1;break;if(!flag2)flag1=0;break;if(flag1)goto L;L:printf("最長(zhǎng)公共子串為:");for(i=0;i<l;i+)pri
28、ntf("%c",*(str0+s+i);putchar('n');/以下為選做題目11. 網(wǎng)絡(luò)警察作為一名網(wǎng)絡(luò)警察,你的任務(wù)是監(jiān)視電子郵件,看其中是否有一些敏感的關(guān)鍵詞。不過有些狡猾的犯罪嫌疑人會(huì)改變某些單詞的字母順序,以逃避檢查。請(qǐng)編寫一個(gè)程序,發(fā)現(xiàn)這種調(diào)整過順序的關(guān)鍵詞。程序的輸入有兩行,第一行為關(guān)鍵詞列表,第二行為待檢查的句子。程序的輸出為在該句子中所找到的經(jīng)過順序調(diào)整的關(guān)鍵詞。例如輸入:guns mines missilesaameric ssell snugs dan iimsssle ot sit neeemis則輸出為:guns missil
29、es#include<stdio.h>#include<string.h>int FindCode(char keyword100, int string_num, char string100)int k,letter126=0,letter226=0;for(k=0;k<string_num;k+)letter1keywordk-97+,letter2stringk-97+;for(k=0;k<26;k+)if(letter1k!=letter2k)break;if(k=26)return 1;return 0;void Part(char keywor
30、d100, char temp100, int *Size)char *p;int i=0,j;p=temp;while(*p!='0')j=0;while(*p!=' '&&*p!='0')keywordij+=*(p+);keywordi+j='0'while(*p=' ')p+;*Size=i;void main()char keyword100100, string100100,temp100;int key_num,string_num;int i,j;gets(temp);Part(keyword,temp,&key_num);gets(temp);Part(string,temp,&string_num);for(i=0;i<key_num;i+)for(j=0;j<string_num;j+)if(FindCode(keywordi,strlen(keywordi),stringj)printf("%s ",keywordi);printf("n");12. 動(dòng)態(tài)三維數(shù)組a、編寫一個(gè)函數(shù)CreateGrid(int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育行業(yè)環(huán)境科學(xué)家勞動(dòng)合同范本3篇
- 安裝工程合同的工程質(zhì)量控制措施3篇
- 市場(chǎng)咨詢合同撰寫要點(diǎn)3篇
- 污水處理廠建造師聘任合同
- 旅游者風(fēng)險(xiǎn)評(píng)估協(xié)議
- 城市公園綠化景觀提升合同
- 園林綠化單包工施工合同
- 柔道館照明電照施工合同
- 碼頭護(hù)岸毛石擋土墻施工協(xié)議
- 地?zé)崮荛_發(fā)簡(jiǎn)易合同范本
- 2024年度租賃期滿退房檢查清單:租戶與房東的交接確認(rèn)單
- 第八版糖尿病
- 機(jī)器人設(shè)備巡檢管理制度
- 帶式運(yùn)輸機(jī)傳動(dòng)裝置的設(shè)計(jì)
- DB50T 1689-2024 綠茶型老鷹茶加工技術(shù)規(guī)范
- 初級(jí)消防設(shè)施操作員實(shí)操題庫 (一)
- 國家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 4-02-01-01 軌道列車司機(jī)(動(dòng)車組司機(jī))人社廳發(fā)2019121號(hào)
- CURTIS1232-1234-1236-SE-SERIES交流控制器手冊(cè)
- 2024年國家開放大學(xué)(電大)-混凝土結(jié)構(gòu)設(shè)計(jì)(A)考試近5年真題集錦(頻考類試題)帶答案
- 2024年山東省臨沂蘭山法院招聘司法輔助人員56人歷年高頻500題難、易錯(cuò)點(diǎn)模擬試題附帶答案詳解
- 期末綜合素質(zhì)達(dá)標(biāo)(試題)-2024-2025學(xué)年人教精通版英語五年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論