p=a;
printf(\for(;p
printf(\for(;p
printf(\void px(int *q,int n) { int *i,*j,*k; for(i=q;i for(j=i+1;j if(k!=i) { *i+=*k; *k=*i-*k; *i=*i-*k; } } } 6. #include void main() { static int a[2][3],b[3][2],result[2][2]; int *p[3],i,j,k; p[0]=a[0];p[1]=b[0];p[2]=result[0]; //三个指针分别指向三个二维数组的起始地址 printf(\请输入第一个矩阵:\\n\ for(i=0;i<2;i++) // 通过嵌套循环输入第一个矩阵 { printf(\输入新的一行,每行三个整型数\\n\ for(j=0;j<3;j++) scanf(\ } printf(\第二个矩阵:\\n\ for(i=0;i<3;i++) // 通过嵌套循环输入第二个矩阵 { printf(\输入新的一行,每行三个整型数\\n\ for(j=0;j<2;j++) scanf(\ } //下面的三重循环将两个矩阵乘起来 for(i=0;i<2;i++) for(j=0;j<2;j++) //前两重循环穷举了resultij for(k=0;k<3;k++) result[i][j]+=(*(p[0]+3*i+k))*(*(p[1]+2*k+j)); // aik*bkj ,结果累加入resultij for(i=0;i<2;i++) // 输出结果 { printf(\ 21 for(j=0;j<2;j++) printf(\ } 7. #include void main() { char *p[7]={\\ int code; printf(\ scanf(\ printf(\} 8. #include #include void PrintArray(int * a, int n) { int i; for(i=0; i void BubbleSort(int a[], int n) { int i,j,tmp; int flag; int count = 0; printf(\ PrintArray(a,n); for(i=0; i flag = 0; for(j=0; j if(a[j] > a[j+1]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; flag = 1; } } count++; printf(\ PrintArray(a,n); if(flag == 0) { return; } } } void main() { 22 int *a,n=5,i; a =(int *)malloc(n*sizeof(int)); for(i=0; i 9. #include #include void swap(char *p1,char *p2) { char p[80]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); } main() { char n1[80],n2[80],n3[80],*p1,*p2,*p3; p1=n1; // 指针p1指向字符串n1 p2=n2; // 指针p2指向字符串n2 p3=n3; // 指针p3指向字符串n3 scanf(\//输入字符串p1,p2和p3 if(strcmp(p1,p2)>0) swap(p1,p2); if(strcmp(p1,p3)>0) swap(p1,p3); if(strcmp(p2,p3)>0) swap(p2,p3); printf(\// 利用指针输出结果 } 10. #include void main() { char str1[50],str2[50]; char *ps1=str1,*ps2=str2; //指针ps1和ps2分别指向字符串str1和str2 printf(\ //输入提示 scanf(\ //输入第一个字符串 printf(\ //输入提示 scanf(\ //输入第二个字符串 while(*ps1!='\\0'&&*ps2!='\\0') { if(*ps1!=*ps2) //逐一比较两字符串中的字符,发现不等时跳出循环 break; ps1++; //指针从当前位置向后移动一个位置 ps2++; //指针从当前位置向后移动一个位置 } if(*ps2>*ps1) printf(\ else if(*ps2<*ps1) printf(\ else printf(\} 11. #include 23 main() { int len; char *str[20]; printf(\scanf(\len=length(str); printf(\} length(p) char *p; { int n; n=0; while(*p!='\\0') { n++; p++; } return n; } 12. #include char *month(int n) // 定义字符型指针数组 { char *name[]={\ \ return((n<1 || n>12)? name[0] : name[n]); } main() { int n; printf(\ scanf(\ printf(\ } 13. #include #include char *word[]={\#define NUM (sizeof(word)/sizeof(char *)) #define LINES 256 #define MAXLEN 1000 void del_word(char *s,int n,int len) { while (*(s+n)=*(s+n+len)) n++; } int getline(char *s,int len) { 24 int c; char *p=s; while (--len>0 && (c=getchar())!='\\n') *s++=c; *s='\\0'; return(s-p); } void writelines(char *lineptr[],int nlines) { int i; printf(\删除后的文本段:\\n\ for (i=0;i printf(\} int index(char s[],char t[]) { int i,j,k; for (i=0;s[i]!='\\0';i++) { for (j=i,k=0;t[k]!='\\0' && s[j]==t[k];j++,k++); if (t[k]=='\\0') return(i); } return(-1); } int readlines(char *lineptr[],int maxlines) { int len,nlines=0; char *p,line[MAXLEN]; printf(\输入一段文本:\\n\ while ((len=getline(line,MAXLEN))>1) if (nlines>maxlines) return(-1); else if ((p=(char *)malloc(len+1))==NULL) return(-1); else { line[len]='\\0'; strcpy(p,line); lineptr[nlines++]=p; } return(nlines); } main() { char *lineptr[100],*p; int i,j,k,nlines; if ((nlines=readlines(lineptr,100))>0) { for (i=0;i 25