6.输入三个字符串,找出其中最大的字符串。 【解】将输入的三个字符率分别存于三个一维字符数组中,另用一个字符指针数组,分别指向这三个字符串,然后用循环控制这三个字符串的比较,找出最大的字符串。两字符串比较时,程序不用标准库函数,而用两字符串的对应字符比较来实现。完整程序如下: # include # define N 120 # define M 3 mian() { char s1[N], s2[N],s3[N],*strs[M]={s1,s2,s3},*p,*q,*ms; int i; printf("输入%d个字符串\n", M) ; for(i= 0; i scanf("%s",strs[i]); ms=strs[0]; for(i=1;i for( p=ms,q=strs[i];*p! =’\0’ && *p==*q;p++,q++); if(*p<*q) ms=strs[i]; } printf("最大字符串:%s\n",ms); }
7.输入两个字符串,将它们连接后输出。 【解】程序设有两个存储字符串的数组,先输入两个字符串,然后找到第一个字符串的末尾,接着将第二个字符串复制在第一个字符串的后面,然后输出。程序如下: # include # define N 120 main() { char s1[N+N],s2[N],*p,*q; printf("输入2个字符串\n"); scanf("%s%s",s1,s2); for(p=sl;* p!=’\0’; p++); for(q=s2;*p++=*q++;); printf("两字符串连接后:%s\n" ,sl); }
8.比较两个字符串是否相等。 【解】程序设两个存储字符串的数组,先输入两个字符串,两字符率比较时,直接用两字符串的对应字符比较来实现。完整程序如下: # include # define N 120 main() { char sl[N] ,s2[N],*p,*q; char *result[]={"小于","相等" ,"大于"}; int comp; printf("输入 2个字符串\n"); scanf("%s%s",s1,s2); for(p=sl,q=s2;*q!=’\0’&& *p==*q; p++, q++); comp=*P <* q? 0:*P==*q? l:2; printf("字符串1与字符串2比较:%s\n",result[comp]); }
9.输入10个整数,将其中最大数与最后一个数交换,最小数与第一个数交换。 【解】程序设一个一维数组存储输入的10个整数。然后遍历数组,找出最大元素和最小元素的指针。接着按要求先将最大元素与最后一个元素交换,然后将最小元素与第一个元素交换。最后,输出数组中的全部整数。程序应考虑到这样一种特殊情况,即最后一个元素正是最小元素,它在与最大元素交换后,位置已移到原先存储最大元素的位置。程序应保证最大元素移到末尾,最小元素移到最前端。程序如下: # include # define N 10 main() { int a[N],*maxp,*minp,*q,t; printf("入%d个整数\n,N); for(q=a;q scanf("%d",&t);*q=t; } maxp= minp= a; for(q=a;q if(*maxp<*p) maxp=q; if(*minp>*q) minp=q; } t=*maxp; *maxp=a[N-1]; a[N-l]=t; if(minp==&a[N-l]) minp=maxp; t=* minp;*minp= a[0]; a[0]= t; for(q=a;q printf("%d",*q); printf("\n"); } |