| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 282 人关注过本帖
标题:求解答---为何程序到走到输入人数这一步后就错误了???
只看楼主 加入收藏
Is不白惨嘿
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2012-11-27
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:5 
求解答---为何程序到走到输入人数这一步后就错误了???
程序代码:
#include <stdio.h>
#include<string.h>
#define MaxSize 20 
struct guest_info{
    char name[8];     //姓名
    int sum;      //人数
    char time[8];       //用餐时间
    int number;       //编号
} GuestList[MaxSize];      //GuestList 是一个全局变量的数组,该数组被本程序的所有函数共享
                       //该数组的每一个元素是一个结构体变量(每个结构体变量有4个成员)
void Insert(int *pCount);
void Search(int count);
void Update(int count);
void Delete(int *pCount);
void Show(int count);
int main()
{
int i,count=0;     //count作为一个计数器,记录已经登记记录个数
    //i,count皆为局部变量只能为本函数使用,不能被其他函数使用
do {            //显示一个字符形式的简易菜单
        printf("\n");
        printf("1-----插入(Insert)\n");
        printf("2-----查询(Search)\n");
        printf("3-----修改(Update)\n");
        printf("4-----删除(Delete)\n");
        printf("5-----显示(Show)\n");
        printf("6-----退出(Exit)\n");
        scanf("%d",&i);
        switch(i)
        {
        case 1:Insert(&count);
            break;
        case 2:Search(count);
            break;
        case 3:Update(count);
             break;
        case 4:Delete(&count);
            break;
        case 5:Show(count);
            break;
        case 6: break;
        default :printf("错误选择!请从选\n");break;
        }
}while(i!=6);
        return 0;
        }
        void Insert(int *pCount)
        {
        int i, in_number;
        if(*pCount==MaxSize) {printf("空间已满!\n");return;}
        printf("请输入编号\n");
        scanf("%d",&in_number);
        for(i=0;i<*pCount;i++)
        if(GuestList[i].number==in_number){printf("已经有相同的编号\n");return;}
        GuestList[i].number=in_number;
        printf("请输入姓名:\n");
        scanf("%s",GuestList[i].name);
        printf("请输入人数:\n");
        scanf("%s",GuestList[i].sum);    
        printf("请输入用餐时间:\n");
        scanf("%s",GuestList[i].time);
        (*pCount)++;     
        return;
        }
        void Search(int count)
        {
        int i,number,flag=1;
        printf("请输入要查询的编号:\n");
        scanf("%d",&number);
        for(i=0;i<count&&flag;i++)
        if(GuestList[i].number==number)
        {
        printf("\n姓名:%s,",GuestList[i].name);
        printf("人数:%d,",GuestList[i].sum);
        printf("用餐时间:%s\n",GuestList[i].time);
        flag=0;
        }
        if (flag==1)printf("没有查询到!\n");
        }
        void Update(int count)
        {
        int i,number,flag=1;
        printf("请输入要修改数据的编号:\n");
        scanf("%d",&number);
        for(i=0;i<count&&flag;i++)         
    
        if(GuestList[i].number=number)
        {
        printf("请输入人数:");
        scanf("%d",&GuestList[i].sum);
                printf("请输入用餐时间");
                scanf("%s",GuestList[i].time);
                flag=0;    
                }
                if (flag==1)printf("没有查询到可以修改的是数据!\n");  
                }
        void Delete(int *pCount)
        {
        int i,j,number,flag=1;
        printf("请输入要删除的数据的编号:\n");
        scanf("%d",&number);
        for(i=0;i<*pCount&&flag;i++)
          if(GuestList[i].number==number)
          {
          for(j=i;j<*pCount-1;j++) GuestList[j]=GuestList[j+1];  
          flag=0;
          (*pCount)--;   
          }
        if(flag==1)printf("没有查询到可以删除的数据!\n");   
        }
        void Show(int count)
        {
            int i;
        printf("\n");
        printf("     编号       姓名        人数           用餐时间\n");
        for(i=0;i<count;i++)
        {
        printf("%10d",GuestList[i].number);
        printf("%12s",GuestList[i].name);
        printf("%10d",GuestList[i].sum);
        printf("%12s",GuestList[i].time);
        }
        }
搜索更多相关主题的帖子: color 
2012-12-09 17:49
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
程序代码:
void Insert(int *pCount)
{
    int i, in_number;
    if(*pCount==MaxSize) {printf("空间已满!\n");return;}
    printf("请输入编号\n");
    scanf("%d",&in_number);
    for(i=0;i<*pCount;i++)
        if(GuestList[i].number==in_number){printf("已经有相同的编号\n");return;}
    GuestList[i].number=in_number;
    printf("请输入姓名:\n");
    scanf("%s",GuestList[i].name);
    printf("请输入人数:\n");
    scanf("%d",&GuestList[i].sum);//请楼主细心,注意数据类型
    printf("请输入用餐时间:\n");
    scanf("%s",GuestList[i].time);
    (*pCount)++;   
    return;
}


[fly]存在即是合理[/fly]
2012-12-09 17:55
Is不白惨嘿
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2012-11-27
收藏
得分:0 
回复 2楼 azzbcc
图片附件: 游客没有浏览图片的权限,请 登录注册
但是问题依旧  输入后还是会出现这个问题
2012-12-11 11:17
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
改了之后的代码看看,是不是没改对啊?有个取地址符


[fly]存在即是合理[/fly]
2012-12-11 11:38
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:15 
#include <stdio.h>
#include<string.h>

#define MaxSize 20

