赞
踩
在主函数中输入10个等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排序好的字符串(使用指向数组的指针完成)。
**谭浩强C语言程序设计第五版指针习题11、12题 **
#include<stdio.h> #include<string.h> int main() { void sort(char (*from)[20]); int i=0; char str[10][20]; char (*k)[20]=str; /* 字符数组代表一个字符串,因此二维数组中的每个元素都是一个字符串 所以使用指针输出时,和输出整型数组不一样,直接用指向一维数组的指针输出就行 */ for(;i<10;i++,k++) { scanf("%s",k); } k=str; printf("\n"); sort(str); printf("\n"); //printf("%d",strcmp("zebra","where")); printf("\n"); for (i = 0; i < 10; i++,k++){ printf("%s\n", k); } return 0; } void sort(char (*from)[20]) { char *temp; int i=0,j; for(;i<10;i++) { for(j=i+1;j<10;j++) if(strcmp(from[i],from[j])<0) { strcpy(temp,from[i]); strcpy(from[i],from[j]); strcpy(from[j],temp); } } }
不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量,它不能改变值,因此需要用到strcpy()函数来交换比较后的字符串。
结果示例:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。