當前位置:首頁 » 編程語言 » c語言教室座位錯誤排列
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言教室座位錯誤排列

發布時間: 2022-06-17 11:37:16

c語言 排座位

1,建立鏈表元素{姓名,身高,比之矮的指針,比之高的指針}
2,讀文件第一條記錄,創建第一個元素,並用一個指針指向這個元素。
3,讀取文件,讀一條記錄創建一個元素;
4,把這條記錄插入指針指向的鏈表,並實現排序:新的元素與鏈表的當前元素比較,如果小於鏈表的當前元素,則繼續向小的方向查找,直到找到更小的元素或者鏈表到頭,反之大於鏈表的當前元素,向大的方向查找,直到找到更大的元素或者鏈表到頭。對於相等的情況,可以視為小的情況,也可視為大的情況。
5,重復3和4,直到文件結束
6,開始了,可以列印一條說明,這個位置是靠前的位置
7,把指針移向最小的元素;
8,做一個循環,每一次循環中,先輸出兩個姓名,輸出一個過道,再輸出三個姓名,輸出一個過道,最後輸出兩個姓名,換行。
9,反復循環7,注意每輸出一個姓名就要是指針指向更大的元素,直到最有一個元素輸出後,退出循環
10,結束了,可以列印一條說明,這個位置是靠後的位置

Ⅱ 關於C語言 座位排序的程序

盡管120分 很誘人 但我不會 幫不了你

Ⅲ c語言求編程。考場有35個座位,可容納35學生(學號為1-35)參加考試,一維數組的下標表示座位號

main()
{
int num[35];

for(i=1;i<=35;i++)

num[i-1]=i; //設置座位號是從0-34

for(i=1;i<=35;i++)

{
printf("%d ",a[i-1]);//輸出學號
if(i%10==0) //每行輸出10個,沒到10個時候,i求余=0,即輸出換行

printf("\n");
}

}

Ⅳ c語言求解

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main (){
int a[35] = {0};
int j,i;
srand(time(0));
for (i = 1;i <= 35,i ++){
while(a[j = rand()%35]);
a[j] = i;
}
for(i = 0;i < 35;i ++){
printf("%d ",a[i]);
if(!((i+1)%10))
printf("\n");
}
return 0;
}

Ⅳ 2008noip排座位C語言

思路:預處理出兩個數組,h[]和s[].分別表示在第i列劃分通道將隔開多少位學生,對他們兩個數組分別進行排序.然後按可以隔開人數從大到小的順序劃分通道
源碼:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
int n,m,k,l,d,h[1001],s[1001];
void solve(int len,int tot,int a[])
{
int i,j,maxn;
int vis[1001]={0};
a[0]=0;
for (j=1;j<=tot;j++)
{
maxn=0;
for (i=1;i<=len;i++)
{
if (!vis[i]&&a[i]>a[maxn])
maxn=i;
}
vis[maxn]=1;
}
j=0;
for (i=1;i<=len;i++)
{
if (vis[i])
{
if (j==0)
{
printf("%d",i);
j=1;
}
else
printf(" %d",i);
}
}
}
int main ()
{
int i,x,y,p,q;
scanf("%d%d%d%d%d",&n,&m,&k,&l,&d);
for (i=1;i<=d;i++)
{
scanf("%d%d%d%d",&x,&y,&p,&q);
if (x==p)
s[min(y,q)]++;
else
h[min(x,p)]++;
}
solve(n,k,h);//處理h數組
printf("%d",endl);
solve(m,l,s);//處理s數組
return 0;
}

Ⅵ 排考場座位問題 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語言編程問題 求助..........我實在查不出錯誤...............

沒錯呀。
不過。能不能給人點提示。比如一開始先輸入啥。輸入幾個數。建議改成這樣。
scanf("%d %d %d %d %d",&m,&n,&k,&l,&d);
下一個也加上空格。
否則系統不知道你的輸入是怎麼分開的。。
問一下。你這程序具體是干什麼用的?
怎麼這么亂。

Ⅷ 考試座位編排程序(c語言)

