输入某游戏大赛10个队伍的名称(以字符串:如good good study),队伍过关数(整数),耗时数(如:90分钟)。输出排行榜(包括过关数、耗时,队伍名称)。
排行规则:
①先以过关数为标准。
②过关数一样的以时间为标准。
③过关数、时间一样的以队伍名称的首字母为标准。
定义又给结构体存放队伍信息,代码如下,望采纳
#include <stdio.h>
#include <string.h>
struct team {
char name[50];
int pass;
int time;
};
int main() {
struct team teams[10];
int i, j;
// 输入10个队伍信息
for (i = 0; i < 10; i++) {
printf("请输入第%d支队伍的名称、过关数和耗时(以空格分隔):", i + 1);
scanf("%s %d %d", teams[i].name, &teams[i].pass, &teams[i].time);
}
// 排序
for (i = 0; i < 10 - 1; i++) {
for (j = i + 1; j < 10; j++) {
if (teams[i].pass < teams[j].pass || (teams[i].pass == teams[j].pass && teams[i].time > teams[j].time) ||
(teams[i].pass == teams[j].pass && teams[i].time == teams[j].time && strcmp(teams[i].name, teams[j].name) > 0)) {
struct team temp = teams[i];
teams[i] = teams[j];
teams[j] = temp;
}
}
}
// 输出排行榜
printf("排行榜:\n");
for (i = 0; i < 10; i++) {
printf("%d. 队伍名称:%s,过关数:%d,耗时:%d\n", i + 1, teams[i].name, teams[i].pass, teams[i].time);
}
return 0;
}
运行结果
就是要三层排序,字符串比较用strcmp
队伍定义一个结构体
#include <stdio.h>
typedef struct _team
{
char name[100];
int num;
int times;
}team;
int main()
{
team t[10],i,j,temp,change;
for(i=0;i<10;i++)
{
printf("输入第%d个队伍的名称,过关数和耗时数:",i+1);
gets(t[i].name);
scanf("%d%d",&t[i].num,&t[i].times);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
change = 0;
if(t[j].num < t[j+1].num)
change = 1;
else if(t[j].num == t[j+1].num)
{
if(t[j].times > t[j+1].times)
change = 1;
else if(t[j].times == t[j+1].times)
{
if(strcmp(t[j].name,t[j+1].name) > 0)
change = 1;
}
}
if(change == 1)
{
temp = t[j];
t[j] = t[j+1];
t[j+1] = temp;
}
}
if(change == 0)
break;
}
for(i=0;i<10;i++)
printf("第%d名: 队伍:%s 过关数:%d 耗时数:%d\n",i+1,t[i].name,t[i].num,t[i].times);
}
#include <stdio.h>
#include <string.h>
struct Team {
char name[50];
int pass;
int time;
};
void sort(Team teams[], int n) {
int i, j;
Team temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (teams[i].pass < teams[j].pass) {
temp = teams[i];
teams[i] = teams[j];
teams[j] = temp;
} else if (teams[i].pass == teams[j].pass) {
if (teams[i].time > teams[j].time) {
temp = teams[i];
teams[i] = teams[j];
teams[j] = temp;
} else if (teams[i].time == teams[j].time) {
if (strcmp(teams[i].name, teams[j].name) > 0) {
temp = teams[i];
teams[i] = teams[j];
teams[j] = temp;
}
}
}
}
}
}
int main() {
Team teams[10];
int i;
for (i = 0; i < 10; i++) {
printf("请输入第%d个队伍的名称,过关数和耗时\n", i + 1);
scanf("%s %d %d", teams[i].name, &teams[i].pass, &teams[i].time);
}
sort(teams, 10);
printf("排名\\t队伍名称\\t过关数\\t耗时\\n");
for (i = 0; i < 10; i++) {
printf("%d\\t%s\\t\\t%d\\t%d\\n", i + 1, teams[i].name, teams[i].pass, teams[i].time);
}
return 0;
}
输入实例代码 团队几 闯关数 时间就可以运行成功了
int Fib(int n) {
if (n==1 || n==2) {
return 1;
}else {
return Fib(n-1) + Fei(n-2);
}
}
int main() {
int n = 0;
int ret = 0;
scanf("%d", &n);
ret = Fib(n);
printf("%d", ret);
return 0;
}