统计学生成绩的c,编译没报错,运行错误

问题描述

统计学生成绩的c,编译没报错,运行错误

#include
/*这是一个查询学生成绩的程序,查询数学,英语,语文,计算并算出总成绩*/
/*首先,显示输入学生人数,然后显示输入各科成绩,最后按照学号排序输出各科
成绩。最后计算并显示出各科成绩的平均值,最大值,最小值*/
/*在main函数中既有printf1函数,scanf函数,printf2函数,arg函数,min函数
max函数*/
void input(double s[][4],int n);
void output(double s[][4],int n);
double max(double s[][4],int n,int i);

double min(double s[][4],int n,int i);
double avg(double s[][4],int n,int i);
int main()
{
int i,number;
double grade[100][4];
char pro[4][10]={"数学","英语","语文","总成绩"};
printf("请输入学生的人数:") ;
scanf("%d",&number);
input(grade,number);
output(grade,number);
for(i=0;i<=4;++i)
{
printf("%s最高成绩为%.2f",pro[i],max(grade,number,i));
printf("%s最低成绩为%.2f",min(grade,number,i));
printf("%s平均成绩为%.2f",avg(grade,number,i));
printf("n");
}
return 0;
}

void input(double s[][4],int n)
{
printf("输入学生的成绩按照(高数,英语,c语言的次序输入)n");
/*转义字符*/
int i;
for(i=0;i<n;i++)
{
scanf("%1f %1f %1f",&s[i][0],&s[i][1],s[i][2]);
s[i][3]=s[i][2]+s[i][1]+s[i][0];
}
}
void output(double s[][4],int n)
{
printf("输入的学生成绩为:n");
printf("学号t高数t英语tc语言t总分n");
int i;
for(i=0;i<n;i++)
{
printf("%dt%.1lft%.1lft%.1lft%.1lfn",i,s[i][0],s[i][1],s[i][2],s[i][3]);
}
}
double max(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m<s[i][j])
m=s[i][j];
return m;
}
double min(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m+s[i][j])
m=s[i][j];
return m;
}
double avg(double s[][4],int n,int j)
{
double sum= s[0][j];
int i;
for(i=1;i<n;i++)
sum+=s[i][j];
return sum/n;
}

解决方案

错误太多了,直接给你修改好了。


#include<stdio.h>
 /*这是一个查询学生成绩的程序,查询数学,英语,语文,计算并算出总成绩*/
 /*首先,显示输入学生人数,然后显示输入各科成绩,最后按照学号排序输出各科
 成绩。最后计算并显示出各科成绩的平均值,最大值,最小值*/
 /*在main函数中既有printf1函数,scanf函数,printf2函数,arg函数,min函数
 max函数*/
void input(double s[][4],int n);
void output(double s[][4],int n);
double max(double s[][4],int n,int i);
double min(double s[][4],int n,int i);
double avg(double s[][4],int n,int i);
int main()
{
    int i,number;
    double grade[100][4];
    char pro[4][10]={"数学","英语","语文","总成绩"};
    printf("请输入学生的人数:") ;
    scanf("%d",&number);
    input(grade,number);
    output(grade,number);
    for(i=0;i<4;++i)
    {
        printf("%s最高成绩为%.2f",pro[i],max(grade,number,i));
        printf(" %s最低成绩为%.2f",pro[i],min(grade,number,i));
        printf(" %s平均成绩为%.2f",pro[i],avg(grade,number,i));
        printf("n");
    }
    return 0;
}

void input(double s[][4],int n)
{
    printf("输入学生的成绩按照(高数,英语,c语言的次序输入)n");
    /*转义字符*/
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%lf %lf %lf",&s[i][0],&s[i][1],&s[i][2]);
        s[i][3]=s[i][2]+s[i][1]+s[i][0];
    }
}
void output(double s[][4],int n)
{
    printf("输入的学生成绩为:n");
    printf("学号t高数t英语tc语言t总分n");
    int i;
    for(i=0;i<n;i++)
    {
        printf("%dt%.1lft%.1lft%.1lft%.1lfn",i,s[i][0],s[i][1],s[i][2],s[i][3]);
    }
}
double max(double s[][4],int n,int j)
{
    double m=s[0][j];
    int i;
    for(i=1;i<n;i++)
    if(m<s[i][j])
    m=s[i][j];
    return m;
}
double min(double s[][4],int n,int j)
{
    double m=s[0][j];
    int i;
    for(i=1;i<n;i++)
    if(m>s[i][j])
    m=s[i][j];
    return m;
}
double avg(double s[][4],int n,int j)
{
    double sum= s[0][j];
    int i;
    for(i=1;i<n;i++)
    sum+=s[i][j];
    return sum/(double)n;
}

解决方案二:

    printf("%s最高成绩为%.2f",**pro[i]**,max(grade,number,i));
    printf("%s最低成绩为%.2f",min(grade,number,i)); //这里姓名的参数呢???
    printf("%s平均成绩为%.2f",avg(grade,number,i)); //一样的道理

解决方案三:

给你个建议,可以学一下gdb调试

解决方案四:

给你个建议,可以学一下gdb调试

解决方案五:

void input(double s[][4],int n);
void output(double s[][4],int n);
double max(double s[][4],int n,int i);

double min(double s[][4],int n,int i);
double avg(double s[][4],int n,int i);

int main()
{
int i,number;
double grade[100][4] = {0.0};
char pro[4][10]={"数学","英语","语文","总成绩"};
printf("请输入学生的人数:") ;
scanf("%d",&number);
input(grade,number);
output(grade,number);
for(i=0;i<=4;++i)
{
printf ("%dn",i);
printf("%s最高成绩为%.2f",pro[i],max(grade,number,i));
printf("%s最低成绩为%.2f",pro[i],min(grade,number,i));
printf("%s平均成绩为%.2f",pro[i],avg(grade,number,i));
printf("n");
}
return 0;
}

