sub(char *a,int t1,int t2) { char ch;
while (t1 ch = *(a+t1); *(a+t1)=*(a+t2) ; *(a+t2)=ch ; t1++ ; t2-- ; } } main ( ) { char s[12]; int i; for (i=0; i<12 ; i++) s[i]=?A?+i+32 ; sub(s,7,11); for (i=0; i<12 ; i++) printf (“%c”,s[i]); printf(“\\n”); } 4.当运行以下程序时,写出输入 6↙ 的程序运行结果。 sub(char *a,char b) { while (*(a++)!=?\\0?) ; while (*(a-1) main ( ) { char s[]=”97531”,c; = getchar ( ) ; sub(s,c); puts(s) ; } 5.写出下面程序的运行结果。 Java dBase C Language Pascal main ( ) { char *a[]={“Pascal”,”C Language”,”dBase”,”Java”}; char (**p)[ ] ; int j ; p =+ 3 ; for (j=3; j>=0; j--) printf(“%s\\n”,*(p--)) ; } 四.程序填空题 1.下面函数的功能是从输入的十个字符串中找出最长的那个串,请填(2)空使程序完整。 6 void fun(char str[10][81],char **sp) { int i; *sp = 【1 】; for (i=1; i<10; i++) if (strlen (*sp) 2.下面函数的功能是将一个整数字符串转换为一个整数,例如:”-1234”转换为1234,请填(3)空使程序完整。 int chnum(char *p) { int num=0,k,len,j ; len = strlen(p) ; for ( ; 【1 】; p++) { k=【2 】; j=(--len) ; while (【3 】) k=k*10 ; num = num + k ; } return (num); } 3.下面函数的功能使统计子串substr在母串str中出现的次数,请填(3)空使程序完整。 int count(char *str, char *substr) { int i,j,k,num=0; for ( i=0; 【1 】; i++) for (【2 】, k=0; substr[k]= =str[j]; k++; j++) if (substr [【3 】]= =?\\0?) { num++ ; break ; } return (num) ; } 6.下面函数的功能是将两个字符串s1和s2连接起来,请填(2)空使程序完整。 void conj(char *s1,char *s2) { while (*s1) 【1 】; while (*s2) { *s1=【2 】; s1++,s2++; } *s1=?\\0? ; } 五.编程题 1.定义3个整数及整数指针,仅用指针方法按由小到大的顺序输出。 2.输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:①输入10个数;②进行处理;③输出10个数。所有函数的参数均用指针。 7 3.编写一个求字符串的函数(参数用指针),在主函数中输入字符串,并输出其长度。 4.编写一个函数(参数用指针)将一个3×3矩阵转置。 5.写函数原型为int strcmp(char *s1,char *s2);的函数,该函数实现两个字符串的比较(函数功能描述参见教材P137,strcmp字符串处理函数)。 6.利用指向行的指针变量求5×3数组各行元素之和。 8