第一篇:c語(yǔ)言第六次作業(yè)
第六次作業(yè):指針
(以下題目如無(wú)特殊聲明,請(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ù)。寫(xiě)一函數(shù)實(shí)現(xiàn)以上功能。
在主函數(shù)中輸入n及n個(gè)整數(shù),輸入m(m #include scanf(“%d”,p++);printf(“please input m=”);scanf(“%d”,&m);p=a;inv(a,n,m);printf(“the new array:n”);while(p printf(“%d ”,*p++);putchar('n');} void inv(int *p,int n,int m){ int i;for(i=1;i<=n;i++) *(p+n-i+m)=*(p+n-i);for(i=0;i *(p+i)=*(p+n+i);} 2.矩陣元素的排序 將一個(gè)5×5的整數(shù)型矩陣中各元素重新排序。排序規(guī)則為,矩陣元素按照從左到右,從上到下的順序依次遞增,即 要求編寫(xiě)一個(gè)函數(shù)實(shí)現(xiàn)上述排序功能。 在主函數(shù)中輸入該矩陣,調(diào)用編寫(xiě)的上述函數(shù),然后輸出排序后的矩陣。 #include 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');} a0,0?a0,1?a0,2?a0,3?a0,4?a1,0?a1,1?.......a4,4。putchar('n');} void inv(int(*x)[5]){ int i,j,t;for(i=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.星期的查找 編寫(xiě)一個(gè)程序,輸入一個(gè)1~7之間的整數(shù),表示星期幾,然后輸出相應(yīng)的文字。例如:如用戶輸入3,則輸出“星期三”。要求:用指針數(shù)組的方法來(lái)實(shí)現(xiàn)。 #include }p=a;printf(“星期%sn”,p+n-1); 4.字符串庫(kù)函數(shù)的實(shí)現(xiàn) 請(qǐng)使用指針的方法來(lái)實(shí)現(xiàn)如下的庫(kù)函數(shù): Char * strncpy(char *s, char * t, int n) //復(fù)制t的前n個(gè)字符至s Char * strncat(char *s, char * t, int n) //連接t的前n個(gè)字符至s的末尾 int strncmp(char *s, char * t, int n) //比較s和t的前n個(gè)字符 并請(qǐng)編寫(xiě)一個(gè)主函數(shù)來(lái)調(diào)用并測(cè)試自己編寫(xiě)的庫(kù)函數(shù)。#include *(s+i)=*(t+i);if(length