void input(double s[][4],int n)
{
printf("输入学生的成绩按照(高数,英语,c语言的次序输入)n");
/*转义字符*/
int i;
for(i=0;i<n;i++)
{
scanf("%lf %lf %lf",&s[i][0],&s[i][1],&s[i][2]);
s[i][3]=s[i][2]+s[i][1]+s[i][0];
}
}

void output(double s[][4],int n)
{
printf("输入的学生成绩为:n");
printf("学号t高数t英语tc语言t总分n");
int i;
for(i=0;i<n;i++)
{
printf("%dt%.1lft%.1lft%.1lft%.1lfn",i,s[i][0],s[i][1],s[i][2],s[i][3]);
}
}

double max(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m<s[i][j])
m=s[i][j];
return m;
}

double min(double s[][4],int n,int j)
{
double m=s[0][j];
int i;
for(i=1;i<n;i++)
if(m+s[i][j])
m=s[i][j];
return m;
}

double avg(double s[][4],int n,int j)
{
double sum= s[0][j];
int i;
for(i=1;i<n;i++)
sum+=s[i][j];
return sum/n;
}

时间: 2024-12-31 11:39:50

统计学生成绩的c,编译没报错,运行错误的相关文章

安卓简单app开发实践,代码完成后没报错,但功能就是无法使用,学生菜鸟,求指导

问题描述 安卓简单app开发实践,代码完成后没报错,但功能就是无法使用,学生菜鸟,求指导 想把网上一个简单记事本的功能(编辑,保存,修改,删除)添加入一个含三个Fragment的app框架中,但添加并把提示的错误修改后发现功能根本不管用,图标都不能点击,运行结果中console显示[2015-07-14 22:44:42 - ddms] Can't bind to local 8700 for debugger. 解决方案 看下防火墙和杀毒软件设置,提示是端口没法绑定. 解决方案二: 直接使用真

c语言基础-C语言基础题,统计学生成绩。求解

问题描述 C语言基础题,统计学生成绩.求解 输入一个正整数n,再输入n个学生的百分制成绩,统计各等级成绩的个数. 成绩等级分为五级,分别为A(90~100).B(80~89).C(70~79).D(60~69)和E(0~59) 解决方案 abcde没有初始化 加上 开头的printf下面加上 a=b=c=d=e=0; 解决方案二: 图片在这里,这样做为什么不对,求大神解答

spark-Spark1.3基于scala2.11编译hive-thrift报错,关于jline的

问题描述 Spark1.3基于scala2.11编译hive-thrift报错,关于jline的 5C [INFO] [INFO] ------------------------------------------------------------------------[INFO] Building Spark Project Hive Thrift Server 1.3.0[INFO] ---------------------------------------------------

CentOS7 编译redis报错:您选择的 CPU 不支持 x86-64 指令集

问题描述 CentOS7 编译redis报错:您选择的 CPU 不支持 x86-64 指令集 Oracle VM VirtualBox 下 CentOS7 编译redis报错,adlist.c:1:0: 错误:您选择的 CPU 不支持 x86-64 指令集 CentOS版本如下 Last login: Wed Jan 27 11:32:21 2016 from 172.31.30.139 [root@localhost ~]# uname -a Linux localhost.localdoma

android程序,eclipse没报错,但是运行会意外停止

问题描述 android程序,eclipse没报错,但是运行会意外停止 本人刚开始学习android,跟着书写了个程序,这个程序是会有一个东西随着手指拖动而移动,编译完没有问题,但是在手机上运行的时候却是意外停止,错误显示在了MainActivity的第27行,我真不知道哪里错,代码和书上写的一模一样,求大神指导 MainActivity的代码: package com.example.test34; import android.app.Activity; import android.os.

新手-android程序,eclipse没报错,但是运行会意外停止

问题描述 android程序,eclipse没报错,但是运行会意外停止 本人刚开始学习android,跟着书写了个程序,这个程序是会有一个东西随着手指拖动而移动,编译完没有问题,但是在手机上运行的时候却是意外停止,代码和书上写的一模一样,求大神指导 DrawView.java的代码:/** * */package com.example.customview; import android.content.Context;import android.graphics.Canvas;import

wind river workbench编译不报错

问题描述 wind river workbench编译不报错 wind river workbench编译不报错,c文件中明显的有语法错误就行编译不报错,能够通过,遇到好长时间了,还没解决,求大神. 解决方案 语法没错软件是检查不出来的 解决方案二: crrcercercercercr

el weblogic 报错 tomcat没报错

问题描述 el weblogic 报错 tomcat没报错 这句 weblogic 报这个错 tomcat没报错 解决方案 你用的是WebLogic10吧这个是EL写的不规范造成的 根据你抛的异常来看是在 (附近有语法错误 所以检查一下你的EL中是不是出现如下三种情况,第二种可能性比较大.1,三元运算符${a==b?xxx:yyy}需要加入括号手动处理运算优先级${a==b?(xxx):(yyy)}2,用EL取某个List的size();对于${xxxxList.size()} WebLogic

服务器-eclipse启动tomcat没报错,浏览器访问http://localhost:8080/是404

问题描述 eclipse启动tomcat没报错,浏览器访问http://localhost:8080/是404 怎么解决,谢谢 解决方案 可能是tomcat的欢迎页面被删除了. 解决方案二: eclipse启动tomcat 访问http://localhost:8080 报404错误eclipse启动tomcat 访问http://localhost:8080 报404错误eclipse启动tomcat 访问http://localhost:8080 报404错误 解决方案三: 工程部署到Roo