啊哈磊_编程从这里起步

标题: C语言学习例程----指针数组例程 [打印本页]

作者: 天山雪    时间: 2012-7-22 12:50
标题: C语言学习例程----指针数组例程
/* 关于指针数组、函数调用、字符串函数运用的例程:将多个字符串按字母顺序输出*/

#include <stdio.h>
void sort(char *str[],int n)                                                            /*定义排序函数sort*/
{                                                                                                     /*花括号独占一行*/
     char *temp;                                    /*定义一个指向字符类型名叫temp的指针变量*/
     int i,j,k;                                                                                     /*定义整型变量i,j,k*/
     for(i=0;i<n-1;i++)                                           /*for循环,数组元素一共比较了n次*/
        {                                               /*for循环执行语句有数条时用花括号来界定范围*/
            k=i;                                                      /*设当前数组元素排序为首并记录下标*/
            for(j=i+1;j<n;j++)                                           /*二重for循环嵌套来循环比较*/
            if(strcmp(str[k],str[j])>0) k=j;              /*用strcmp()字符串比较函数比较交换*/
            if(k!=i)                                      /*if条件语句,判断假定的数组下标有没有改变*/
             {temp=str[i];str[i]=str[k];str[k]=temp;}                                /*数组元素交换*/
         }                                                                              /*外层for循环执行语句结束*/
}                                                                                                      /*花括号独占一行*/
                                                              /*为了程序易读,留一行空语句分割程序层次*/
int main()                                                                                                        /*主函数*/
{                                                                                                        /*花括号独占一行*/
    int i,n=4;                                                                          /*定义整型变量i,n,n赋初值*/                              
        char *string[4]={"FORTRAN","PASCAL","BASIC","C"};    /*定义指针型数组并赋值*/
    sort(string,n);                                                                                              /*调用函数*/
    for(i=0;i<n;i++)                                                               /*循环输出指针数组各个元素*/
       printf("%s\n",string[i]);
        sleep(50000);                                        /*屏幕停留50000mS,即DOS窗口停留50秒*/
        return 0;                                                                                           /*主函数返回值*/
}


作者: 天山雪    时间: 2012-7-22 12:56
本帖最后由 nmjkl 于 2012-7-23 09:22 编辑

#include <stdio.h>
void sort(char *str[],int n)                                                         
{                                                                                                
     char *temp;                                    
     int i,j,k;                                                                                
     for(i=0;i<n-1;i++)                                         
        {                                             
            k=i;                                                   
            for(j=i+1;j<n;j++)                                       
               if(strcmp(str[k],str[j])>0) k=j;              
            if(k!=i)
              {temp=str;str=str[k];str[k]=temp;}                              
         }                                                                           
}                                                                                                      
                                                            
int main()                                                                                                     
{                                                                                                     
    int i,n=4;                                                                                          
    char *string[4]={"FORTRAN","PASCAL","BASIC","C"};   
    sort(string,n);                                                                                             
    for(i=0;i<n;i++)                                                         
       printf("%s\n",string);
    sleep(50000);                                    
    return 0;                                                                                      
}

========================
去掉注释,代码比较美观,容易阅读。
========================

作者: 天山雪    时间: 2012-7-22 12:57
以上代码全是我一个字一个字慢慢敲出来的。
作者: 天山雪    时间: 2012-7-22 13:00
#include <stdio.h>
void sort(char *str[],int n)                                                         
{                                                                                                
     char *temp;                                    
     int i,j,k;                                                                                
     for(i=0;i<n-1;i++)                                         
        {                                             
            k=i;                                                   
            for(j=i+1;j<n;j++)                                       
               if(strcmp(str[k],str[j])>0) k=j;              
            if(k!=i)
              {temp=str;str=str[k];str[k]=temp;}                              
         }                                                                           
}                                                                                                      
                                                            
int main()                                                                                                     
{                                                                                                     
    int i,n=4;                                                                                          
    char *string[4]={"FORTRAN","PASCAL","BASIC","C"};   
    sort(string,n);                                                                                             
    for(i=0;i<n;i++)                                                         
       printf("%s\n",string);
    sleep(50000);                                    
    return 0;                                                                                      
}

==================
红色代码忘了缩格书写,特此更正!
==================




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2