各位高手,请帮我用C语言编写一个程序,急,在线等..

各位高手,请帮我用C语言编写一个程序,急,在线等..
已知某班N(<=50)名学生进行了高数,英语和C语言等3门课程考试,将3门课的成绩计算总分并存放在一个2维数组中,将学生姓名存放在另一个2维字符数组中,按总分(从高到低)将学生姓名排序并输出排序结果(序号和姓名)

#include<stdio.h>
main()
{
float score[50][4];
for(int i=0;i<50;i++)
{
for(int j=0;j<4;j++)
{
score[i][j]=0;
}
}
char name[50][20];
char sname[20];
float math=0,english=0,languagec=0,total=0;
printf("please input student's name(if you finish the inputing,please input # .)\nname:");
scanf("%s",sname);//输入学生名字时如果直接输入#,则表示输入完毕,然后自动显示排序结果
i=0;
while(sname[0]!='#')
{
i++;
printf("please input student's score .\nmath:");
scanf("%f",&math);
while(math>100||math<0)
{
printf("Out of range. please input again:\nmath:");
scanf("%f",&math);
}
printf("english:");
scanf("%f",&english);
while(english>100||english<0)
{
printf("Out of range. please input again:\nmath:");
scanf("%f",&english);
}
printf("languagec:");
scanf("%f",&languagec);
while(languagec>100||languagec<0)
{
printf("Out of range. please input again:\nmath:");
scanf("%f",&languagec);
}
total=math+english+languagec;
for(int j=0;j<i;j++)
if(total>score[j][3])break;
for(int k=i;k>j;k--)
{
for(int l=0;l<4;l++)
score[k][l]=score[k-1][l];
for(int m=0;m<20;m++)
name[k][m]=name[k-1][m];
}
for(int n=0;n<20;n++)name[j][n]=sname[n];
score[j][0]=math;
score[j][1]=english;
score[j][2]=languagec;
score[j][3]=total;
if(i==50)break;
printf("please input student's name(if you finish the inputing,please input # .)\nname:");
scanf("%s",sname);
}
printf("list order by total:\n");
for(int n=0;n<i;n++)
{
printf("%s:%3.1f\n",name[n],score[n][3]);
}

}

我做的是逐个输入学生的成绩。当你输完所有成绩后,在要求输入姓名时,输入#号,则输入结束。后面自动按总分对学生姓名排序。

要求加分
温馨提示:内容为网友见解,仅供参考
无其他回答

各位高手,请帮我用C语言编写一个程序,急,在线等..
while(languagec>100||languagec<0){ printf("Out of range. please input again:\\nmath:");scanf("%f",&languagec);} total=math+english+languagec;for(int j=0;jscore[j][3])break;for(int k=i;k>j;k--){ for(int l=0;l<4;l++)score[k][l]=score[k-1][l];for(int ...

C语言高手来一下帮我编个小程序
首先,我可以用字符串来做。我现在先把代码贴上:include <stdio.h> int main(){ char *str , *ch , *c[] = {"个位为:" , "十位为:" , "百位为:" , "千位为:" , "万位为:"};scanf("%s",str);int i = 0 ;\/\/要求1.求出它是几位数 printf("此数为%d位数\\n",(sizeo...

急求一个c语言程序后天就要用了麻烦各位好心高手帮帮忙。谢谢。
define uchar unsigned char define uint unsigned int uint Tcounetr=0;unsigned long int mm=0;sbit P1_6=P1^6;sbit P1_7=P1^7;uchar code table[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,}; \/\/设置字符代码 delay(uint m) \/\/延时1ms程序 { uint i,j;for...

麻烦各位牛人,用C语言写个程序,输出 A ABA ABCBA ABCDCBA 怎么输出...
就是 for(j=1;j<=2*i-1;j++)这句话里面的j你换一个字母,不要用j,在重新定义一个字母换进去,我试过了,可以的

请问各位高手如何用C语言编写一个随机数程序啊!不过不能直接调用RAND函...
rand函数也是调用dos的时钟,进行的伪随机函数。你也可以使用时钟来模拟随机函数。可以试用gettime这个函数:long int MyRand(int x){ struct time t1,t2,t3;gettime(&t1);int y1=t1.ti_hund;\/\/取1\/100s作为基数 gettime(&t2);int y2=t2.ti_hund;\/\/取1\/100s作为基数 gettime(&t3);i...

各位高手帮帮小妹我吧!——C语言的编程
\/*编写函数sdel(str,ch),在字符串str中,删除指定的字符ch,返回新字符串。*\/ \/*ch为(123456789)。str为(4)*\/ \/*应该是str(123456789)吧,ch为(4)?*\/ include<stdio.h> include<string.h> sdel(char str[80],char ch[20],char t[80]){ int i,j,len=strlen(str),lench=strlen...

各位高手,帮帮忙,编译一个程序,从100到200之间7的倍数的算术平均值.
C语言 include <stdio.h> void main(){ int i, j=0;int a[20];for(i=100;i<=200;i++){ if(i%7==0){ a[j]=i;j++;} } for(i=0;i<j;i++){ printf("%d ",a[i]);} }

请C语言高手帮我编写几个小程序~(一定要用C++编写噢~)
第一个 void reverse_merge(List &A,List &B,List &C){ InitList(C);i=j=1; k=0;la_len=ListLength(A);lb_len=ListLength(B);while((i<=la_len)&&(j<=lb_len)){ GetElem(A,i,ai);GetElem(B,i,bi);if(ai<=bj){ ListInsert(C,++k,ai); ++i;} else ListInsert(C,...

求各位高手帮忙作一下C语言作业
所有程序在win-tc和Dev-c++下运行通过。现在所有的题目都有答案了。第一题:include <stdio.h> define N 10 int main(){ int a[N],i,m=0,n=0,max,min,*p;p=a;printf("Please input %d elements of the matrix :\\n",N);for(i=0;i<N;i++)scanf("%d",p+i);printf("The array...

C语言大作业,C语言高手们救下小弟啊```
程序要求:(1)能够完成300人以内任何人数的成绩处理。(2)程序要有主控菜单 \/ include<stdio.h> include<stdlib.h> include<string.h> struct stud { long num;char name[20];double score;};typedef struct stucode { struct stud student ;struct stucode *next;}L;void menu();void ...

相似回答