C语言程序设计问题

有个设计作业不会做了,希望大家帮助我一下,写出完整的代码让我参考一下,最好能有适当的注释,以下是题的要求,调试成功必当追加积分
用C语言编制一学生成绩管理软件,要求如下:
一班有10名学生,一学期有5门课程,编写程序实现如下功能:
(1)录入每名学生的各科成绩
(2)求出每名学生的平均成绩和总分
(3)求每门课程的平均分、及格率、最高成绩和最低成绩
(4)输出总成绩前5名的学生学号、各科成绩和总分
(5)输出各科补考学生的学号和成绩
要求:
(1)编制一主函数来实现功能函数的调用;
(2)程序设计各步骤的相关文档齐全、清晰。
(3)在所有数据输入处理之前提供必要的提示
具体开发过程:
1、系统结构设计:设计软件的各个模块的功能和函数名
(1)主函数:显示功能菜单,调用功能模块
(2)成绩输入函数:input_score
输入学生的各科成绩
(3)求出每名学生的平均成绩和总分函数:stu_ave
(4)求每门课程的平均分、及格率、最高成绩和最低成绩函数:cour_ave
(5)求前5名函数:sort
输出总成绩前5名的学生学号、各科成绩和总分
(6)补考名单函数:bukao
输出各科补考学生的学号和成绩
2、数据结构设计:设计软件中用到的各数组、变量、指针变量的名称和类型。
(1)score[10][5] 存放学生成绩
(2)stu[10][3] 存放学生学号、总分、平均分
(3)course[5][10]存放课程名称
(4)courave[5] 存放各科平均成绩
/*input 10 scores */
main()
{int score[10][5];
int i,j;
printf("please input 10 score:\n");
for(i=0;i<10;i++)
{ for(j=0;j<5;j++)
scanf("%d",&score[i][j]);
if(j%5==0)
printf("\n");
}
stu_ave(score);
}
/* output every score and total score */
/* stu_ave */
int stu_ave(int *s)
{int sum=0;
int i,j;
for(i=0;i<10;i++)
{for(j=0;j<5;j++)
sum=sum+*s;
*s++;
}
}

这是我做的前两个,往后是真的没什么思路了

#include <conio.h>
#include <stdio.h>
FILE *fp;
int a[100][10]; /*定义一个二位数组用来存放学生成绩*/
int stu;
inputx()
{
gotoxy(15,13);
textcolor(RED);
printf("请输入你们班的学生数:");
scanf("%d",&stu);
}
input() /*输入学生成绩*/
{
int i;
for(i=1;i<=stu;i++)
{ scanf("%8d%8d%8d%8d%8d%8d",&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5],&a[i][6]);
}
}
print1() /*输出成绩表,并求总分,平均分和排名次*/
{
int i,j;
int b[100],c[100];
int t,loc,k;
fp=fopen("成绩表.txt","w");
for(i=1;i<=stu;i++) /*求总分和平均分*/
{
a[i][7]=0;
for(j=2;j<=6;j++)
a[i][7]=a[i][7]+a[i][j];
a[i][8]=a[i][7]/5;
}
for(i=1;i<=stu;i++) /*排名*/
{
b[i]=a[i][7];
c[i]=i;
}
for(i=1;i<=stu-1;i++)
{
loc=i;
for(j=i+1;j<=stu;j++)
if(b[j]>b[loc])
loc=j;
if(loc!=i)
{t=b[i];b[i]=b[loc];b[loc]=t;
t=c[i];c[i]=c[loc];c[loc]=t;
}
}
for(i=1;i<=stu;i++)
for(k=1;k<=stu;k++)
if(c[k]==i)
{
a[i][9]=k;
break;
}
for(i=1;i<=stu;i++) /*输出成绩表*/
{
for(j=1;j<=9;j++)
printf("%-6d",a[i][j]);
printf("\n");
}
/*以下输出成绩表存到一个文件中*/
fprintf(fp,"学号 语文 数学 英语 物理 化学 总分 均分 名次\n");
for(i=1;i<=stu;i++)
{
for(j=1;j<=9;j++)
fprintf(fp,"%-6d",a[i][j]);
fprintf(fp,"\n");
}
}
print2() /*求各科总分和平均分*/
{
int i,j;
int m[3][6];
for(j=2;j<=6;j++)
{
m[1][j-1]=0;
for(i=1;i<=stu;i++)
m[1][j-1]=m[1][j-1]+a[i][j];
m[2][j-1]=m[1][j-1]/stu;
}
for(i=1;i<=2;i++)
{
for(j=1;j<=5;j++)
printf("%-6d",m[i][j]);
printf("\n");
}
}
change() /*修改学生成绩*/
{
int m,b,c,i,n=0;
printf("请输入您要修改的学生的学号:");
scanf("%d",&m);
printf("1,语文;2,数学;3,英语;4,物理;5,化学;\n");
printf("请选择您要修改的科目:");
scanf("%d",&b);
printf("请输入新的学生成绩:");
scanf("%d",&c);
for(i=1;i<=stu;i++)
if(m!=a[i][1]) n++;
else {
n++;
break;
}
a[n][b+1]=c;
printf("\n重新输出成绩表\n");
printf("学号 语文 数学 英语 物理 化学 总分 均分 名次\n");
print1();
go();
}
go() /*选择菜单*/
{
int n;
printf("\n现在您将会遇到以下几种情况:\n");
printf("1,继续查询;2,修改数据;3,重新运行;4,结束程序;\n");
printf("请您根据需要按键选择:");
scanf("%d",&n);
if(n==1)find();
if(n==2)change();
if(n==3)main();
if(n==4){
clrscr();
printf("*********感谢您使用本程序*********\n");
printf("这是我编写的第一个系统程序,为了感谢您的使用,请到3509寝室找李晓锋领奖\n");
printf("\n\n");
printf("再次感谢您的使用\n");
printf("------------ByeBye----------------");
}
getch();
}
find1() /*按名次查询学生成绩*/
{
int n,i;
printf("请输入您要查询的学生的名次:");
scanf("%d",&n);
printf("名次 学号 语文 数学 英语 物理 化学 总分 均分\n");
for(i=1;i<=stu;i++)
if(n==a[i][9])
{ printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][9],a[i][1],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8]);
break;
}
printf("\n");
go();
}

