我的代码如下(CE):
#include<stdio.h>
#include<string.h>
typedef struct Student{
char name[100];
int age;
int grade;
}stu;
void change(stu stu[], int i, int j){
char temp_n[100];
int temp_a, temp_g;
strcpy(temp_n, stu[j].name);//j to temp
temp_a = stu[j].age;
temp_g = stu[j].grade;
strcpy(stu[j].name, stu[i].name);//i to j
stu[j].age = stu[i].age;
stu[j].grade = stu[i].grade;
strcpy(stu[i].name, temp_n);//temp to i
stu[i].age = temp_a;
stu[i].grade = temp_g;
}
int judge(char str1[], char str2[]){//1 shows str1 is the former one
int len1, len2, len;
int a, b;
len = len1 > len2 ? len2 : len1;
for(int i = 0; i < len; i++){
a = (int)str1[i];
b = (int)str2[i];
if(a < b)
return 1;
else if(a > b)
return -1;
}
if(len1 < len2)
return 1;
else if(len1 > len2)
return -1;
}
void sortstu(stu stu[], int n){
int k;
for(int i = 0; i < n; i++){
k = i;
for(int j = i + 1; j < n; j++){
if(stu[k].grade > stu[j].grade){//mini指向成绩更小者
k = j;
}else if(stu[k].grade == stu[j].grade){//如果成绩相当,则指向名称更前者
if(judge(stu[k].name, stu[j].name) < 0){
k = j;
}
}
}
change(stu, i, k);
}
}
int main(){
int n;
scanf("%d", &n);
stu stu[n];
for(int i = 0; i < n; i++){
scanf("%s%d%d", stu[i].name, &stu[i].age, &stu[i].grade);
}
// printf("------------\n");
// for(int i = 0; i < n; i++){
// printf("%s %d %d\n", stu[i].name, stu[i].age, stu[i].grade);
// }
// printf("------------\n");
sortstu(stu, n);
for(int i = 0; i < n; i++){
printf("%s %d %d\n", stu[i].name, stu[i].age, stu[i].grade);
}
return 0;
}
又是一个在codeblocks编译成功但遇上牛客网的OJ就编译失败的代码。好歹我也在cb上尝试过好几个例子,至少代码通过率得有个70%+吧,这要求不过分吧,但OJ就说我通过率为0。
问题是编译失败也就算了,我想看看没通过的测试用例改一下程序,但任凭我怎么刷新,关了重开,只要到这个题目上,牛客网给我的测试用例就只有一个:
?这个测试用例完全没有参考性吧!
这篇文章完全是写来吐槽牛客网的,想想可能是我C和C++混用?又挺原汁原味的所以才编译不通过吗?(技术有限,不太会用模板库啥的)
牛客网要求输入输出格式如下:
同一个测试用例,在我的CB上编译就和牛客网的结果不一样,为什么呢?为什么呢?为什么呢!???
cb运行截图:
牛客网运行截图:
????????????????????明明我在cb上的输出跟牛客网要求的标准输出是一致的????????????????????牛客网!真有你的!气死我了!!!!!!算是体会到一点程序员的难处了!!!!!!!
来源:CSDN
作者:weixin_40246778
链接:https://blog.csdn.net/weixin_40246778/article/details/104315460