自我感觉这题算是对指针和字符串灵活的应用,发出来给大家看看,顺便看看能不能优化。- #include <stdio.h>
- #include <string.h>
- #define N 6
- #define L 100
- int main(int argc, const char * argv[]) {
- //定义一个字符串数组
- char *array[N];
- char arr[N][L];
- //通过for循环将数组arr各元素的行地址赋值给指针数组array
- for (int i=0; i<N; i++) array[i]=arr[i];
- //通过for循环接收用户输入的字符串并存在数组arr中
- for ( int i=0; i<N; i++) {
- //提示用户输入字符串
- printf("请输入第%d个字符串:\n",i+1);
- //接收用户输入的字符串
- scanf("%s",array[i]);
- }
- //对字符串排序
- //定义指针变量用来存放地址
- char *temp;
- //冒泡排序法
- for(int i=0;i<N-1;i++){
- for(int j=0;j<N-i-1;j++){
- //比较字符串的大小并将大数后移
- if(strcmp(*(array+j),*(array+j+1))>0){
- temp=*(array+j);
- *(array+j)=*(array+j+1);
- *(array+j+1)=temp;
- }
- }
- }
- printf("\n");
- //打印字符串
- for(int i=0;i<N;i++){
- printf("%s\n",array[i]);
- }
- return 0;
- }
复制代码 |
|