{
printf(\ }
printf(\ } } }
9.6用指向一维数组的指针做函数参数
#include
void sort(char (*s)[6]);//一维数组的指针做函数参数 int i;
char str[10][6];
char (*p)[6];//定义一维数组的指针做函数参数 printf(\ for(i=0;i<10;i++) scanf(\
p=str;//将str一维数组指针,赋值给p; sort(p);
printf(\ for(i=0;i<10;i++) printf(\ return 0; }
void sort(char (*s)[6])//s指向一维数组的指针做函数参数; {
.. ..
int i,j;
char temp[6], *t; t=temp;
for(i=0;i<9;i++)//i应该小于9;如果小于10,那么就比较了9+1次;按照冒泡法则, for(j=0;j<9-i;j++)//第一次比较需要9次就是i=0到i=8共九次;第二次需要比较8次;依次类推;
if(strcmp(s[j],s[j+1])>0) {
strcpy(t,s[j]); strcpy(s[j],s[j+1]); strcpy(s[j+1],t); } }
9.7编一程序,用指针数组在主函数中输入十个等长的字符串。用另一函数
对它们排序,然后在主函数中输出10个已排好序的字符串
//用指针数组处理 #include
void sort(char *[]); int i;
char str[10][6], *p[10];
printf(\
for(i=0;i<10;i++)//首先将10个str的首地址赋值给10个p[i]; p[i]=str[i];//将第i个字符串的首地址赋予指针数组p的第i个元素; for(i=0;i<10;i++)
scanf(\输入到&p[i] sort(p);
printf(\ for(i=0;i<10;i++)
.. ..
printf(\输出到p[i]; }
void sort(char *s[]) {
char *temp; int i,j;
for(i=0;i<9;i++) for(j=0;j<9-i;j++)
if(strcmp(*(s+j),*(s+j+1))>0) {
temp=*(s+j);//*(s+j)指向数组指针,我想应该是字符串的首地址;所以可以直接赋值给temp指针; *(s+j)=*(s+j+1); *(s+j+1)=temp; } }
9.8指针 将n个数按输入时顺序的逆序排列,用函数实现
#include
for(p=a+n-1;p>=a;p--)
printf(\
printf(\} main() { int a[20],n; int i;
.. ..
printf(\ scanf(\
printf(\ for(i=0;i scanf(\ reverse(a,n); } 9.9写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为: int stremp(char *p1,char *p2) 设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当s1不等于s2时,返回它们二者的第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果s1 #include { int strcmp(char *p1,char *p2); int m; char str1[20],str2[20],*p1,*p2; printf(\ scanf(\ .. .. scanf(\ p1=&str1[0]; p2=&str2[0]; m=strcmp(p1,p2); printf(\} int strcmp(char *p1,char *p2) /*两个字符串比较的函数*/ { int i; i=0; while(*(p1+i)==*(p2+i)) if(*(p1+i++)=='\\0') return(0); /*相等时返回结果0*/ return(*(p1+i)-*(p2+i)); /*不等时返回结果为第一个不等字符ASCII码的差值*/ } .. ..