作者: zfy0422 2004-11-10 08:38 回复此发言

--------------------------------------------------------------------------------

2 一个学生成绩管理系统
find2() /*按学号查询学生成绩*/
{
int n,i;
printf("请输入您要查询的学生的学号:");
scanf("%d",&n);
printf("学号 语文 数学 英语 物理 化学 总分 均分 名次\n");
for(i=1;i<=stu;i++)
if(n==a[i][1])
{ printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][1],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8],a[i][9]);
break;
}
printf("\n");
go();
}
find3_1(int n) /*输出科目查询结果*/
{
int i;
printf("学号 名次 语文 数学 英语 物理 化学 总分 均分\n");
for(i=1;i<=stu;i++)
if(a[i][n+1]>=90)
{ printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][1],a[i][9],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8]);
printf("\n");
}
go();
}
find3() /*科目选择菜单*/
{
int n;
printf("现有以下五种科目供查询:\n");
printf("1,语文;2,数学;3,英语;4,物理;5,化学;\n");
printf("请按键选择:");
scanf("%d",&n);
find3_1(n);
}
find() /*查询方式菜单*/
{
int m;
printf("根据您的要求,有以下3种查询方式: \n");
printf("1,按名次查询;\n");
printf("2,按学号查询;\n");
printf("3,查询某科成绩在90分以上的学生的情况;\n");
printf("现在,按照您的需要请按键:");
scanf("%d",&m);
if(m==1)find1();
if(m==2)find2();
if(m==3)find3();
}
main() /*主函数运用文本编辑对欢迎界面进行排版*/
{
int i;
clrscr(); /*清屏*/
textcolor(YELLOW);
{
gotoxy(20,9);
printf("******欢迎使用学生成绩管理系统!******\n");
gotoxy(20,11);
printf("------------制作人:赵飞宇------------\n");
gotoxy(20,13);
printf("******欢迎注册:zfy0422@sina.com******\n");
gotoxy(20,15);
printf("***********飞宇软件开发公司***********\n");
gotoxy(20,17);
printf("版权所有 未经同意 不得复制 违者必究");
}
for(i=1;i<=44;i++) /*输出用#组成的矩形以达到美观的效果*/
{
{
gotoxy(16+i,19);
printf("#");
}
{
gotoxy(16+i,7);
printf("#");
}
}
for(i=1;i<=13;i++)
{
{
gotoxy(16,6+i);
printf("#");
}
{
gotoxy(61,6+i);
printf("#");
}
}
getch();
clrscr();
inputx();
clrscr();
gotoxy(3,3);
printf("\n学生成绩管理系统\n\n");
printf("一,输入成绩\n");
printf("请输入学生的成绩:\n" );
printf("学号 语文 数学 英语 物理 化学\n");
input();
printf("\n");
printf("二,输出成绩表\n");
printf("学号 语文 数学 英语 物理 化学 总分 均分 名次\n");
print1();
printf("\n");
printf("三,输出各科总分及平均分\n");
printf("语文 数学 英语 物理 化学\n");
print2();
printf("\n");
printf("四,查询\n");
find();
}

你认真的看看这个程序后会对你的这个问题有很大的帮助的,本来打算 给你写一个的,但是太多了,另外上面这个程序具有你上述问题所有要求的函数,相信你看懂后,你上面的哪个问题就可以很轻易的解决了。

