• HDUOJ 水果


    

    /*水果
    夏天来了~~好开心啊,呵呵,好多好多水果~~
    Joe经营着一个不大的水果店.他觉得生存之道就是经营最受顾客欢迎的水果.
    如今他想要一份水果销售情况的明细表,这样Joe就能够非常easy掌握全部水果的销售情况了.
    Input
    第一行正整数N(0<N<=10)表示有N组測试数据.
    每组測试数据的第一行是一个整数M(0<M<=100),表示工有M次成功的交易.
    其后有M行数据,每行表示一次交易,由水果名称(小写字母组成,长度不超过80),
    水果产地(小写字母组成,长度不超过80)和交易的水果数目(正整数,不超过100)组成.
    Output
    对于每一组測试数据,请你输出一份排版格式正确(请分析样本输出)的水果销售情况明细表.
    这份明细表包含全部水果的产地,名称和销售数目的信息.水果先按产地分类,产地按字母顺序排列;
    同一产地的水果依照名称排序,名称按字母顺序排序.
    两组測试数据之间有一个空行.最后一组測试数据之后没有空行.
    Sample Input
    1
    5
    apple shandong 3
    pineapple guangdong 1
    sugarcane guangdong 1
    pineapple guangdong 3
    pineapple guangdong 1
    Sample Output
    guangdong
       |----pineapple(5)
       |----sugarcane(1)
    shandong
       |----apple(3)*/

    字符串处理

    #include<stdio.h>
     #include<string.h>
     #include<stdlib.h>
     #include<algorithm>
     using namespace std;
     struct app{
         char name[81];//名称
        char add[81];//地址
        int num;//数量
    }guo[100];

    int cmp(const void *a,const void *b){//依照要求结构体排序
        struct app *c= (app *)a; 
         struct app *d= (app *)b; 
         if(strcmp(c->add,d->add)!=0) 
         return strcmp(c->add,d->add); 
         else  
         return strcmp(c->name,d->name); 
     }
     int main(){
         int n,m;
         scanf("%d",&n);
         while(n--){
          int j=0;
             scanf("%d ",&m);
             for(int i=0;i<m;i++)
                 scanf("%s %s %d",guo[i].name,guo[i].add,&guo[i].num);
             qsort(guo,m,sizeof(guo[0]),cmp);
             //sort(guo,guo+m,cmp);
             for(int i=1;i<m;i++)
             {
              if(strcmp(guo[i].add,guo[i-1].add)==0&&strcmp(guo[i].name,guo[i-1].name)==0)//add,name都相等相加  前边的变为0
        {guo[i].num+=guo[i-1].num;
         guo[i-1].num=0;
           }
             }
             printf("%s ",guo[j].add);
             for(j=0;j<m;j++)
             {
              if(j!=0&&strcmp(guo[j].add,guo[j-1].add)!=0) printf("%s ",guo[j].add);//仅仅要地址和前边的不同就是新地址  输出
             if(guo[j].num!=0) printf("   |----%s(%d) ",guo[j].name,guo[j].num);//输出数量不为0的水果的名字
            }
             if(n) printf(" "); //if(n!=0)居然也会错
        }
         return 0;
     }

  • 相关阅读:
    Map小记
    一些Demo链接
    iOS小技巧
    更改AlertView背景
    UIlabel多行文字自动换行 (自动折行)
    设计模式-观察者模式 发布/订阅模式
    设计模式-策略模式
    设计模式-结构型模式-装饰模式
    设计模式-行为型模式-责任链模式
    设计模式-行为型模式-命令模式
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7090620.html
Copyright © 2020-2023  润新知