求C语言程序设计!!急急急急急急急急急急急急急急急急急急急急急急!!!!!!!!!!!!!!!

设学生信息中包括学号 姓名,性别及三门成绩。编写程序或函数完成下列功能;
1,输入若干学生的数据,并且保存在数组中,知道学号为零为止。
2,输出学生信息(包括学生学号,姓名,性别,三门成绩及总分)。
3,试找出总分最高者的姓名和总分,并统计出全体学生的总人数。
要交作业啦 谢谢了。。。

#include <stdio.h>/*标准输入/输出函数库*/
#include <stdlib.h>/*标准函数库*/
#include <string.h>/* 字符串函数库*/
#define TITLE "学生成绩管理系统" /*标题文字*/
#define MAX 10
#define MENU_MAIN_COUNT 8 /*主菜单的选项个数 */
#define MENU_SEARCH_COUNT 4 /*查询子菜单的选项个数 */
#define MENU_CALC_COUNT 3 /*计算子菜单的选项个数 */
//数据结构定义
typedef struct student{
char name[MAX]; /*姓名 */
char num[MAX]; /*学号 */
char sex[MAX]; /*性别*/
int chinese; /*语文成绩*/
int mathematic; /*数学成绩*/
int english; /*英语成绩*/
int computer; /*计算机成绩*/
struct student *next; /*指向下一个学生的指针*/
}stu;

stu*head = NULL;/*student 结构体链表的头节点*/
//函数及变量声明
//1.主要处理函数声明

void input_record(); /*输入学生成绩的处理*/
void show_record(); /*显示学生成绩的处理*/
void search_record(); /*查询学生成绩的处理*/
void update_record(); /*更新学生成绩*/
void delete_record(); /*删除学生成绩*/
void calculate(); /*计算学生成绩*/
void save_to_file(); /*保存到文件的处理*/
void exit_system(); /*退出系统*/

//2.查询子函数声明
void search_by_id(); /*通过学号检索学生的处理*/
void search_by_name(); /*通过姓名检索学生的处理*/
void search_by_sex(); /*通过性别检索学生的处理*/
void search_exit(); /*退出子菜单,返回上级菜单*/

//3.计算子函数声明

void calc_total(); /*计算总成绩的处理*/
void calc_average(); /* 计算平均成绩的处理*/
void calc_exit(); /*退出子菜单,返回上级菜单 */

//4.辅助函数声明

void create_stu_by_input(stu* pNewStu); /*通过输入为student赋值*/
stu* get_last_student(stu* p); /* 找到最后一个学生的记录*/
void clear_record(stu* p); /* 清空所有记录*/

//5.显示控制函数声明

void print_menu_main(); /*显示主菜单*/
void print_menu_title(char* title); /*显示菜单的标题*/

void print_table_head(); /*显示学生记录的表格的头部*/
void print_table_row(stu* p); /*显示一条学生记录*/
void print_table_buttom(); /*显示学生记录的表格的底部*/

void print_table_head_total(); /*显示总分表格的头部*/
void print_table_row_total(stu* p); /*显示一个学生的总分*/
void print_table_buttom_total(); /*显示总分表格的底部*/

void print_table_head_avg(); /*显示平均分表格的头部*/
void print_table_row_avg(stu* p); /*显示一个学生的平均分*/
void print_table_buttom_avg(); /*显示平均分表格的底部*/

//6.全局变量声明

//(1)字符串组menu_main中存储的是主菜单要显示的字符.
char menu_main[] =
"|\n"
"| 1 输入学生成绩\n"
"| 2 显示学生成绩\n"
"| 3 查询学生成绩\n"
"| 4 更新学生成绩\n"
"| 5 删除学生成绩\n"
"| 6 计算学生成绩\n"
"| 7 保存文件\n"
"| 8 退出系统\n"
"|\n";

//(2)函数指针数组menu_main_func存储的是主菜单项中8个功能函数的地址 分别对应1~8菜单项.
void (* menu_main_func[]) () =
{
input_record,
show_record,
search_record,
update_record,
delete_record,
calculate,
save_to_file,
exit_system
};

char menu_search[] =

"|\n"
"| 1 按照学号查询\n"
"| 2 按照姓名查询\n"
"| 3 按照性别查询\n"
"| 4 返回上级菜单\n"
"|\n";

void (* menu_search_func[]) () =
{
search_by_id,
search_by_name,
search_by_sex,
search_exit
};

//(5)字符数组menu_main中存储的是子菜单要显示的字符.
char menu_calc[]=
"|\n"
"| 1 计算总成绩\n"
"| 2 计算平均分\n"
"| 3 返回上级菜单\n"
"|\n";

