#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
int main() {
int players = 0; /*选手的人数*/
float sum = 0; /*每位选手成绩的分数总和*/
float players_score[][5] = { 0 }; /*纪录参赛选手成绩的数组矩阵*/
int i, j, k, t; /*t为冒泡排序算法的中间变换参量*/
int m, z = 4;
float MaxScore, MinScore = 0; /*每位参赛选手的评委评分的最高分数和最低分数*/
float maopaopaixu[5] = { 0 };
printf("Enter the number of players:\n");
scanf("%d", &players); /*输入参赛选手的人数*/
for (i = 0; i <= players - 1; i++) { /*输入每个参赛选手的成绩*/
printf("now player %d\n", ++i);
printf("please input score:\n");
for (j = 0; j <= 4; j++) {
gets(players_score);
};
printf("\n");
};
printf("%s\40", "player");
char judgeMan[5] = "ABCDE";
for (i = 0; i <= 4; i++) {
printf("judge%c\40", judgeMan[i]);
}
printf("total\40avervage\40MaxScore\40MinScore\n");
for (i = 0; i <= players - 1; i++) { /*输出每个参赛选手的成绩*/
printf("player %d\40", ++i);
for (j = 0; j <= 4; j++) {
printf("%.1f\40", players_score[i][j]);
};
for (j = 0; j <= 4; j++) {
sum = sum + players_score[i][j];
}
printf("%.1f\40", sum); /*total值(总分)*/
printf("%.1f\40", sum / 5); /*average值(平均分)*/
j = 0;
for (k = 0; k <= 4; k++) {
maopaopaixu[k] = players_score[i][j];
j++; /*将players_score数组的其中一行数据列赋值给一个新数组,使其方便进行冒泡排序算法*/
};
for (k = 0; k <= z; k++) {
for (int l = 1; l <= m; l++) {
if (maopaopaixu[k] > maopaopaixu[++k]) {
t = maopaopaixu[k];
maopaopaixu[k] = maopaopaixu[++k]; /*前一个比后一个大,于是交换*/
maopaopaixu[++k] = t;
}
}
m--;
z--;
} /*冒泡排序算法的过程*/
MaxScore = maopaopaixu[4];
MinScore = maopaopaixu[0];
printf("%.1f\40", MaxScore);
printf("%.1f\40", MinScore);
}
getchar();
return 0;
}
让ChatGpt帮你检查了一下,回答如下
在检查代码之前,我想提醒您一些事项:
不要在主函数中使用gets()函数,它容易导致缓冲区溢出,应该使用fgets()函数代替。
确保数组的大小与程序中使用的大小匹配,否则会导致内存错误。
避免在for循环中使用全局变量。
变量命名应具有可读性,以便程序易于理解和维护。
下面是检查代码时发现的问题:
在第17行,应该将“gets(players_score)”更改为“scanf("%f", &players_score[i][j])”,以将输入的值存储到二维数组中。
在第34行,应该更改“++i”为“i + 1”,以避免在同一循环中使用两次自增运算符。
在第35行,应该使用fgets()函数代替gets()函数。
在第46行,应该将“int m”更改为“int m = 4”,以便在后续冒泡排序算法中使用。
在第49行,应该将“t = maopaopaixu[k]”更改为“t = maopaopaixu[l]”,以确保交换正确的两个变量。
在第51行,应该将“maopaopaixu[++k]”更改为“maopaopaixu[l + 1]”,以避免使用错误的索引。
在第54行,应该使用“%c”格式符号来打印字符,而不是使用“%s\40”。
在第56行,应该使用“%f”格式符号来打印浮点数,而不是使用“%d”。
在第59行,应该将“printf("%.1f\40", MinScore)”更改为“printf("%.1f\n", MinScore)”,以便在输出中换行。
在第61行,应该使用“return 0;”代替“getchar(); return 0;”,以避免程序等待用户按任意键。
不知道你这个问题是否已经解决, 如果还没有解决的话:class Test
{
public:
Test(){}
virtual void func(){}
virtual int* func1(){}
~Test(){}
private:
char a;
int b;
double c;
}
我们只要知道,类的成员才是类的,内存对齐规则和结构体相同,有虚函数存在的,只是多了一个虚表指针,有了指针就和多少位的系统有关系了。
在你的代码基础上修改的,仅供参考!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
int players = 0; /* 选手的人数 */
float sum = 0; /* 每位选手成绩的分数总和 */
int i, j, k, t; /* t为冒泡排序算法的中间变换参量 */
int m = 5, z = 5;
float MaxScore = 0, MinScore = 0; /* 每位参赛选手的评委评分的最高分数和最低分数 */
float maopaopaixu[5] = {0};
printf("Enter the number of players:\n");
scanf("%d", &players); /* 输入参赛选手的人数 */
if (players < 1)
return -1;
float players_score[players][5];
/* 纪录参赛选手成绩的数组矩阵 */
for (i = 0; i <= players - 1; i++)
{ /* 输入每个参赛选手的成绩 */
printf("now player %d\n", 1 + i); /*这里有问题已修改*/
printf("please input score:\n");
for (j = 0; j <= 4; j++)
{
//gets(players_score);
/*这里有问题已修改*/
scanf("%f", &players_score[i][j]);
};
printf("\n");
};
printf("%s\40", "player");
char judgeMan[6] = "ABCDE";
for (i = 0; i < 5; i++)
{
printf("judge%c\40", judgeMan[i]);
}
printf("total\40avervage\40MaxScore\40MinScore\n");
for (i = 0; i <= players - 1; i++)
{ /* 输出每个参赛选手的成绩 */
printf("player %d\40", 1 + i);
for (j = 0; j <= 4; j++)
{
printf("%.1f\40", players_score[i][j]);
};
for (j = 0; j <= 4; j++)
{
sum = sum + players_score[i][j];
}
printf("%.1f\40", sum); /* total值(总分) */
printf("%.1f\40", sum / 5); /* average值(平均分) */
sum = 0;
j = 0;
for (k = 0; k <= 4; k++)
{
maopaopaixu[k] = players_score[i][j];
j++; /* 将players_score数组的其中一行数据列赋值给一个新数组,使其方便进行冒泡排序算法 */
};
int m1 = 5;
for (int i = 0; i < m1; i++)
{
for (int j = 0; j < m1 - 1; j++)
{
if (maopaopaixu[j] > maopaopaixu[1 + j])
{
t = maopaopaixu[j];
maopaopaixu[j] = maopaopaixu[1 + j]; /* 前一个比后一个大,于是交换 */
maopaopaixu[1 + j] = t;
}
}
m1--;
} /* 冒泡排序算法的过程 */
MaxScore = maopaopaixu[4];
MinScore = maopaopaixu[0];
printf("%.1f\40", MaxScore);
printf("%.1f\40", MinScore);
puts("");
}
getchar();
return 0;
}