• 编程题练习1


    //
    //    编程题
    //  有一个数组 [5, 8, 12, 18, 123]  按数字和,从小到大排序。结果: [12, 5, 123, 8, 18]  (1+2 <5 , 所以 12在5之前)    
        
        
    typedef struct num * NUM;
    struct num
    {
        int  title[5];//存储需要比较的数值(5,8,12,18,123)
        int  jibie[5];//记录分析出的大小(5,8,3,9,6),分析数值大小。 
    } Num;
    
    int b[5];   //设置b为全局变量数组
    // 冒泡排序算法
    void bubbleSort(struct num *arr, int n) { //传入结构体进行比较
        //   for(int n=0;n<5;n++)
        //   {
        //   printf("%4d",arr->title[n]);
        //   printf("%4d",arr->jibie[n]);
        //   }
        for (int i = 0; i<n - 1; i++)
            for (int j = 0; j < n - i - 1; j++)
        {
            //如果前面的数的分析数值比后面大,进行交换
            if (arr->jibie[j] > arr->jibie[j + 1]) {
                int temp = arr->title[j]; arr->title[j] = arr->title[j + 1]; 
                arr->title[j + 1] = temp;//交换数值
                int temp2 = arr->jibie[j]; arr->jibie[j] = arr->jibie[j + 1]; 
                arr->jibie[j + 1] = temp;//交换分析数值
    
            }//同时交换数值和它的分析数值
        }
    
    
    
        for(int n=0;n<5;n++)
            printf("%4d",arr->title[n]);
    
    }
    
    void fun(int *p){
    
        // printf("%d",*p);
        //printf("%d", 123/100);
        for(int i=0,m=0;i<5;i++,m++)
        {   
            int chushu=1, weishu; //chushu用来记录商,weishu记录输入数值的位数
        
             //下面的for循环用来求出输入数值的位数(例如:5 1位, 12 2位, 123 3位)
            for(int j=1;chushu!=0;weishu++)
            {     j=j*10;
             chushu=p[i]/j;   //当chushu为0时,循环结束,weishu记录输入数值的位数
            }
            
            //(5,8,12,18,123)对应的位数为(1,1,2,2,3)
            
            // printf("%3d",weishu);
            
            weishu--;  //将所得位数减一  (0,0,1,1,2)
            int sum=0; 
            //  printf("%3d",weishu);
            if(weishu==0)
                b[i]=p[i];    //如果位数为0,直接将p[i]值赋予b[i],
    
            else{
                
                int total=0,pre=0; //total记录商值,pre用来保留改变前的p[i]值
                
                for(; weishu!=0;weishu--)//位数不为0,在此循环运行
                {   
                    int chushu2=(int)(pow(10,weishu));   //  pow()为平方函数,pow(10,2)的100.
                                                         //chushu2记录除数
                    //  printf("%3d",chushu2);
    
                 {  
                  total=p[i]/chushu2;
                  p[i]=p[i]-(p[i]/chushu2)*(int)(pow(10,weishu));
                  pre=p[i];
                  //   printf("%3d",p[i]);
                  sum=sum+total;
                  //   printf("%3d",sum);
                 }
                    
                    //上一部分代码所做的操作是:
                    //例如: 123   , 位数减一后是2, chushu2=(int)(pow(10,2)), chushu2=100;
                    //total=123/100,    total=1;
                    //pre=p[i]=123-(123/100)*100=23;
                    //sum=sum+1, sum=1 ,  一次循环结束, weishu减一,weishu为1
                    //第二次循环
                    //total=23/10, total=2, chushu2=(int)(pow(10, 1)), chushu2=10;
                    //pre=p[i]=23-(23/10)*10=3;
                    //sum=sum+2; sum=3,  weishu减一,weishu为0,退出循环
    
                }
    
                b[i]=sum+pre;   //当分析123时, b[i]=sum+pre=3+3=6
                
                //  printf("%4d",b[i]);
            }
    
    
        }
        //     for(int n=0;n<5;n++)
        //          printf("%4d",b[n]);
    
        return b;//返回分析数组
    }    
    
    int main () {
        int a[5]={5,8,12,18,123};
        int c[5];
        for(int j=0;j<5;j++)
        {
            c[j]=a[j];
        }
        fun(a);
        //  for(int n=0;n<5;n++)
        // //  printf("%4d",b[n]);
    
        struct num number;    //定义结构体变量number
        for(int i=0;i<5;i++)
        {
            number.title[i]=c[i];//将a数组值存入
            number.jibie[i]=b[i];//将分析数组值存入
        }
        //   for(int n=0;n<5;n++)
        //   {
        //   printf("%4d",number.title[n]);
        //   printf("%4d",number.jibie[n]);
        //   }
    
        NUM *p=&number;  
        bubbleSort(p,5);//将结构体传参
    
    
        return 0;
    }

  • 相关阅读:
    索引的优缺点
    php中创建和调用WebService
    Redis常用数据结构和操作
    PHP的array_merge
    数据库最左前缀原则
    Mysql+Sphinx实现全文搜索
    YAPI安装和使用
    根据导入xlxs的文件,来写入数据库
    操作RDS文档说明
    springboot查找配置文件路径的过程
  • 原文地址:https://www.cnblogs.com/liweikuan/p/12945327.html
Copyright © 2020-2023  润新知