你代碼中間的防止重復部分有邏輯錯誤,
下面的代碼已經改好了,運行看看吧:

#include "stdio.h"
#include "time.h"
#include "stdlib.h"
main()
{
int a[35]={0};
int i,n,j,flag=0;

srand((int)time(0));

for(i=0;i<35;)
{
flag=0;
n=rand()%35+1;
for(j=0;j<=i;j++)
{
if(n==a[j])
{
flag=1;
break;
}
}

if(flag==0)
{
a[i]=n;
i++;
}
}
for(i=0;i<35;i++)
{
printf("\n第%d位人的號碼為%d",i+1,a[i]);
}
}

Ⅸ 急急急,新手C語言編寫考場座位系統,出現error C2115: 'function' : incompatible types,求大神。。。

問題還是不少吧,整理了一下,現在沒有錯誤了,至於邏輯需要自己梳理,仔細體會一下吧。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
typedef struct student
{
char ID[20];
char NAME[20];
}stu;
void set(stu stu1[][8]);
void delete1(stu stu[][8]);
void show(stu student[][8]);
void Information(stu stud[][8]);
void find(stu stu[][8], int *q, int *p);
void clean();
void main()
{
int pick,choice,x,y;
stu stu1[8][8];
for (x=0;x<8;x++)
{
for (y=0; y<8;y++ )
{
strcpy(stu1[x][y].ID, "*");
strcpy(stu1[x][y].NAME, "*");
}
}
clean();
do
{
printf("請輸入數字:");
scanf("%d",&choice);
getchar();
switch(choice)
{
case 1:set(stu1);break;
case 2:delete1(stu1);break;
case 3:Information(stu1);break;
case 4:find(stu1, &x, &y);break;
case 5:show(stu1);break;
default: printf("fhsak");
}
printf("繼續請按1,退出請按2");
scanf("%d",&pick);
getchar();
}while(pick==1);
}
void set(stu stu1[][8])
{
char id[16];
char name[10];
int x,y,z;
srand(time(NULL));
printf("請輸入准考證號和姓名(中間以一個空格隔開)");
scanf("%s %s",&id, &name);
z=rand()%64+1;
x=z/8+1;
y=z%8+1;
strcpy(stu1[x][y].ID,id);
strcpy(stu1[x][y].NAME,name);
}
void Information(stu stud[][8])
{
int x,y;
printf("請輸入查詢的考生的座位行號:");
scanf("%d",&x);
printf("請輸入查詢的考生的座位列號:");
scanf("%d",&y);
puts(stud[x-1][y-1].ID);
puts(stud[x-1][y-1].NAME);
}
void find(stu stu[][8], int *q, int *p)
{
char num[20];
int x,y,i=0;
printf("請輸入需要查詢的考生的准考證號:");
scanf("%s",num);
for(x=0;x<8;x++)
{
for(y=0;y<8;y++)
{
if(strcmp(stu[x+1][y+1].ID,num)==0)
{
printf("該考生的考試座位號為%d行,%d列",x,y);
*q=x+1;*p=y+1;
i++;
}
}
}
if(i==0)
printf("不存在此准考證號");
}
void delete1(stu stu1[][8])
{
int *p=NULL, *q=NULL;
find(stu1, p, q);
strcpy(stu1[*q][*p].ID,"*");
strcpy(stu1[*q][*p].NAME,"*");
}
void show(stu student[][8])
{
for(int x=1;x<9;x++)
{
for(int y=1;y<9;y++)
{
printf("%s",student[x][y].NAME);
}
}
}
void clean()
{
system("cls");
puts(" |----------------------------------------| ");
puts(" | 請輸入選項編號(1-5): | ");
puts(" |----------------------------------------| ");
puts(" | 1-設定考場座位 | ");
puts(" | 2-取消考場座位 | ");
puts(" | 3-顯示某座位考生信息 | ");
puts(" | 4-查找學生座位 | ");
puts(" | 5-顯示考場座次表 | ");
puts(" |----------------------------------------| ");
}