vs2015吧 关注:9,573贴子:25,396
  • 1回复贴,共1

一段代码看看有什么问题

只看楼主收藏回复

#include<stdio.h>
#include<string.h>
struct student {
char xuehao[10];
char name[10];
double English, computer, Chinese, math;
double num;
double average1, average2, average3, average4;
int mingci;
};
int main(void)
{
int choice, j = 1, i, min1, min2, min3, min4, max1, max2, max3, max4, k,b;
char a, name1[100] = { "\0" };
char lessons[100] = { "\0" };
struct student shuru,s1[90], s2[90],s3[100] ,temp;
double a1 = 0, a2 = 0, a3 = 0, a4 = 0;
while (j == 1)
{
printf("********************************\n");
printf("学生成绩管理系统\n");
printf("********************************\n");
printf("1.输入学生成绩\n");
printf("2.查询学生成绩\n");
printf("3.修改学生成绩\n");
printf("4.输出学生成绩\n");
printf("5.退出系统\n");
printf("请选择\n");
scanf("%d", &choice);
if (choice == 5)
break;
switch (choice) {
case 1:
loop: printf("输入学生学号,姓名,英语成绩,计算机成绩,语文成绩,数学成绩\n");
for (i = 0; i < 5; i++)
{
printf("学生成绩输入模块界面\n");
printf("****************************************\n");
printf("No %d;", i + 1);
printf("学号:");
scanf("%s", shuru.xuehao, 10);
printf("姓名:");
scanf("%s", shuru.name, 10);
printf("英语成绩:");
scanf("%lf", &shuru.English);
printf("计算机成绩:");
scanf("%lf", &shuru.computer);
printf("语文成绩:");
scanf("%lf", &shuru.Chinese);
printf("数学成绩:");
scanf("%lf", &shuru.math);
shuru.num = shuru.English + shuru.computer + shuru.Chinese + shuru.math;
s1[i] = shuru;
s2[i] = shuru;
s3[i] = shuru;
a1 = a1 + shuru.English;
a2 = a2 + shuru.computer;
a3 = a3 + shuru.Chinese;
a4 = a4 + shuru.math;
}shuru.average1 = a1 / 5;
shuru.average2 = a2 / 5;
shuru.average3 = a3 / 5;
shuru.average4 = a4 / 5;
min1 = 0; min2 = 0; min3 = 0; min4 = 0; max1 = 0; max2 = 0; max3 = 0; max4 = 0;
printf("****************************************\n");
printf("是否继续?(Y/N);");
getchar();
a = getchar();
if (a == 'Y')
goto loop;
if (a == 'N')
break;
case 2:
loop1:printf("1.按姓名查询\n");
printf("2.按课程查询\n");
printf("3.按总分名次查询\n");
printf("请选择\n");
scanf("%d", &choice);
if (choice == 1)
{
printf("输入姓名:");
getchar();
gets(name1);
for (i = 0; i < 5; i++)
{
if (strcmp(name1, s1[i].name) == 0)
break;
}
printf("学号%s 姓名%s 英语成绩%.1f 计算机成绩%.1f 语文成绩%.1f 数学成绩%.1f\n", s1[i].xuehao, s1[i].name, s1[i].English, s1[i].computer, s1
[i].Chinese, s1[i].math);
printf("****************************************\n");
printf("是否继续?(Y/N):");
a = getchar();
if (a == 'Y')
goto loop1;
if (a == 'N')
break;
}
else if (choice == 2)
{
for (i = 0; i < 5; i++) {
a1 = a1 + s1[i].English;
a2 = a2 + s1[i].computer;
a3 = a3 + s1[i].Chinese;
a4 = a4 + s1[i].math;
}
shuru.average1 = a1 / 5;
shuru.average2 = a2 / 5;
shuru.average3 = a3 / 5;
shuru.average4 = a4 / 5;
for (i = 0; i < 5; i++)
{
if (s1[i].English < s1[min1].English)
min1 = i;
if (s1[i].computer < s1[min2].computer)
min2 = i;
if (s1[i].Chinese < s1[min3].Chinese)
min3 = i;
if (s1[i].math < s1[min4].math)
min4 = i;
if (s1[i].English > s1[max1].English)
max1 = i;
if (s1[i].computer > s1[max2].computer)
max2 = i;
if (s1[i].Chinese > s1[max3].Chinese)
max3 = i;
if (s1[i].math > s1[max4].math)
max4 = i;
}
printf("输入课程:");
getchar();
gets(lessons);
if (strcmp(lessons, "English") == 0)
printf("英语平均分%.1f 英语最高分%.1f 英语最低分%.1f\n", shuru.average1, s1[max1].English, s1[min1].English);
else if (strcmp(lessons, "computer") == 0)
printf("计算机平均分%.1f,计算机最高分%.1f,计算机最低分%.1f\n", shuru.average2, s1[max2].computer, s1[min2].computer);
else if (strcmp(lessons, "Chinese") == 0)
printf("语文平均分%.1f,语文最高分%.1f,语文最低分%.1f\n", shuru.average3, s1[max3].Chinese, s1[min3].Chinese);
else if (strcmp(lessons, "math") == 0)
printf("数学平均分%.1f,数学最高分%.1f,数学最低分%.1f\n", shuru.average4, s1[max4].math, s1[min4].math);
printf("****************************************\n");
printf("是否继续?(Y/N):");
a = getchar();
if (a == 'Y')
goto loop1;
if (a == 'N')
break;
}
else if (choice == 3)
{
for (i = 0; i < 5; i++)
s3[i] = s1[i];
for (k = 0; k < 4; k++) {
for (i = k + 1; i < 5; i++)
if (s3[i].num > s3[k].num)
{
temp = s3[i];
s3[i] = s3[k];
s3[k] = temp;
}
}
for (i = 0; i < 5; i++)
{
printf("第%d名:", i + 1);
printf("学号%s 姓名%s 英语成绩%.1f 计算机成绩%.1f 语文成绩%.1f 数学成绩%.1f 总分%.1f\n", s3[i].xuehao, s3[i].name, s3[i].English, s3[i].computer, s3[i].Chinese, s3[i].math, s3[i].num);
}
printf("****************************************\n");
printf("是否继续?(Y/N):");
getchar();
a = getchar();
if (a == 'Y')
goto loop1;
if (a == 'N')
break;
}
case 3: //修改学生成绩
loop2:printf("输入学生姓名:");
getchar();
gets(name1);
for (i = 0; i <


IP属地:浙江来自Android客户端1楼2016-12-28 14:33回复
    case 3: //修改学生成绩
    loop2:printf("输入学生姓名:");
    getchar();
    gets(name1);
    for (i = 0; i < 5; i++)
    {
    if (strcmp(name1, s1[i].name) == 0)
    break;
    }
    printf("输入成绩需修改的科目:");
    gets(lessons);
    printf("请输入:");
    if (strcmp(lessons, "English") == 0)
    scanf("%lf", &s1[i].English);
    else if (strcmp(lessons, "computer") == 0)
    scanf("%lf", &s1[i].computer);
    else if (strcmp(lessons, "Chinese") == 0)
    scanf("%lf", &s1[i].Chinese);
    else if (strcmp(lessons, "math") == 0)
    scanf("%lf", &s1[i].math);
    for (i = 0; i < 5; i++)
    {
    s1[i].num = s1[i].English + s1[i].computer + s1[i].Chinese + s1[i].math;
    }
    printf("****************************************\n");
    printf("是否继续?(Y/N):");
    getchar();
    a = getchar();
    if (a == 'Y')
    goto loop2;
    if (a == 'N')
    break;
    case 4:
    { for (i = 0; i < 5; i++)
    {
    if (s1[i].English < s1[min1].English)
    min1 = i;
    if (s1[i].computer < s1[min2].computer)
    min2 = i;
    if (s1[i].Chinese < s1[min3].Chinese)
    min3 = i;
    if (s1[i].math < s1[min4].math)
    min4 = i;
    if (s1[i].English > s1[max1].English)
    max1 = i;
    if (s1[i].computer > s1[max2].computer)
    max2 = i;
    if (s1[i].Chinese > s1[max3].Chinese)
    max3 = i;
    if (s1[i].math > s1[max4].math)
    max4 = i;
    }
    for (i = 0; i < 5; i++) {
    a1 = a1 + s1[i].English;
    a2 = a2 + s1[i].computer;
    a3 = a3 + s1[i].Chinese;
    a4 = a4 + s1[i].math;
    }
    shuru.average1 = a1 / 5;
    shuru.average2 = a2 / 5;
    shuru.average3 = a3 / 5;
    shuru.average4 = a4 / 5;
    for (i = 0; i < 5; i++)
    s3[i] = s1[i];
    for (k = 0; k < 4; k++) {
    for (i = k + 1; i < 5; i++)
    if (s3[i].num > s3[k].num)
    {
    temp = s3[i];
    s3[i] = s3[k];
    s3[k] = temp;
    }
    }
    b = 1;
    for (i = 0; i < 5; i++) {
    s3[i].mingci = b;
    for (k = 0; k < 5; k++)
    if (strcmp(s1[k].name, s3[i].name) == 0)
    {
    s1[k]


    IP属地:浙江来自Android客户端2楼2016-12-28 15:01
    回复