该如何实现当输入的得分高于前十时,可以输入玩家名字,低于前十时,就无反应的要求?
#define MAXTITL 100
#define MAXAUTL 100
#define N 2
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
struct Charts
{
int score;
char name[20];
}player[N],t;
int main()
{
int i, j;
for (i = 0; i < N; i++)
{
scanf_s("%d%s", &player[i].score, player[i].name.20);
fflush(stdin);
}
for (i = 0; i < N - 1; i++)
{
for (j = 0; j < N - 1 - i; j++)
{
if (player[j].score > player[j + 1].score)
{
t = player[j];
player[j] = player[j + 1];
player[j + 1] = t;
}
}
};
for (i = 0; i < N; i++)
{
printf("%d\n,player[i].score");
printf("%s\t,player[i].name");
};
return 0;
};
scanf_s("%d%s", &player[i].score, &player[i].name);
scanf_s格式化字符串时,必须指定字符串的允许长度,另外字符串输入时,不需要写&符号取地址,因为它本身就是个地址
scanf_s("%d%s", &player[i].score, player[i].name,20);
你的代码比较奇怪,第一个for循环都已经完成所有人信息输入了,第二个排序的循环为啥还要输入名字,而且在每次交换顺序的时候输入呢?不对的啊
#define MAXTITL 100
#define MAXAUTL 100
#define N 2
#include<iostream>
//#include<stdio.h>
#include<string>
using namespace std;
struct Charts
{
int score;
char name[20];
}player[N],t;
int main()
{
int i, j;
for (i = 0; i < N; i++)
{
cin >> player[i].score >> player[i].name;
//scanf_s("%d%s", &player[i].score, player[i].name.20); 直接cin不好么
fflush(stdin);
}
for (i = 0; i < N - 1; i++)
{
for (j = 0; j < N - 1 - i; j++)
{
if (player[j].score < player[j + 1].score)//if (player[j].score > player[j + 1].score) 从大到小排序
{
t = player[j];
player[j] = player[j + 1];
player[j + 1] = t;
}
}
};
for (i = 0; i < N; i++)
{
//printf("%d\t",player[i].score);//printf("%d\n,player[i].score"); 引号错误下同
//printf("%s\n",player[i].name);//printf("%s\t,player[i].name");
//上面2句也可修改为
cout <<player[i].score <<"\t" <<player[i].name <<endl;
};
return 0;
};
输入数据时自动排序,代码修改如下:如有帮助,请采纳一下。
#define MAXTITL 100
#define MAXAUTL 100
#define N 12
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;
struct Charts
{
int score;
char name[20];
}player[N],t;
int main()
{
int i, j,t;
Charts st;
for (i = 0; i < N; i++)
{
memset(&st,0,sizeof(st));
printf("请输入选手%d的得分:",i+1);
scanf("%d",&st.score);
//将得分插入数组
for (j=0;j<i;j++)
{
if(st.score > player[j].score)
{
for (t = i;t >j;t--)
{
player[t] = player[t-1];
}
player[j] = st;
break;
}
}
if(j<10)
{
printf("请输入选手%d的姓名:",i+1);
scanf("%s",player[j].name);
}
fflush(stdin);
}
/* //这个排序就不需要了
for (i = 0; i < N - 1; i++)
{
for (j = 0; j < N - 1 - i; j++)
{
if (player[j].score > player[j + 1].score)
{
t = player[j];
player[j] = player[j + 1];
player[j + 1] = t;
}
}
};*/
for (i = 0; i < N; i++)
{
printf("%s\t",player[i].name);
printf("%d\n",player[i].score);
};
return 0;
};