本文目录一览:
- 1、c语言问题 急 赛车计分问题 有n台车依次出发,经过若干圈竞速后相继到达终点。每台车的得分,是
- 2、一道c语言编程题(内详):4名专家对4款赛车进行评价……
- 3、C语言写的赛车游戏,赛道、车都画好了,不知道怎么实现小车的移动
- 4、排队问题 c语言
c语言问题 急 赛车计分问题 有n台车依次出发,经过若干圈竞速后相继到达终点。每台车的得分,是
这种算法不合理——————第一个出发,第一个到,得0分!!!!!!
#include stdio.h
#include string.h
const int MAXSIZE = 100;
typedef struct driver {
char name[10];
int start;
int end;
int score;
}Driver;
void Sort(Driver a[],int n) {
int i,j,k;
Driver t;
for(i = 0; i n - 1; ++i) {
k = i;
for(j = i + 1; j n; ++j) {
if(a[j].score a[k].score)
k = j;
}
if(k != i) {
t = a[k];
a[k] = a[i];
a[i] = t;
}
}
}
int main() {
Driver a[MAXSIZE];
char name[10];
int i, n = 0, start, end, flag;
printf("出发顺序号 到达顺序号 车手('q' to quit):");
while(scanf("%d%d%9s",start,end,name) == 3 n MAXSIZE) {
flag = 1;
for(i = 0; i n flag; ++i) {
if(strcmp(a[i].name,name) == 0) {
flag = 0;
printf("姓名重复,本次输入无效。\n");
}
if(a[i].start == start) {
flag = 0;
printf("%s 是在第%d个出发的,出发顺序号错误,本次输入无效。\n",a[i].name,a[i].start);
}
if(a[i].end == end) {
flag = 0;
printf("%s 是在第%d个到达的,到达顺序号错误,本次输入无效。\n",a[i].name,a[i].end);
}
}
if(flag == 1) {
a[n].start = start;
a[n].end = end;
strcpy(a[n].name,name);
a[n].score = start - end;
++n;
}
printf("出发顺序号 到达顺序号 车手('q' to quit):");
fflush(stdin);
}
Sort(a,n);
for(i = 0; i n; ++i)
printf("%-12s %d\n",a[i].name,a[i].score);
return 0;
}
一道c语言编程题(内详):4名专家对4款赛车进行评价……
!(m-2)+!(m-4)+!!(m-3)+!!(m-4)==1
有4的bool型的数值相加,当且仅当只有一个正确时,即有1个等于1.其他3个等于0,这时表示只有一位专家说对了,这是输出的m就是最好的赛车。
至于,为什么要减去数字:
!(m-2)看第一个,要是m=2是最好的,则m-2=0,再取反就是1,当别的取值都为0时,这就是最好的赛车;否则就不是。
其他的几个类似
C语言写的赛车游戏,赛道、车都画好了,不知道怎么实现小车的移动
每隔一定的时间间隔就画出赛道与车,而且赛道有不同的标志,就能显示出车在移动了,如果赛道始终是一样的,即使是不断的画出了赛道和车,也不能看出车在移动。
排队问题 c语言
//compiler:GCC
//如果你的编译器不支持C99,那么你需要把arr[t][10000]和ming[t]中的t换成一个具体数字
#include stdio.h
int main(int argc, char **argv)
{
int t;
scanf("%d", t);
int arr[t][10000];//存放T组M人的编号
int ming[t][2];//存放小明在t组队伍中的编号和人数
int count;//每组队伍的人数
int i,j;
for(i = 0; i t; i++)
{
scanf("%d", count);
for(j = 0; j count; j++)
scanf("%d", arr[i][j]);
scanf("%d", ming[i][0]);
ming[i][1] = count;
}
for(i = 0; i t; i++)
{
for(j = 0; j ming[i][1]; j++)
if(arr[i][j] != ming[i][0])
printf("%d ", arr[i][j]);
else
continue;
printf("\n");
}
return 0;
}