100分急求!分数可商量!急用!C语言高手进!帮忙做个程序!!!!!!!!

帮忙做个C语言。两份。c格式的学生成绩管理系统,
要求如下,主菜单!成绩输入(,一门,逐个保存,输入-1输入结束!),成绩输出(显示在屏幕上),成绩查询(若存在,输出该程序下标。否则NO FOUND),成绩排序(从高到底。选择法实现),退出!
我的[email protected]
成绩查询(若存在,输出该成绩在数组内的下标。否则NO FOUND),用数组做,不要太难!!!!! 请发至我的邮箱我的[email protected]

第1个回答  2010-11-25
第二次看这个题目,决定做了。希望对小学生有帮助吧!
源代码如下:

#include "stdio.h"
#include "stdlib.h"
/*created by at 2009-09-17*/
char s[50];
int tops;
float d[100];
int topd;
char number[10];
int num;
char c;
float ans[50];
float yours[50];
int count=0;
int right=0;

int token[7][7]=,
,
,
,
,
,
};

int change(char x)
{
switch(x)
{
case '+': return 0;
case '-': return 1;
case '*': return 2;
case '/': return 3;
case '(': return 4;
case ')': return 5;
case '#': return 6;
}
}

void calculate()
{
float a,b;
b=d[--topd];
a=d[--topd];
switch(s[--tops])
{
case '+': d[topd++]=a+b;return;
case '-': d[topd++]=a-b;return;
case '*': d[topd++]=a*b;return;
case '/': d[topd++]=a/b;return;
}
}

int expression()
{
int i,j;
tops=0;
s[tops++]='#';
topd=0;
//c=getchar();
while(c!='#'||s[tops-1]!='#')
{
num=0;
if(c>='0'&&c<='9')
{
do
{
number[num++]=c;
c=getchar();
}while(c>='0'&&c<='9');
number[num]='\0';
d[topd++]=atof(number);
}
else
{
j=change(c);
i=change(s[tops-1]);
switch(token[i][j])
{
case -1: s[tops++]=c;
c=getchar();
break;
case 0: tops--;
c=getchar();
break;
case 1: calculate();
break;
}
}
}
ans[count]=d[topd-1];
printf("请输入您计算的结果:");
scanf("%f",&yours[count++]);
if(ans[count-1]==yours[count-1]) right++;
//printf("%d",d[topd-1]);
getchar();
}

int main()
{
int i;
printf(" ------计算表达式------\n使用说明:\n");
printf(" 1.请输入要计算的表达式,以#结尾,例如1+2#\n");
printf(" 2.结束计算请输入符号$\n");
printf(" 3.在表达式中可以运算括号,中括号[]和大括号{}统一使用小括号代替()!\n");
printf(" 4.程序输入格式错误时,将会自动结束程序,请注意格式正确!\n");
printf(" 5.如果有疑问可以来给我留言...\n\n\n");
printf("请输入要计算的表达式,以#结尾。结束程序输入$。\n");
c=getchar();
while(c!='$')
{

expression();
printf("-------------------------------------------\n");
printf("请输入下一个表达式,以#结尾。结束程序输入$。\n");
c=getchar();
}
printf("\n\n ******您的成绩单*******\n");
printf("----------------------------------------\n");
printf(" 序 号 正确答案 您的答案 结 论\n");
for(i=0;i<count;i++)
printf("表达式%d %.2f %.2f %s\n",
i+1,ans[i],yours[i],ans[i]==yours[i]?"正确!":"错误!");
printf("----------------------------------------\n");
printf("解答题目总共为%d道,其中\n",count);
printf("正确解答%d道题,错误解答%d道题。\n *****最后得分为%d分!*****\n",
right,count-right,right*100/count);
printf("----------------------------------------\n");
getchar();
getchar();
}

如果有问题或者需要修改的地方,可以到我空间给我留言吧,看到会答复的。
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
第2个回答  2010-11-25
#include <stdio.h>
int input(int []);
void output(int,int []);
void find(int,int []);
void sort(int,int []);
void error(void);
int main(void)
{
int a[50],x,n=-1,i;
for(i=0;i<50;i++)
a[i]=0;
while(1)
{
printf("1.成绩输入.\n");
printf("2.成绩输出.\n");
printf("3.成绩排序.\n");
printf("4.成绩查询.\n");
printf("5.退出.\n");
printf("请输入功能号,回车结束:\n");
scanf("%d",&x);
switch(x)
{
case 1:n=input(a);continue;
case 2:output(n,a);continue;
case 3:sort(n,a);continue;
case 4:find(n,a);continue;
case 5:return 0;
default:printf("功能号输入错误,请重新输入:\n");
printf("\n\n\n");
continue;
}
return 0;
}
}