参考资料:http://post.baidu.com/f?kz=5972675

温馨提示:内容为网友见解,仅供参考
第1个回答  2006-06-18
我晕,我看你是懒吧,这个是C语言很容易就可以达到的。可以说是一个很简单的C语言作业,相信你一定可以自己搞定的,不太明白的地方问问同学啊。你可以把自己写的程序放上来,给你看看。
第2个回答  2006-06-18
我晕,我看你是懒吧,这个是C语言很容易就可以达到的。可以说是一个很简单的C语言作业,相信你一定可以自己搞定的,不太明白的地方问问同学啊。你可以把自己写的程序放上来,给你看看。
第3个回答  2006-06-19
你看看百度说什么(看最后一行):

二 审核与处罚
 2 问答、评论删除原则与处罚方法
  2)其他问题、回答和评论的删除原则
   F.具有恶意、无聊和灌水性质
    ·直接索取作文、论文或作业答案的提问
第4个回答  2006-06-19
帮了
第5个回答  2006-06-20
自己好好努力吧

c语言程序设计大赛试题
10 + a[t];if(m % 11 == 0) { printf("%d\\n", m);nable = 1;break;} } if(nable == 1) break;} if(nable == 0) printf("您的数字无法被11整除!\\n");} return 0;} 通过这样的设计,程序不仅能够有效地解决问题,还具有一定的灵活性和扩展性,能够适应不同的输入条件。

C语言程序设计作业:四个问题如下!
第一题:void main(){ int n,sum;n=20;sum=0;sum=fun(n);printf("%ld\\n",sum);return;} long fun(int n){ int i;long tmp;i=1;while(i<=n){ tmp+=i*i;i++;} return tmp;} 第二题:void main(){ int n;n=1000;fun(n);return;} void fun(int n){ int i,sum,tmp...

C语言程序设计的问题
1错 全局变量在函数外面定义 2对 大小写是不同的 3对 是的 printf是stdio函数库中的函数 不是c语言本身的函数 4错 continue的意思是跳过本次循环 进行下一次 break的意思才是整个循环终止 5对 include<stdio.h>int main()#define N 10{int score[N],i,sum=0;float average;for(i=0;i<10...

C语言问题。要求编程求出总成绩并按总成绩排?
在C语言中,解决编程问题以求出总成绩并按总成绩排序的程序设计如下。此程序使用二维数组存储每个学生的五门成绩,并计算总成绩。之后,程序通过选择排序算法对学生按总成绩进行排序。首先,程序包含一个整型主函数`main()`,定义了六个整型数组`res`和`scoreData`用于存储学生编号、总成绩和成绩数据。通过...

学习C语言程序设计要注意哪些易犯的错误?
但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“...

求这几题C语言程序设计题目的解析
题目的解释(见图)

C语言程序设计题为什么我答案可以正常按题意输出 可是却还是不给我...
即 ss[i] != '\\0';,也可以更简单的写作 for(;ss[i]; i++)。为什么说用 i < M; 是错的呢?如果ss[]的长度刚好是80,那么你的用法没有问题,但若ss[]的长度只有20,那么,在ss[21] -- ss[79]的未使用的空间中,是否会有字符'1'呢,你知道吗?反正我不知道。

c语言程序设计:分酒问题某人有12品脱的酒一瓶,想从中倒出6品脱..._百...
问题分析与算法设计 将12品脱酒 8品脱和5品脱的空瓶平分,可以抽象为解不定方程:8x-5y=6 其意义是:从12品脱的瓶中向8品脱的瓶中倒x次,并且将5品脱瓶中的酒向12品脱的瓶中倒y次,最后在12品脱的瓶 中剩余6品脱的酒。用a,b,c代表12品脱、8品脱和5品脱的瓶子,求出不定方程的整数解,按照...

【C语言程序设计】C语言求最大公约数(详解版)!
在C语言程序设计中,要解决的问题是找到任意两个正整数的最大公约数(GCD)。这个概念基于约数的定义,即一个数的约数不会大于它本身,而几个数的最大公约数不会大于其中的任何一个数。求最大公约数的目标是找到一个既能同时整除这两个数,且是最小的这样的自然数。有两种算法设计方法:穷举法和从...

计算机二级C语言程序设计该怎么做?
如何备考 1.选择题:如果C语言有一定基础,考前一周开始刷题没大问题(因为刷早了会忘)。我发的模拟考试软件里有,做完题有讲解。另外背一背公共基础知识和一些程序设计基础,软件设计基础blabla,简单的一定要拿到!其次是数据结构和数据库设计基础,这些如果是零基础确实比较困难。从题库中看,这些题...

相似回答
大家正在搜