c语言编程,输入n个学生的成绩,以输入-1表示输入结束,输出学生的人数,总分(不显示小数)及平均值(...

2020-07-05

c语言编程,输入n个学生的成绩,以输入-1表示输入结束,输出学生的人数,总分(不显示小数)及平均值(...


#include#includeintmain(){inti=0;//学生人数计数器floatn;doublesum=0;printf("请依入学生以-1结束: ");while(n!=-1){scanf("%f",&n);sum=sum+n;i++;}//当i==-1时sum-1且i+1所以下边要是i-1,总分为sum+1;时间不够没很好见谅printf("学生人数:%d ",i-1);printf("总分:%.0f ",sum+1);//printf("平均分:%.2f ",(sum+1)/(i-1));return0;}

#include
#include
int main(void)
{
int i=0;
float a,sum=0;//成绩为浮点型
while(1)
{
scanf("%f",&a);
if(fabs(-1-a)<1e-6) break;/*度问题,应用绝对值*/
sum+=a;
i++;
}
printf("学生人%d\n",i);
printf("总分 :%.0f\n",sum);
printf("平:%.2f\n",sum/i);
getchar();getchar();
}本回答被网友采纳#include
int main(void)
{
int i=0;
int n=0;
int sum;
float score,avg;
sum=0;
while(1)
{
printf("入第%d个学生,回车输入下一个同学成绩,以-1结束:",n+1);
scanf("%f",&score);
if(score==-1)
break;
sum=sum+score;
n++;
}
avg=sum/n;
printf("是:%d\n",sum);
printf("平均分是:%4.2f\n",avg);
printf("总人数是:%d\n",n);

return 0;
}while(scanf("%d",&n)!=EOF)
求C语言程序:创建二维数组 输入5个学生的四门课成绩 编程计算每个学生的总分和每门课的平均分~~谢谢
类似的回答:
#include
#define M 5
#define N 4

int sumStu(int a[][N],int n)//每个的总成绩
{
int sum=0,i;
for(i=0;isum+=a[n][i];
return sum;
}

int sumSco(int a[][N],int n)//每的总成绩,后求平均分
{
int sum=0,i;
for(i=0;isum+=a[i][n];
return sum;
}

void sort(int sum[M])//冒泡
{
int i,j,t;
for(i=0;ifor(j=0;jif(sum[j]{
t=sum[j];
sum[j]=sum[j+1];
sum[j+1]=t;
}
}

void main()
{
int i,a[M][N],sum1[M],sum3[M],k,j;
float sum2[N];
printf("string:\n");
for(k=0;kfor(j=0;jscanf("%d",&a[k][j]);
for(i=0;isum1[i]=sum3[i]=sumStu(a,i);
for(i=0;isum2[i]=sumSco(a,i);
sort(sum3);
printf("每个同学的总成绩:\n");
for(i=0;iprintf("%d ",sum1[i]);
printf("\n每门平均分:\n");
for(i=0;iprintf("%0.2f ",sum2[i]/5);
printf("\n每个同学的总成绩由大到小排序:\n");
for(i=0;iprintf("%d ",sum3[i]);
printf("\n");
}

自己的

#include

void main()
{
int a[5][4];
int b[5]={0,0,0,0,0,};
double c[4]={0,0,0,0};
int i,j;
for(i=0;i<5;i++)
{ printf("输入第%d个学生的成绩\n",i+1);
for(j=0;j<4;j++)
{
printf("第%d科:",j+1);
scanf("%d",&a[i][j]);
b[i]+=a[i][j];
}
}

for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
c[i]+=a[j][i];}//科总分
}
for(j=0;j<4;j++)
printf("%d\n",c[j]);

for(i=0;i<5;i++)
printf("第%d个学总分是:%d\n",i+1,b[i]);

for(j=0;j<4;j++)
printf("第%d科平是:%f\n",j+1,c[j]/5.0);

} 方法笨拙。。。仅供参考。。追问

请问这个程序能运行出来么??追答

我试了,能运行,要不你试试,如果不行,只是怪我水平较低。。。我也是没学多久#include "stdio.h"

int sum(int a[]) {
int i, result = 0;
for (i = 0; i < 4; i++)
result += a[i];
return result;
}
float avr(int a) {
return a / 4.0;
}

int main() {
int students[5][4];
int i, j, su;
for (i = 0; i < 5; i++) {
printf("第%d个学生成绩:\n", i+1);
for (j = 0; j < 4; j++) {
printf("第%d科:", j+1);
scanf("%d", &students[i][j]);
}
}
printf("现在统计每名学生的总分和平均分\n");
for (i = 0; i < 5; i++) {
su = sum(students[i]);
printf("第%d名学生 总分为:%d 平均分为:%0.2f\n", i+1, su, avr(su));
}
return 0;
}追问

请问是对的么??追答

#include "stdio.h"

int sum(int a[]) {
int i, result = 0;
for (i = 0; i < 4; i++)
result += a[i];
return result;
}

int main() {
int students[5][4];
int i, j, su;
for (i = 0; i < 5; i++) {
printf("第%d个学生成绩:\n", i + 1);
for (j = 0; j < 4; j++) {
printf("第%d科:", j + 1);
scanf("%d", &students[i][j]);
}
}
printf("现在统计每名学生的总分和平均分!\n");
for (i = 0; i < 5; i++) {
su = sum(students[i]);
printf("第%d名学生 总分为:%d", i + 1, su);
}
for (i = 0; i < 4; i++) {
for (su = 0, j = 0; j < 5; j++) {
su += students[j][i];
}
printf("第%d门课程平均分为:%0.2f\n", i + 1, su / 5.0);
}
return 0;
}本回答被提问者采纳
C语言编程任意输入10个学生的1门课的成绩,编程计算并打印总分和平均分


你好,程序: #include
void main()
{
int N=10,i;
float score[10],sum,avr;
for(i=0,sum=0;i<=N-1;i++)
{
printf("请输入 %d 个成绩: ",i+1);
scanf("%f",&score[i]);
sum+=score[i];
}
avr=sum/N;
printf("总: %f\n",sum);
printf("平均分是: %f\n",avr);
} 有疑出。 望采纳。#include

int main(void)
{
int a[10], i, j;/*是10个学生,五门课程的成绩的数*/
int average(int a[10]), average1(int a[10]), find(int a[10]);

for(i = 0;i < 10;i ++)
scanf("%d", &a[i]);
average(a);
average1(a);
find(a);/*第i个学生的第1门功课成绩最*/

return 0;
}

int average(int a[10])
{
float sum = 0;
int i;

for(i = 0;i < 10;i ++)
{

sum += a[i];
}
printf("%d", sum);
sum = 0;
}

return 0;
}

int average1(int a[10])
{
float sum = 0;
int i, ;

for(i = 0;i < 10;i ++)
{
sum += a[i];
}
printf("%d", sum);
sum = 0;
}

return 0;
}

int find(int a[10])
{
int a1,i,t;

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

if(a[i] > a[0])
{
t = a[i];
a[i] = a[0];
a[0] = t;
a1 = i;
;
}

printf("%d", a1, );

return 0;
}本回答被网友采纳我靠。这也太简单了吧
用C语言编写一个学生管理系统。
最低0.27元开通文库会员,查看完整内容>

原发布者:xuekunlun666

用C语言实现线性基本操作,能创建基于学生信息管理的链表,至少包入、数据输出、数据处理等操作。在主函数里能实现以下功能。运行后出现一个选择提示。可选择的功能有1)创建新的学生信息链表2)增加一个新的学生信息3)按学号删除某个学生信息4)按学号查找某个学生信息5)可以按照学生成绩对链表排序6)退出系统#include"stdio.h"#include"stdlib.h"#include"string.h"#include"conio.h"jiemian();structstudent{charname[50];charsex[5];intage;charnum[50];floatscore1;floatscore2;floatscore3;floatsum;floatave;}stu[50],del;voidgn1(){inti=0;charnum1;for(i=0;i<50;i++){printf("请输入要添加的学生资料:\n");printf("学号:");scanf("%s",stu[i].num);printf("姓名:");scanf("%s",stu[i].name);printf("性别:");scanf("%s",&stu[i].sex);printf("年龄:");scanf("%d",&stu[i].age);printf("请输入学生的三门成绩:\n");printf("语文:");scanf("%f",&stu[i].score1);printf("数学:");scanf("%f",&stu[i].score2);printf("英语:");scanf("%f",&stu[i].score3);printf("是否继续添加:y/n\n");scanf("%c",&num1);scanf("%c",&num1);if(num1=='N'||num1=='n'){system("cls");jiemian();}}}voidgn2(){inti;charnum[50];printf("请概

单纯只用多个数组管生成绩信息,不使用结,该程序最主要的难点是依据学号或绩对学生信息进行排序,借助了临时数组来标记排好序的下标。运行结果如下:输入数据:根据总成绩排序:
根据学号删除学生信息:
贴上代码(有点多)#include #include //exit函数头文件#include //字符串相关操作头文件#define MAX_STUDENT 30 //最大学生数//函数声明,本程序共10个子函数,每个函数对应一个操作void student_scanf(int n);void student_printf(int n);int student_find_name(int n);int student_find_num(int n);void student_sort_num(int n);void student_sort_sum(int n);int student_alter_num(int n);int student_alter_name(int n);int student_delete_num(int n);int student_delete_name(int n);//全局数组变量,用于存储学生信息char names[MAX_STUDENT][50];int math[MAX_STUDENT];int english[MAX_STUDENT];int computer[MAX_STUDENT];int sum[MAX_STUDENT];int num[MAX_STUDENT];//以下变量用于学生信息数组排序,作为临时数组int temp_num[MAX_STUDENT];char temp_names[MAX_STUDENT][50];int temp_math[MAX_STUDENT];int temp_english[MAX_STUDENT];int temp_computer[MAX_STUDENT];int temp_sum[MAX_STUDENT];//sort数组存储排好序的学号或姓名下标int sort[MAX_STUDENT];//循环全局变量int i, j;//main主函数int main(void){int choice,n;while (1){printf("************************************* ");printf("欢迎使用学生成绩管理系统 ");printf("[1] 输入所有学生信息 ");printf("[2] 输出所有学生成绩 ");printf("[3] 按学号查找某个学生信息 ");printf("[4] 按姓名查找某个学生信息 ");printf("[5] 按学号对学生排序 ");printf("[6] 按总成绩对学生排序 ");printf("[7] 按学号修改某个学生信息 ");printf("[8] 按姓名修改某个学生信息 ");printf("[9] 按学号删除某个学生信息 ");printf("[10] 按姓名删除某个学生信息 ");printf("[0] 退出程序 ");printf("请输入您的选择(0 - 9):");scanf("%d",&choice);printf("**************************************) ");switch (choice){case 1://录入;printf("请输入录入的学生信息数: ");scanf("%d",&n);student_scanf(n);break;case 2://输出;student_printf(n);break;case 3://根据学号查找student_find_num(n);break;case 4://根据姓名查找student_find_name(n);break;case 5://按学号排序student_sort_num(n);break;case 6://按姓名排序student_sort_sum(n);break;case 7://按学号修改student_alter_num(n);break;case 8://按姓名修改student_alter_name(n);break;case 9://按学号删除student_delete_num(n);n--;break;case 10://按姓名删除student_delete_name(n);n--;break;case 0://退出程序printf("退出程序 ");printf("程序结束,谢谢使用! ");exit(0);default:printf("您输入的菜单有误。请重新输入! ");}}return 0;}//1.输入信息void student_scanf(int n){for (i = 0; itemp_num[j])min = j;}//sort数组记录排序的学生信息的下标sort[i] = min;temp_num[min] = temp_num[max]; //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰 }for(i=0; itemp_sum[j])min = j;}//sort数组记录排序的学生信息的下标sort[i] = min;temp_sum[min] = temp_sum[max]; //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰 }for(i=0; i本回答被网友采纳以前做的该可以运行#include #include struct S { char name[20]; /*姓名*/ int number; /*学*/ float score_yuwen; /*语文成绩*/ float score_shuxue; /*数绩*/ float score_yingyu; /*英语成绩*/ }T; /*建立学生成绩信息的结构*//*信息维护========将学生信息数据以文件的形式保存*/ void writefile(T *student,int n) { FILE *fp; int i,j; if((fp=fopen("d:\\kanwei.txt","w+"))==NULL) { printf("can't open file"); exit(0); } for(i=0;i<=n;i++) fprintf(fp,"%s %d %f %f %f\n",student[i].name,student[i].number,student[i].score_yuwen,student[i].score_shuxue,student[i].score_yingyu); fclose(fp); } /* 信息维护========增加学生信息 */ void add(T*student,int n) { int I; printf("输入要增加的学生的姓名、学号、语文成绩、数学成绩、英语成绩:"); scanf("%s %d %f %f %f\n",student[n+1].name,&student[n+1].number,&student[n+1].score_yuwen,&student[n+1].score_shuxue,&student[n+1].scor_yingyu); getchar(); while(student[n+1].number!=0) /*输入学号为0时退出*/ { if(student.number==NULL) { printf("\n没有任何学生资料!\n"); return(sutdent); } endif for(i=0;i<=n;i++) { if(student[n+1].number==student[i].number) printf(“此学生已存在!\n”); else if(student[n+1].numbernumber&&p1->next!=NULL) /*p1指向的不是所要找的首结点,并且后面还有结点*/ { p2=p1;p1=p1->next; /*p1后移一个结点*/ } if(number==p1->number) { if(p1==head) head=p1->next; /*若p1指向的是首结点,把后一个结点地址赋予head*/ else p2->next=p1->next; /*否则将下一个结点地址赋给前一结点地址*/ printf("删除:%d\n",number);n=n-1; } else printf("%d不存在此学生!\n",number); /*找不到该结点*/ endif } printf("已经删除了!\n") printf("现在的学生数为:%d个!\n",n); return(head); } /*信息维护========修改学生信息*/ void modify(T *student,int n,) { delet(student,n,); addfile(student,n); } /*信息查询========按学生姓名查询*/ int find1(T *student,int n,int *tp) { char name[20]; int i; printf(“输入要查询的学生的名字:”); scanf(“%s,name\n”); for(i=0;i<=20;i++) { if(name==student[i].name) printf(“此学生的信息:%s %d %f %f %f\n”,student[i].name,student[i].number,student[i].score_yuwen,student[i].score_shuxue,student[i].score_yingyu); else { printf(“无此学生信息!请重新输入:\n”); find1(T*student,int n,int *tp); } return() }/*信息查询========按学生学号查询*/ int find2(T *student,int n,int *tp) { int number; int i; printf(“输入要查询的学生的学号:”); scanf(“%d”,number); for(i=0;i<=20;i++) { if(number==student[i].number) printf(“此学生的信息:%s %d %f %f %f\n”,student[i].name,student[i].number,student[i].score_yuwen,student[i].score_shuxue,student[i].score_yingyu); else { printf(“无此学生信息!请重新输入:\n”); find2(T*student,int n,int *tp); } return() }/*=========成绩统计========*/ void count(T*student,int n+1) { int i,score1,score2; char class; printf(“输入课程名和分数段:”); scanf(“%s %d %d”,class,score1,score2); if(score1>score2) { i=score1; score1=score2; score2=i; } if(class==yuwen) yuwen(T*student,n+1,score1,score2); if(class==shuxue) shuxue(T*student,n+1,score1,score2); if(class==yingyu) yingyu(T*student,n+1,score1,score2); }/*========按语文成绩统计========*/ void yuwen(T*student,int n+1,int score1,int score2) { int i,j,a,b; for(i=0;i<=n;i++) for(j=0;j<=n;j++) if(student[i].score_yuwen>student[j].score_yuwen) { student[n+1]=student[i]; student[i]=student[j]; student[j]=student[n+1]; } for(i=0;i<=n;i++) { if(student[i].score_yuwen<=score1) a=i; if(student[i].score_yuwen<=score2) b=i; } for(i=a;i<=b;i++) printf(“%s %d %f %f %f\n”,student[i].name,student[i].number,student[i].score_yuwen,student[i].score_shuxue,student[i].score_yingyu); return() }/*========按数学成绩统计========*/ void shuxue(T*student,int n+1,int score1,int score2) { int i,j,a,b; for(i=0;i<=n;i++) for(j=0;j<=n;j++) if(student[i].score_shuxue>student[j].score_shuxue) { student[n+1]=student[i]; student[i]=student[j]; student[j]=student[n+1]; } for(i=0;i<=n;i++) { if(student[i].score_shuxue<=score1) a=i; if(student[i].score_shuxue<=score2) b=i; } for(i=a;i<=b;...

学生信息管理#include#inelude#include本回答被网友采纳高时候,我自己写过。现在在学其它的语言不献丑了,在给你找到了,是文库里面的,直接复制过来的话,排版不对,你自己去看一下吧,完整的代码。
名字就是《用C语言编写的一个学生信息管理系统》
PS:写这个,主要是用到C语言的链表,不难,只是有的时候,如果思路不清晰的话,容易写错,写漏等等,如果不参考上面,而是你自己写的话,建议先画个大概的树图出来,再开始编吧。

纯手工打的,帮到你的话,就采纳吧。追问

那个jiemian(); 是什么意思啊?那个程序有的地方我还是有点不会改。。。追答

是一个自定义的调用函数。调用函数在C中可是很重要的噢!
遇到不懂的慢慢找书上的知道识看看,你会收益不少的!追问

可以加你吗?有些问题想问问你。追答

不好意思噢,朋友,我已经有些年没怎么碰C啦,现在在学其它语言。我只能向你提供一下学习的方法而已。本回答被提问者采纳