int input(int a[])
{
int n=0,num=0;
printf("请输入成绩,每个成绩回车结束,-1输入过程结束:\n");
scanf("%d",&num);
while(num!=-1)
{
a[n]=num;
scanf("%d",&num);
n++;
}
printf("\n\n\n");
return n;
}

void output(int n,int a[])
{
int i;
if(n<=0) error();
else
{
printf("成绩输出为:");
for(i=0;i<n;i++)
printf("%d:%d\t",i,a[i]);
printf("\n");
}
printf("\n\n\n");
}

void find(int n,int a[])
{
int i,flag=0,result;
if(n<=0) error();
else
{
printf("请输入要查询的成绩值:\n");
scanf("%d",&result);
printf("查询%d结果为(下标号):\n",result);
for(i=0;i<n;i++)
if(a[i]==result)
{
printf("%d\t",i);
flag++;
}
if(flag==0) printf("NO FOUND\n");
printf("\n");
}
printf("\n\n\n");
}

void sort(int n,int a[])
{
int i,j,t,min;
if(n<=0) error();
else{
for(i=0;i<n;i++)
{
min=i;
for(j=i;j<n;j++)
if(a[min]<a[j]) min=j;
t=a[min];
a[min]=a[i];
a[i]=t;
}
printf("排序结束.\n");
}
printf("\n\n\n");
}

void error(void)
{
printf("成绩没有输入或者异常,请重新选择输入数组\n");
}本回答被提问者和网友采纳
第3个回答  2010-11-25
第二次看这个题目,决定做了。希望对小学生有帮助吧!
源代码如下:

#include "stdio.h"
#include "stdlib.h"
/*created by at 2009-09-17*/
char s[50];
int tops;
float d[100];
int topd;
char number[10];
int num;
char c;
float ans[50];
float yours[50];
int count=0;
int right=0;

int token[7][7]=,
,
,
,
,
,
};

int change(char x)
{
switch(x)
{
case '+': return 0;
case '-': return 1;
case '*': return 2;
case '/': return 3;
case '(': return 4;
case ')': return 5;
case '#': return 6;
}
}

void calculate()
{
float a,b;
b=d[--topd];
a=d[--topd];
switch(s[--tops])
{
case '+': d[topd++]=a+b;return;
case '-': d[topd++]=a-b;return;
case '*': d[topd++]=a*b;return;
case '/': d[topd++]=a/b;return;
}
}

int expression()
{
int i,j;
tops=0;
s[tops++]='#';
topd=0;
//c=getchar();
while(c!='#'||s[tops-1]!='#')
{
num=0;
if(c>='0'&&c<='9')
{
do
{
number[num++]=c;
c=getchar();
}while(c>='0'&&c<='9');
number[num]='\0';
d[topd++]=atof(number);
}
else
{
j=change(c);
i=change(s[tops-1]);
switch(token[i][j])
{
case -1: s[tops++]=c;
c=getchar();
break;
case 0: tops--;
c=getchar();
break;
case 1: calculate();
break;
}
}
}
ans[count]=d[topd-1];
printf("请输入您计算的结果:");
scanf("%f",&yours[count++]);
if(ans[count-1]==yours[count-1]) right++;
//printf("%d",d[topd-1]);
getchar();
}

int main()
{
int i;
printf(" ------计算表达式------\n使用说明:\n");
printf(" 1.请输入要计算的表达式,以#结尾,例如1+2#\n");
printf(" 2.结束计算请输入符号$\n");
printf(" 3.在表达式中可以运算括号,中括号[]和大括号{}统一使用小括号代替()!\n");
printf(" 4.程序输入格式错误时,将会自动结束程序,请注意格式正确!\n");
printf(" 5.如果有疑问可以来给我留言...\n\n\n");
printf("请输入要计算的表达式,以#结尾。结束程序输入$。\n");
c=getchar();
while(c!='$')
{

expression();
printf("-------------------------------------------\n");
printf("请输入下一个表达式,以#结尾。结束程序输入$。\n");
c=getchar();
}
printf("\n\n ******您的成绩单*******\n");
printf("----------------------------------------\n");
printf(" 序 号 正确答案 您的答案 结 论\n");
for(i=0;i<count;i++)
printf("表达式%d %.2f %.2f %s\n",
i+1,ans[i],yours[i],ans[i]==yours[i]?"正确!":"错误!");
printf("----------------------------------------\n");
printf("解答题目总共为%d道,其中\n",count);
printf("正确解答%d道题,错误解答%d道题。\n *****最后得分为%d分!*****\n",
right,count-right,right*100/count);
printf("----------------------------------------\n");
getchar();
getchar();
}

如果有问题或者需要修改的地方,可以到我空间给我留言吧,看到会答复的。
相似回答