100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > c语言 期末 c语言期末 求助

c语言 期末 c语言期末 求助

时间:2022-01-21 23:25:54

相关推荐

c语言 期末 c语言期末 求助

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

要求如上,经过百度已经完成1,2,3点要求 请大佬帮帮忙完成最后一点。下面附上代码

#include

#include

#include

#define MAXN 35

#define MAX_NAME 256

typedef struct student //学生信息

{

int no;

char name[MAX_NAME];

double C;

double sensor;

double mark_ave;

double mark_tot;

} STUDENT;

/*-----------1输入信息子程序---------*/

void input(STUDENT *data, int *len)

{

int no;

putchar('\n');

printf("%s\n", "请输入新的记录,如果需要退出当前菜单请输入-1.");

printf("%s\n", "格式:\n学号\n");

printf("%s\n", "姓名\tC语言\t传感器");

putchar('\n');

printf("如:\n");

printf("1\n");

printf("小明\t93\t95\n");

scanf("%d", &no);

while(no != -1) {

data[*len].no = no;

scanf("%s%lf%lf",data[*len].name, &data[*len].C, &data[*len].sensor);data[*len].mark_ave=(data[*len].C+data[*len].sensor)/2.0;data[*len].mark_tot=data[*len].C+data[*len].sensor;

(*len)++;

scanf("%d", &no);

}

}

/*---------------2输出信息子程序---------------*/

void output(STUDENT *data, int len)

{

int i;

//system("cls");

printf("%s\t", "学号");

printf("%s\t", "姓名");

printf("%s\t", "c语言");

printf("%s\t", "传感器");

printf("%s\t", "平均分");

printf("%s\t", "总分");

putchar('\n');

for (i =0; i < 80; i++)

putchar('=');

putchar('\n');

for (i = 0; i< len; i++)

{

printf("%d\t", data[i].no);

printf("%s\t", data[i].name);

printf("%.1lf\t", data[i].C);

printf("%.1lf\t", data[i].sensor);

printf("%.1lf\t", data[i].mark_ave);

printf("%.1lf\t", data[i].mark_tot);

putchar('\n');

}

for (i =0; i < 80; i++)

putchar('=');

putchar('\n');

printf("按回车键继续.");

getchar();

getchar();

}

/*--------------3排序子程序------------*/

void sort(STUDENT *data, int *len)

{

int i,j,k;

STUDENT *temp,t;

temp=&t;

for (i=0; i

for (k=i, j=i+1; j

if (data[k].mark_ave < data[j].mark_ave)

{

k=j;

}

if (k != i) {

*temp = data[i];

data[i] = data[k];

data[k] = *temp;

}

}

}

/*--------------------4搜索子程序-----------------------*/

void find(STUDENT *data, int len)

{

int find_no, result ;

int i;

lab: result=0;

printf("%s\n", "请输入需要查找的学生的学号,退出当前菜单请输入 -1.");

scanf("%d", &find_no);

if (find_no == -1) return; /*exit the fine sub program*/

while( data[result].no != find_no && result < len) result ++;

if (result >= len ) {

printf("%s\n", "未查询到相关信息");

goto lab;

}

else {

//system("cls");

printf("%s\n", "查询信息如下:");

for (i =0; i < 80; i++)

putchar('=');

putchar('\n');

printf("%s\t", "学号");

printf("%s\t", "姓名");

printf("%s\t", "C语言");

printf("%s\t", "传感器");

printf("%s\t", "平均分");

printf("%s\t", "总分");

putchar('\n');

printf("%d\t", data[result].no);

printf("%s\t", data[result].name);

printf("%.1lf\t", data[result].C);

printf("%.1lf\t", data[result].sensor);

printf("%.1lf\t", data[result].mark_ave);

printf("%.1lf\t", data[result].mark_tot);

putchar('\n');

for (i =0; i < 80; i++)

putchar('=');

putchar('\n');

goto lab;

}

}

/*-----------------5插入子程序-------------*/

void insert(STUDENT *data, int *len)

{

int no, pos;

double C, sensor, mark_ave, mark_tot;

int i;

char name[MAX_NAME];

lab: printf("%s\n", "输入新的记录,退出当前菜单请输入-1.");

printf("%s\n", "格式:学号\t姓名\tC语言\t传感器");

scanf("%d", &no);

if (no == -1) return;

data[*len].no = no;

scanf("%s%lf%lf%lf", name, &C, &sensor);

mark_ave=(C+sensor)/2.0;

mark_tot=C+sensor;

pos = 0;

while ((data[pos].mark_ave < mark_ave) && (pos < *len) )

pos ++;

for (i = *len-1; i >= pos; i--)

data[i+1] = data[i];

data[pos].no = no;

strcpy(data[pos].name, name);

data[pos].C = C;

data[pos].sensor = sensor;

data[pos].mark_ave = mark_ave;

data[pos].mark_tot = mark_tot;

(*len)++;

goto lab;

}

/*-------------删除子程序--------------*/

void delete_item(STUDENT *data, int *len)

{

int no, i, pos;

lab: pos=0;

printf("%s\n", "输入需要删除的学生的学号,退出当前菜单请输入-1.");

scanf("%d", &no);

if (no == -1) return;

while( (data[pos].no != no) && (pos < *len) ) pos = pos +1;

if (pos >= *len) {

printf("%s\n", "未找到需要删除的学生");

goto lab;

}

else {

for (i = pos+1;i < *len; i++)

data[i-1] = data[i];

*len = *len -1;

if (*len == 0) {

printf("%s\n", "没有任何记录,请按回车键返回.");

getchar();

getchar();

return;

}

goto lab;

}

}

//---------------统计子程序------------

void stat1(STUDENT *data, int *len)

{

int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0;

int i;

for (i = 0;i < *len; i++) {

if (data[i].mark_ave <=59) no_59++;

else if (data[i].mark_ave <=69) no_69++;

else if (data[i].mark_ave <=79) no_79++;

else if (data[i].mark_ave <= 89) no_89++;

else no_100++;

}

//system("cls");

for (i =0; i < 80; i++)

putchar('=');

putchar('\n');

printf("%s\t", "分数");

printf("%s\t", "0--59");

printf("%s\t", "60--69");

printf("%s\t", "70--79");

printf("%s\t", "80--89");

printf("%s\t", "90--100");

putchar('\n');

putchar('\n');

printf("%s\t", "学生");

printf("%d\t", no_59);

printf("%d\t", no_69);

printf("%d\t", no_79);

printf("%d\t", no_89);

printf("%d\t", no_100);

putchar('\n');

for (i =0; i < 80; i++)

putchar('=');

putchar('\n');

printf("按回车键返回");

getchar();

getchar();

}

//---------------显示信息子程序------------

void paint()

{

int i;

//system("cls");

printf("%55s\n", "学生成绩管理系统\n");

for (i = 0; i < 80; i++)

putchar('=');

putchar('\n');

printf(" 1 输入信息 2 输出信息\n");

printf(" 3 按平均分排序 4 按学号查找\n");

printf(" 5 插入 6 按学号删除\n");

printf(" 7 按平均分输出统计信息 8 保存到文件\n");

printf(" 0 退出\n");

for (i = 0; i<= 79; i++)

putchar('=');

putchar('\n');

printf("%s\n", "请输入各操作对应的序号:");

}

void save(STUDENT *data, int len)//将数据保存到文件

{

int i;

FILE *fp;

fp=fopen("成绩统计表.txt","w");

fprintf(fp,"%s\t", "学号");

fprintf(fp,"%s\t", "姓名");

fprintf(fp,"%s\t", "C语言");

fprintf(fp,"%s\t", "传感器");

fprintf(fp,"%s\t", "平均分");

fprintf(fp,"%s\n", "总分");

fprintf(fp,"========================================================================\n");

putchar('\n');

for (i = 0; i< len; i++)

{

fprintf(fp,"%d\t", data[i].no);

fprintf(fp,"%s\t", data[i].name);

fprintf(fp,"%.1lf\t", data[i].C);

fprintf(fp,"%.1lf\t", data[i].sensor);

fprintf(fp,"%.1lf\t", data[i].mark_ave);

fprintf(fp,"%.1lf\n", data[i].mark_tot);

}

fprintf(fp,"========================================================================\n");

fclose(fp);

printf("文件已保存到\"成绩统计表.txt\"");

getchar();getchar();

}

/*-----------主程序--------------*/

int main()

{

STUDENT data[MAXN];

int len = 0;

char ctrl_ch;

paint();

scanf("%c", &ctrl_ch);

while (ctrl_ch != '0') {

switch(ctrl_ch) {

case '1':

input(data, &len);

break;

case '2':

output(data, len);

break;

case '3':

sort(data, &len);

break;

case '4':

find(data, len);

break;

case '5':

insert(data, &len);

break;

case '6':

delete_item(data, &len);

break;

case '7':

stat1(data, &len);

break;

case '8':

save(data, len);

break;

default:

if (ctrl_ch != '\n') printf("%s\n", "输入错误!");

break;

}

if (ctrl_ch != '\n') paint();

scanf("%c", &ctrl_ch);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。