c语言座位问题,为什么把中间座位叫C位

发布时间:2022-11-23

本文目录一览:

  1. 排考场座位问题 c语言
  2. C语言排座位问题
  3. C语言订座问题

排考场座位问题 c语言

#include stdio.h
#include stdlib.h
#include time.h
#define ROW 8
#define COL 8
int seat[ROW*COL]={0};
void main()
{
    int i,j,k,a,count=0;
    while(1)
    {
        system("cls"); //清屏
        fflush(stdin); //清键盘输入缓冲区
        printf("\n\t\t1 设定考场座位");
        printf("\n\t\t2 取消考场座位");
        printf("\n\t\t3 显示某座位考生信息");
        printf("\n\t\t4 查找学生座位\n\t\t\t退出程序:Ctrl+C\n\n\t请选择:");
        k = getchar();
        if(k < '1' || k > '4') continue;//无效的选择直接忽略
        fflush(stdin);
        switch (k)
        {
            case '1':
                if(count+1 >= ROW*COL){printf("报歉,坐位已满!");break;}
                printf("输入准考证号:");
                scanf("%d",&k);
                for(a=0; a < ROW*COL; a++) if(seat[a] == k) break;//遍历
                if(a < ROW*COL)
                {
                    printf("考生%d已经在坐位:%d排%d坐\n",k,a/COL+1,a%COL+1);
                    break;
                }
                srand((int)time(NULL));
                a = rand()%(ROW*COL);
                while(seat[a]!=0) a=(a+1)%(ROW*COL);//搜索到一个空坐位
                seat[a] = k;//放上准考证号
                printf("安排在坐位:%d排%d坐\n",a/COL+1,a%COL+1);
                break;
            case '2':
                printf("输入准考证号:");
                scanf("%d",&k);
                for(a=0; a < ROW*COL; a++) if(seat[a] == k) break;//遍历
                if(a < ROW*COL)
                {
                    seat[a]=0;
                    printf("取消了考生%d的坐位:%d排%d坐\n",k,a/COL+1,a%COL+1);
                }
                else
                {
                    printf("考生%d不在本考场\n",k);
                }
                break;
            case '3':
                printf("输入坐位几排几坐:");
                scanf("%d %d",&i,&j);
                if(i < 1 || i > ROW || j < 1 || j > COL) 
                    printf("没有该坐位:%d排%d坐!");
                else
                {
                    k = seat[(i-1)*COL+j-1];
                    if(k == 0) 
                        printf("%d排%d坐未安排考生!");
                    else 
                        printf("%d排%d坐考生准考证号:%d",i,j,k);
                }
                break;
            case '4':
                printf("输入准考证号:");
                scanf("%d",&k);
                for(a=0; a < ROW*COL; a++) if(seat[a] == k) break;//遍历
                if(a < ROW*COL)
                {
                    printf("考生%d的坐位:%d排%d坐\n",k,a/COL+1,a%COL+1);
                }
                else
                {
                    printf("考生%d不在本考场\n",k);
                }
                break;
        }
        fflush(stdin);printf("\n回车继续......");
        getchar();
    }
}

C语言排座位问题

#include stdio.h
#define N 50
#define CALL 3
int main()
{
    int i,*p,callnumber,chu,h[N] = {0};
    for (i = 0; i < N; i++)
    {
        *(h+i) = i+1;
    }
    p = h;
    chu = 0;
    callnumber = 0;
    while(chu < N)
    {
        if (*p != 0)
        {
            callnumber++;
        }
        if (callnumber == CALL)
        {
            chu++;
            printf("%5d",*p);
            *p = 0;
            callnumber = 0;
        }
        p++;
        if (p == h + N)
        {
            p = h;
        }
    }
    return 0;
}

程序如上,可以满足你要求,在你的程序基础上修改的。你逻辑有问题,如果到达数组尾部要从头输出。 另外

*p = 0;
chu++;
printf("%5d",*p);

这里你前面已经赋值为0,输出肯定是0了。

C语言订座问题

根本不需什么数据库,定义结构体,增加座位的编号和布尔类型,如果座位预定了就定布尔类型为false,没有预定就为true,输入预定以后就查看预定的这个位置的布尔类型到底是false还是true。