void (* menu_calc_func[]) () =
{
calc_total,
calc_average,
calc_exit
};

//main函数
//主函数调用函数print_menu_main(),显示主菜单,等待用户输入.

void main()
{
print_menu_main(); /*显示主菜单等待用户输入*/
}

void input_record()
{
char continue_input = 'N';
stu* pLastStu = NULL;
stu* pNewStu =(stu *)malloc(sizeof(stu)); /*创建一个stu*/
pNewStu->next = NULL;
create_stu_by_input(pNewStu); /*让用户为创建的stu赋值*/
if (head == NULL) /*一个都没有*/
{
head = pNewStu;
}
else
{
pLastStu = get_last_student(head);/*找到最后一个*/
pLastStu->next = pNewStu;
}
printf("继续输入学生成绩?(Y继续,N返回菜单)");
getchar();
continue_input = getchar();
if (continue_input=='n' || continue_input=='N')
{

print_menu_main();/*不继续输入,将显示主菜单*/
}
else
{
input_record();/*再次调用这个函数输入新的学生成绩*/
}
}

void show_record()
{
stu* p = head;
print_table_head();/*显示学生成绩的表格的表格头*/
/*逐条显示学生记录*/
while(p != NULL)
{
print_table_row(p);/*显示一个学生信息*/
p = p->next;
}
print_table_buttom();/*显示表格尾*/
printf("按任意键返回菜单..\n");
getchar();
getchar();
print_menu_main();
}

//3.查询学生成绩函数
void search_record()
{
int selected = 0;
system("cls ");
print_menu_title("查询学生成绩");
printf(menu_search);
printf("===================================================\n");
while (!(selected >= 1 && selected <= MENU_SEARCH_COUNT))
{
printf(">请选择:");
scanf("%d",&selected);
if (selected >= 1 && selected <= MENU_SEARCH_COUNT)
{
break;
}
printf("\n>输入错误!(请选择1 - %d)\n",MENU_SEARCH_COUNT);
}
menu_search_func[selected-1] ();/*调用用户选择项所对应的函数*/
}

void search_by_id()
{
char id[MAX];
char continue_input = 'N';
stu* p = head;
int isfound = 0;
printf(">请输入学生学号:");
scanf("%s", id);
printf("\n>查找[%s]...\n",id);
print_table_head();
while (p !=NULL)
{
if(strcmp(p->num,id) == 0)
{
print_table_row(p);
isfound =1;
break;
}
p =p->next;
}
if (!isfound)
printf("\n没有找到结果!\n");
print_table_buttom();
printf("继续查找?(Y继续,N返回)");
getchar();
continue_input = getchar();
if(continue_input == 'Y' || continue_input =='y')
{
search_by_id(); /* 继续调用这个函数来查找*/
}
else
{
search_record(); /*重新显示查询子菜单,即返回菜单*/
}
}

void search_by_name()
{
char name[MAX];
char continue_input = 'N';
stu* p = head;
int isfound = 0;
printf(">请输入学生姓名:");
scanf("%s",name);
printf("\n>查找[%s]...\n",name);
print_table_head();
while (p != NULL)
{
if(strcmp(p->name,name) == 0)
{
print_table_row(p);
isfound = 1;
}
p = p->next;
}
if (!isfound)
printf("\n没有找到结果!\n");
print_table_buttom();
printf("继续查找?(Y继续,N返回)");
getchar();
continue_input = getchar();
if(continue_input == 'Y' || continue_input =='y')
{
search_by_name();
}
else
{
search_record();
}
}

void search_by_sex()
{
char sex[MAX];
char continue_input = 'N';
stu* p = head;
int isfound = 0;
printf(">请输入学生性别:");
scanf("%s",sex);
printf("\n>查找[%s]...\n",sex);
print_table_head();
while (p != NULL)
{
if(strcmp(p->sex,sex) == 0)
{
print_table_row(p);
isfound = 1;
}
p = p->next;
}
if (!isfound)
printf("\n没有找到结果!\n");
print_table_buttom();
printf("继续查找?(Y继续,N返回)");
getchar();
continue_input = getchar();
if(continue_input == 'Y' || continue_input =='y')
{
search_by_sex();
}
else
{
search_record();
}
}

void search_exit()
{
print_menu_main();
}

