| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 924 人关注过本帖
标题:这是工程的一部分。分类统计功能,可以运行,但输入后就会停止没结果
只看楼主 加入收藏
Alone0214
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
这是工程的一部分。分类统计功能,可以运行,但输入后就会停止没结果
#include "facility.h"
void Tongji(ADDR *top)
{
    ADDR *p;
    int sel;
    int flag2=0;int ha=0;
    char find[20];
    p=top->next;
    if(!top->next)
    {      
        printf("\n>>>>>>>>>>提示:没有资料可以统计分类!\n");     
        return;
    }  
    printf(">>>>>>>>>>提示:\n=====>0退出\n=====>1按设备号统计\n=====>2按设备名称统计\n");
    scanf("%d",&sel);
    if(sel==1)
    {
        printf("\n输入你要统计分类的设备号:");
        scanf("%s",find);
        while(p)
        {
           if(strcmp(p->number,find)==0)
           {flag2++;}
            if(flag2==1&&ha!=flag2)      
            {
             printf("\n%s%s%s%f%s%s%s\n",p->number,p->name,p->kind,p->price,p->year,p->manufactory,p->scrap,p->scrapyear);
              ha=flag2;
            }
            else
               if(flag2>ha)
               {printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->number,p->name,p->kind,p->price,p->year,p->manufactory,p->scrap,p->scrapyear);
                ha=flag2;
               }
               p=p->next;
           }
           if(flag2)
           {      
               printf("\n*************************按设备号%s统计分类的有%d条记录:*************************\n\n",find,flag2);   
           }
           else
           {printf("\n按设备号%s统计的结果为0个\n\n",find);}
        }
        else if(sel==2)
        {
              printf("\n输入你要统计分类的设备名称:");            
              scanf("%s",find);
         while(p)
         {         
            if(strcmp(p->name,find)==0)     
            {flag2++;}
            if(flag2==1&&ha!=flag2)      
            { printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->number,p->name,p->kind,p->price,p->year,p->manufactory,p->scrap,p->scrapyear);
              ha=flag2;
            }
            else
               if(flag2>ha)
               {printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->number,p->name,p->kind,p->price,p->year,p->manufactory,p->scrap,p->scrapyear);
                ha=flag2;
               }
               p=p->next;
           }
           if(flag2)
           {
               printf(  "\n******************按设备名称%s统计的有%d条记录:********************\n\n",find,flag2);
           }
           else {printf("\n按设备名称%s统计分类的结果为0个\n\n",find);}
        }
 
          else if(sel==0) return;
          }
2016-04-18 19:05
Alone0214
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-4-18
收藏
得分:0 
专业作业来的一个电商妹子实在是什么哪哪都不懂。只能求帮助了,如果有其他地方还需要说明一定要跟我说说
2016-04-18 19:10
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:20 
你的程序我跑不了,因为我没有那个头文件/程序也不完整。。
但是我看了一下,至少程序执行完 scanf("%d",&sel);是没问题的。你说得一输入就会停止,我想原因在于你没有把这里留下的一个换行符消耗掉
导致程序在后面要读“    scanf("%s",find);”只读到了一个换行符,find字符串就直接为空了。后续的strcmp之类的///就爆胎了。
程序代码:
#include "facility.h"
void Tongji(ADDR *top) {
    ADDR *p;
    int sel;
    int flag2=0;
    int ha=0;
    char find[20];
    p=top->next;
    if(!top->next) {
        printf("\n>>>>>>>>>>提示:没有资料可以统计分类!\n");
        return;
    }
    printf(">>>>>>>>>>提示:\n=====>0退出\n=====>1按设备号统计\n=====>2按设备名称统计\n");
    scanf("%d",&sel);
    if(sel==1) {
        printf("\n输入你要统计分类的设备号:");
        scanf("%s",find);
        getchar();//插入这句话你再试试

        while(p) {
            if(strcmp(p->number,find)==0) {
                flag2++;
            }
            if(flag2==1&&ha!=flag2) {
                printf("\n%s%s%s%f%s%s%s\n",p->number,p->name,p->kind,p->price,p->year,p->manufactory,p->scrap,p->scrapyear);
                ha=flag2;
            } else if(flag2>ha) {
                printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->number,p->name,p->kind,p->price,p->year,p->manufactory,p->scrap,p->scrapyear);
                ha=flag2;
            }
            p=p->next;
        }
        if(flag2) {
            printf("\n*************************按设备号%s统计分类的有%d条记录:*************************\n\n",find,flag2);
        } else {
            printf("\n按设备号%s统计的结果为0个\n\n",find);
        }
    } else if(sel==2) {
        printf("\n输入你要统计分类的设备名称:");
        scanf("%s",find);
        while(p) {
            if(strcmp(p->name,find)==0) {
                flag2++;
            }
            if(flag2==1&&ha!=flag2) {
                printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->number,p->name,p->kind,p->price,p->year,p->manufactory,p->scrap,p->scrapyear);
                ha=flag2;
            } else if(flag2>ha) {
                printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->number,p->name,p->kind,p->price,p->year,p->manufactory,p->scrap,p->scrapyear);
                ha=flag2;
            }
            p=p->next;
        }
        if(flag2) {
            printf(  "\n******************按设备名称%s统计的有%d条记录:********************\n\n",find,flag2);
        } else {
            printf("\n按设备名称%s统计分类的结果为0个\n\n",find);
        }
    }

    else if(sel==0) return;
}


φ(゜▽゜*)♪
2016-04-18 19:59
快速回复:这是工程的一部分。分类统计功能,可以运行,但输入后就会停止没结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030540 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved