有没有再简易点的代码?

exvyme-avatar

exvyme

2025-04-18T09:21:52+00:00

这个代码大概的主要功能就是个输入每个同学所考分数,计算总和,用冒泡法由高到低排序,再说出哪个分段是哪位同学(其他表达也许有误)

#include <stdio.h>
int main() {
int i, j, t;
int a[4][5], s[4] = {0}, index[4];

// 输入学生成绩
for (i = 0; i < 4; i++) {
printf("请输入第%d同学的成绩:\n", i + 1);
for (j = 0; j < 5; j++)
scanf("%d", &a[j]);
}

// 计算每个学生的总分
for (i = 0; i < 4; i++)
for (j = 0; j < 5; j++)
s += a[j];

// 初始化索引数组
for (i = 0; i < 4; i++)
index = i;

printf("总分分别是:\n");
for (i = 0; i < 4; i++)
printf("%5d", s);
printf("\n");

// 冒泡排序并同步交换索引
for (i = 0; i < 3; i++) {
for (j = 0; j < 3 - i; j++) {
if (s[j] > s[j + 1]) {
// 交换总分
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
// 交换索引
int temp = index[j];
index[j] = index[j + 1];
index[j + 1] = temp;
}
}
}

// 输出排序结果及对应学号
printf("按总分排序后的结果及学生序号:\n");
for (i = 0; i < 4; i++)
printf("学生%d 总分:%5d\n", index + 1, s);

return 0;
}
jamie-avatar

jamie

找AI跑,多跑几次
Gum-avatar

Gum

扔给claude3.7,ta写的比大部分人好。
ssongsu-avatar

ssongsu

这位同学,我是你的老师,自己的作业自己做哦
exvyme-avatar

exvyme

+ by [zzmm_C] (undefined)

这位同学,我是你的老师,自己的作业自己做哦

哈哈,这就是我和老师整得,主要以我为思考
exvyme-avatar

exvyme

+ by [yuxiaoluov] (undefined)

扔给claude3.7,ta写的比大部分人好。

不太了解,这是个啥软件吗claude3.7
killister-avatar

killister

/* 输入学生成绩,计算总分 */
for (i = 0; i < 4; i++) {
printf("请输入第%d同学的成绩:\n", i + 1);
for (j = 0; j < 5; j++) {
scanf("%d", &a[j]);
s = s + a[j];
}
}

能少一组2维循环吧。
killister-avatar

killister

用论坛这版面写代码,毫无美感。
AgUn-avatar

AgUn

求和可以在输入的时候就直接求了;
其次,排序直接sort
Jerillium-avatar

Jerillium

建议以后代码直接截图,这没缩进的代码看的脑仁疼哭笑
Abdulkhadir16-avatar

Abdulkhadir16

+ by [hoelinka] (undefined)

用论坛这版面写代码,毫无美感。

加个 [ code ] [ /code ] 能好点,甚至能着色


Code c:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:

#include <stdio.h>
int main() {
int i, j, t;
int a[4][5], s[4] = {0}, index[4];

// 输入学生成绩
for (i = 0; i < 4; i++) {
printf("请输入第%d同学的成绩:\n", i + 1);
for (j = 0; j < 5; j++)
scanf("%d", &a[i][j]);
}

// 计算每个学生的总分
for (i = 0; i < 4; i++)
for (j = 0; j < 5; j++)
s[i] += a[i][j];

// 初始化索引数组
for (i = 0; i < 4; i++)
index[i] = i;

printf("总分分别是:\n");
for (i = 0; i < 4; i++)
printf("%5d", s[i]);
printf("\n");

// 冒泡排序并同步交换索引
for (i = 0; i < 3; i++) {
for (j = 0; j < 3 - i; j++) {
if (s[j] > s[j + 1]) {
// 交换总分
t = s[j];
s[j] = s[j + 1];
s[j + 1] = t;
// 交换索引
int temp = index[j];
index[j] = index[j + 1];
index[j + 1] = temp;
}
}
}

// 输出排序结果及对应学号
printf("按总分排序后的结果及学生序号:\n");
for (i = 0; i < 4; i++)
printf("学生%d 总分:%5d\n", index[i] + 1, s[i]);

return 0;
}
BonkSupreme-avatar

BonkSupreme

没法再简化了,就是这些环节,顶多是写个类把学生的名字总分封装一下增加可读性
大概是这样,手机打着不方便,构造函数把数组动态分配一下,析构函数释放就行了,主函数里搞个Student类的动态数组,先输入有几个人,每人几个科目,排序正常排最后把name和sum关联输出就行
class Student
{
public:
string name;
double *score, sum;
Student operator= ( Student _other )
{
string temp_name = name;
double *temp_score = score, temp_sum = sum;
_other.name = temp_name;
_other.score = temp_score;
_other.sum = temp_sum;
}
};
Zeffo-avatar

Zeffo

首先,变量命名别搞这些ijk、abc了,增加点可读性吧

看了下,至少可以把输入,计算总分、输出总分放到一个循环里做吧
Dust It Off-avatar

Dust It Off

为啥要用cpp?
トラッシュ- dJ-avatar

トラッシュ- dJ

Code c:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:

#include <studio.h>

int main(){
    
    int s[4] = {0}, index[4] = {0,1,2,3};
    for (i = 0; i < 4; i++) {
        printf("请输入第%d同学的成绩:\n", i + 1);
        // 直接算总分
        int input = 0;
        for (j = 0; j < 5; j++){
            scanf("%d", &input);
            s[i] += input;
        }
    }
    printf("总分分别是:\n");
    for (i = 0; i < 4; i++){
        printf("%5d", s[i]);
        printf("\n");
    }
    // 冒泡排序并同步交换索引 , 只交换index的顺序, index指向对应的sum
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 3 - i; j++) {
            if (s[index[j]] > s[index[j + 1]]) {
                swap(index[j], index[j + 1]);
            }
        }
    }
    // 输出排序结果及对应学号
    printf("按总分排序后的结果及学生序号:\n");
    for (i = 0; i < 4; i++)
        printf("学生%d 总分:%5d\n",index[i] + 1, s[index[i]]);
    return 0;
}
TheAccuser-avatar

TheAccuser

+ by [yuxiaoluov] (undefined)

扔给claude3.7,ta写的比大部分人好。
讲个恐怖故事,我让 3.7 写一个时区转换的方法,反反复复给他纠正,它才勉强写了一个能用的。

虽然 3.5 用着还行,还蛮期待 3.7 的,但这次真让我大开眼界了,反反复复错了好多好多次,还是一眼错的程度。

实际上自己上手写,就一行代码搞定。
AEG Steve-avatar

AEG Steve

让ai写呗,大概率写的比你好
𝓖𝓸𝓽𝓱𝓲𝓪𝓷𝓪♡-avatar

𝓖𝓸𝓽𝓱𝓲𝓪𝓷𝓪♡

你又不搞算法竞赛,代码能跑不就行了。
ohnoitsleo-avatar

ohnoitsleo

从代码的简洁度来说可以用快速排序,因为是递归,代码相对少点,缺点是处理大量数据时占用内存比较高