void update_record()
{
stu* p = head;
char id[MAX];
char continue_input = 'N';
printf(">请输入要更新的学生学号:");
scanf("%s",id);
while (p != NULL)
{
if(strcmp(p->num,id) == 0)
{
break;
}
p = p->next;
}
if (p == NULL)
{
printf("没有学号是[%s]的学生.",id);
}
else
{
create_stu_by_input(p);
}
printf("继续更新?(Y继续,N返回菜单)");
getchar();
continue_input = getchar();
if(continue_input == 'n' || continue_input =='N')
{
print_menu_main();
}
else
{
update_record();
}
}

void delete_record()
{
stu* p = head;
stu* pPre = NULL;
char id[MAX];
char continue_input = 'N';
printf(">请输入要删除的学生学号:");
scanf("%s",id);
while (p != NULL)
{
if(strcmp(p->num,id) == 0)
{
break;
}
p = p->next;
}
if (p == NULL)
{
printf("没有学号是[%s]的学生.",id);
}
else
{
printf("确定要删除学号为[%s]姓名为[%s]的学生吗?(Y 确定,N 取消)",p->num,p->name);
getchar();
continue_input = getchar();
if(continue_input == 'Y' || continue_input =='y')
{
pPre = head;
if(pPre == p)
{
head = p->next;
free(p);
}
else
{
while (pPre !=NULL)
{
if(pPre->next == p)
{
pPre->next = p->next;
free(p);
break;
}
pPre = pPre->next;
}
}
printf(">删除成功!\n");
}
}
printf("继续删除吗?(Y继续,N返回菜单)");
getchar();
continue_input = getchar();
if(continue_input == 'n' || continue_input =='N')
{
print_menu_main();
}
else
{
delete_record();
}
}

void calculate()
{
int selected = 0;
system("cls");
print_menu_title("计算学生成绩");
printf(menu_calc);
printf("===================================================\n");
while (!(selected >= 1 && selected <= MENU_CALC_COUNT))
{
printf(">请选择:");
scanf("%d",&selected);
if (selected >= 1 && selected <= MENU_CALC_COUNT)
{
break;
}
printf("\n>输入错误!(请选择1 - %d)\n",MENU_CALC_COUNT);
}
menu_calc_func[selected-1] ();/*调用用户选择项所对应的函数*/
}

void calc_total()
{
stu* p = head;
print_table_head_total();
while (p != NULL)
{
print_table_row_total(p);
p = p->next;
}

print_table_buttom_total();
printf("按任意键返回菜单..\n");
getchar();
getchar();
calculate();
}
void calc_average()
{
stu* p = head;
print_table_head_avg();
while (p != NULL)
{
print_table_row_avg(p);
p = p->next;
}

print_table_buttom_avg();
printf("按任意键返回菜单..\n");
getchar();
getchar();
calculate();
}

void calc_exit()
{
print_menu_main();
}

void save_to_file()
{
FILE *fp;
char file[100];
stu* p = head;
printf("请输入文件名:");
scanf("%s",file);
fp=fopen(file,"w");
while(p != NULL)
{
fprintf(fp,"%s,%s,%s,%d,%d,%d,%d\n",p->num,p->name,p->sex,p->chinese,p->mathematic,p->english,p->computer);
p=p->next;
}
fclose(fp);
printf("保存成功!\n按任意键返回菜单..\n");
getchar();
getchar();
print_menu_main();
}

void exit_system()
{
clear_record(head);/*释放整个链表*/
exit(0);
}

void print_menu_main()
{
int selected = 0; /*用户选择的菜单项*/
system("cls"); /*清屏*/
print_menu_title(TITLE); /*显示标题*/
printf(menu_main); /*显示菜单字符*/
printf("===================================================\n");/* 如果用户没有选择或者选择错误,循环等待*/
while (!(selected >= 1 && selected <= MENU_MAIN_COUNT))
{
printf(">请选择:");
scanf("%d",&selected);
if (selected >= 1 && selected <= MENU_MAIN_COUNT)
{
break;
}
printf("\n>输入错误!(注请选择1 - %d)\n",MENU_MAIN_COUNT);
/*调用用户选择菜单项对应的函数指针数组中的函数*/
menu_calc_func[selected-1] ();
}
}
void create_stu_by_input(stu* pNewStu)
{
printf(">请输入学生信息(注:最大长度是10个字符):\n");
printf("学号:");
scanf("%s",pNewStu->num);
printf("姓名:");
scanf("%s",pNewStu->name);
printf("性别:");
scanf("%s",pNewStu->sex);
printf(">请输入%s的成绩(注:成绩范围0-100):\n",pNewStu->name);
printf("语文:");
scanf("%d",&(pNewStu->chinese));
printf("数学:");
scanf("%d",&(pNewStu->mathematic));
printf("英语:");
scanf("%d",&(pNewStu->english));
printf("计算机:");
scanf("%d",&(pNewStu->computer));
fflush(stdin)
}

