搜索
查看: 2122|回复: 3
打印 上一主题 下一主题

C语言学习例程----指针数组例程

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-22 12:50:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/* 关于指针数组、函数调用、字符串函数运用的例程:将多个字符串按字母顺序输出*/

#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:09 | 只看该作者
本帖最后由 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:11 | 只看该作者
以上代码全是我一个字一个字慢慢敲出来的。
地板
 楼主| 发表于 2012-7-22 13:00:37 | 只看该作者
#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;                                                                                      
}

==================
红色代码忘了缩格书写,特此更正!
==================
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表