struct guest_info{
    char name[8];     //姓名
    int sum;      //人数
    char time[8];       //用餐时间
    int number;       //编号
} GuestList[MaxSize];      //GuestList 是一个全局变量的数组,该数组被本程序的所有函数共享
                       //该数组的每一个元素是一个结构体变量(每个结构体变量有4个成员)
void Insert(int *pCount);
void Search(int count);
void Update(int count);
void Delete(int *pCount);
void Show(int count);

int main()
{
    int i = 0;
    int count = 0;     //count作为一个计数器,记录已经登记记录个数
    //i,count皆为局部变量只能为本函数使用,不能被其他函数使用
 do {            //显示一个字符形式的简易菜单
        printf("\n");
        printf("1-----插入(Insert)\n");
        printf("2-----查询(Search)\n");
        printf("3-----修改(Update)\n");
        printf("4-----删除(Delete)\n");
        printf("5-----显示(Show)\n");
        printf("6-----退出(Exit)\n");
        scanf("%d",&i);
        switch(i)
        {
        case 1:
            Insert(&count);
            break;
        case 2:
            Search(count);
            break;
        case 3:
            Update(count);
             break;
        case 4:
            Delete(&count);
            break;
        case 5:
            Show(count);
            break;
        case 6:
            break;
        default :
            printf("错误选择!请从选\n");
            break;
        }
     }while(i != 6);
        return 0;
}
        void Insert(int *pCount)
        {
            int i = 0;
            int in_number = 0;

            if(*pCount == MaxSize)
            {
                printf("空间已满!\n");
                return;
            }
            printf("请输入编号\n");
            scanf("%d",&in_number);
            for(i = 0;i < *pCount;i++)
            if(GuestList[i].number == in_number)
            {
                printf("已经有相同的编号\n");
                return;
            }
            GuestList[i].number = in_number;
            printf("请输入姓名:\n");
            scanf("%s",&GuestList[i].name);//这里错了 ,字符串输入的时候,单独的元素是需要加&符号的,整个字符串不需要。
            printf("请输入人数:\n");
            scanf("%s",&GuestList[i].sum);   // 这里错了 ,字符串输入的时候,单独的元素是需要加&符号的,整个字符串不需要。
            printf("请输入用餐时间:\n");
            scanf("%s",&GuestList[i].time);//这里错了 ,字符串输入的时候,单独的元素是需要加&符号的,整个字符串不需要。
            (*pCount)++;     
            return;
        }
        void Search(int count)
        {
            int i = 0;
            int number = 0;
            int flag = 1;
            printf("请输入要查询的编号:\n");
            scanf("%d",&number);
            for(i = 0;i < count && flag;i++)
            if(GuestList[i].number == number)
            {
                 printf("\n姓名:%s,",GuestList[i].name);
                 printf("人数:%d,",GuestList[i].sum);
                 printf("用餐时间:%s\n",GuestList[i].time);
                 flag = 0;
             }
            if (flag == 1)printf("没有查询到!\n");
        }
        void Update(int count)
        {
            int i = 0;
            int number = 0;
            int flag = 1;
            printf("请输入要修改数据的编号:\n");
            scanf("%d",&number);
            for( i = 0;i < count && flag;i++)         
   
            if(GuestList[i].number == number)//应该是错了吧==
            {
                printf("请输入人数:");
                scanf("%d",&GuestList[i].sum);
                printf("请输入用餐时间");
                scanf("%s",&GuestList[i].time);
                flag = 0;   
             }
                if (flag == 1)
                    printf("没有查询到可以修改的是数据!\n");  
           }
        void Delete(int *pCount)
        {
            int i = 0;
            int j = 0;
            int number = 0;
            int flag = 1;
            printf("请输入要删除的数据的编号:\n");
            scanf("%d",&number);
            for(i = 0;i < *pCount && flag;i++)
            if(GuestList[i].number == number)
            {
                for(j = i;j < *pCount-1;j++)
                    GuestList[j] = GuestList[j+1];  
                    flag = 0;
                    (*pCount)--;   
            }
            if(flag == 1)
                printf("没有查询到可以删除的数据!\n");   
        }
        void Show(int count)
        {
            int i = 0;
            printf("\n");
            printf("     编号       姓名        人数           用餐时间\n");
            for(i = 0;i < count;i++)
            {
                printf("%10d",GuestList[i].number);
                printf("%12s",GuestList[i].name);
                printf("%10d",GuestList[i].sum);
                printf("%12s",GuestList[i].time);
             }
        }
--------------------
有两个很明显的错误 我给你改好了
一:
            scanf("%s",&GuestList[i].name);//这里错了 ,字符串输入的时候,单独的元素是需要加&符号的,整个字符串不需要。
            printf("请输入人数:\n");
            scanf("%s",&GuestList[i].sum);   // 这里错了 ,字符串输入的时候,单独的元素是需要加&符号的,整个字符串不需要。
            printf("请输入用餐时间:\n");
            scanf("%s",&GuestList[i].time);//这里错了 ,字符串输入的时候,单独的元素是需要加&符号的,整个字符串不需要。

二:
 if(GuestList[i].number == number)//应该是错了吧==
---------------
你程序还有很大的错误  在人数这个部分

很不懂你为什么要用指针做传参的??
2012-12-11 12:02
Is不白惨嘿
Rank: 2
等 级:论坛游民
帖 子:7
专家分:10
注 册:2012-11-27
收藏
得分:0 
回复 5楼 daniel_
谢啦    能走完了
我再看看
2012-12-11 12:47
快速回复:求解答---为何程序到走到输入人数这一步后就错误了???
数据加载中...
 
   



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

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