stu* get_last_student(stu* p)
{
if (p->next == NULL)
{
return p;
}
else
{
return get_last_student(p->next);
}
}

void clear_record(stu* p)
{
if (p == NULL)
{
return;
}
/* 如果student结构体的next指针是空则表示没有下一条数据,删除该节点*/
if (p->next == NULL)
{
free(p);
}
/* 如果student结构体的next指针不为空,*/
else
{
clear_record(p->next);
/* 再次调用本函数,student结构体的next指 向的节点作为参数*/
free(p); /*删除当前节点*/

p = NULL; /*将指针置空*/
}
}

void print_menu_title(char* title)
{
printf("===================================================\n");
printf("| %s\n",title);
printf("---------------------------------------------------\n");
}

void print_table_head()
{
printf("+----------+----------+----------+----+----+----+------+\n");
printf("| 学号 | 姓名 | 性别 |语文|数学|英语|计算机|\n");
printf("+----------+----------+----------+----+----+----+------+\n");
}

void print_table_head_total()
{
printf("+----------+----------+----------+----+----+----+------+------+\n");
printf("| 学号 | 姓名 | 性别 |语文|数学|英语|计算机|总成绩|\n");
printf("+----------+----------+----------+----+----+----+------+------+\n");
}

void print_table_head_avg()
{
printf("+----------+----------+----------+----+----+----+------+------+------+\n");
printf("| 学号 | 姓名 | 性别 |语文|数学|英语|计算机|平均成绩|\n");
printf("+----------+----------+----------+----+----+----+------+------+------+\n");
}

void print_table_row(stu* p)
{
printf("|%10s|%10s|%10s|%4d|%4d|%4d|%6d|\n",
p->num,p->name,p->sex,p->chinese,p->mathematic,p->english,p->computer);
}

void print_table_row_total(stu* p)
{
int t = p->chinese+p->mathematic+p->english+p->computer;
printf("|%10s|%10s|%10s|%4d|%4d|%4d|%6d|%6d|\n",
p->num,p->name,p->sex,p->chinese,p->mathematic,p->english,p->computer,t);
}

void print_table_row_avg(stu* p)
{
float a = ((float)(p->chinese+p->mathematic+p->english+p->computer)) /(float)4.0;
printf("|%10s|%10s|%10s|%4d|%4d|%4d|%6d|%8.1f|\n",
p->num,p->name,p->sex,p->chinese,p->mathematic,p->english,p->computer,a);
}

void print_table_buttom()
{
printf("+----------+----------+----------+----+----+----+------+\n");

}

void print_table_buttom_total()
{
printf("+----------+----------+----------+----+----+----+------+------+\n");
}
void print_table_buttom_avg()
{
printf("+----------+----------+----------+----+----+----+------+------+ \n");

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-11
1,
main(){
int c,i;
int a[10];a[0]=2;a[1]=3;
for(i=2;i<10;i++)
a[i]=a[i-1]*a[i-2];
for(i=0;i<10;i++)
printf("%d",a[i]);}
2,
main()
{
int a[10];
int i,j,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
for(i=0;i<(9-j);i++)
if(a[i]>a[i+1])
{a[i]=k;
k=a[i+1];
a[i+1]=k;}
for(i=0;i<10;i++)
printf("%d",a[i]);
}

3,
main()
{
char str[100],s[2]="ab";int i,k=0;
gets(str);
for(i=0;str[i]!='\0';i++)
{if(str[i]=='a'&&str[i+1]=='b')
k++;
}
printf("%d",k);
}

4,
main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a+b>c)
{if(a=b=c)printf("该三角形是等边三角形");
else if(a=b!=c) printf("等腰三角形");
else if(a*a=b*b+c*c) printf("直角三角线");

else printf("普通三角形");
}
else printf("不是三角形");

}

5(素数)
main()
{
int i,m,sum=0;
for(m=3;m<=150;m++)
{
for(i=2;i<m;i++)
if(m%i==0) break;
if(i==m)
sum=sum+m;
}
printf("%d",sum);
}
其他的自己试试做,不会再加我;
QQ:980515024(非诚勿扰)
第2个回答  2011-06-05
自己看书做吧,都是些基本的知识点。只要逻辑思维不是白痴型的....
第3个回答  2011-06-05
作业题,自己写!追问

会做的话谁问哪。

追答

同意楼下的意见

相似回答