Ⅰ 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(" |----------------------------------------| ");
}