注册 登录
编程论坛 C语言论坛

有大佬能看看为什么回车一直换行而不是往下执行呢

qq14 发布于 2021-01-02 20:37, 1776 次点击
    定义的部分:
    int n,m;
    printf("请输入科目的数量:");
    scanf("%d",&m);
    printf("请输入学生的人数:");
    scanf("%d",&n);
    int score[N][M];//存放N个学生的M科成绩
    long long hao[m];//学生的学号
    int stu[N];//每个学生总成绩
    double pj[N];//每个学生每一科的平均成绩
    int sum[m];//每一科的总成绩
    double ave[m];//每科的平均成绩

    主体里是Luru(score,stu,sum,hao,pj,m,ave,n);
            printf("成绩已经录入,请进行下一步操作!\n");
     
    调用我是这样写的:
 void Luru(int score[][M],int stu[],int sum[],long long hao[],double pj[],int m,int n,double ave[])
{
    printf("请输入每位同学的学号和每一科的成绩:");
    stu[0]=0;
    sum[0]=0;
    int o;//学生人数-1(i从0开始
    for(int i=0;i<n;i++)
    {
        scanf("lld",&hao[i]);
        o=i;
        for(int j=0;j<m;j++)
        {
            scanf("%d",&score[i][j]);
            stu[i]+=score[i][j];
        }
    }
    for(int t=0;t<n;t++)
    {
        for(int k=0;k<m;k++)
        {
            sum[m]+=score[k][t];
        }
    }
    for(int h=0;h<n;h++)
    {
        pj[h]=stu[h]/m;
    }
    for(int g=0;g<m;g++)
    {
        ave[g]=sum[g]/(o+1);
    }
}
我有限定i和j的,为什么会回车一直换行不执行啊有人能告诉我么真的谢谢谢谢
5 回复
#2
qq142021-01-02 20:45
顶顶顶顶,不要让楼主寂寞太久
#3
caque2021-01-02 23:11
逻辑上不清楚,但是你Luru函数里的第一个scanf("lld",&hao[i]);里面少个%
#4
风过无痕19892021-01-03 01:49
回复 楼主 qq14
你设置的变量种类太多了,我帮你删除了两个:m、n,因为它们与 M、N 重复,因我的 VS2015不支持C99,故在自定义的 luru() 函数中,将变量类型全部集中定义了,你的编译器若支持C99,可以不予理会,继续使用你原来的定义好了。你原来的程序不能输入,其原因是函数定义错误,现已修改,下面的程序已经可以编译了,你自己完成输入并编译运行吧
程序代码:

#include<stdio.h>
#define N 10
#define M 5
int Luru(double score[][M], int stu[], int sum[], long long hao[], double pj[], double ave[]);
int main()
{
    double score[N][M];//存放N个学生的M科成绩
    long long hao[N];//学生的学号
    int stu[N];//每个学生总成绩
    double pj[N];//每个学生每一科的平均成绩
    int sum[M];//每一科的总成绩
    double ave[M];//每科的平均成绩

    Luru(score, stu, sum, hao, pj, ave);
    printf("成绩已经录入,请进行下一步操作!\n");
}

int Luru(double score[][M], int stu[], int sum[], long long hao[], double pj[], double ave[])
{
    int i, j, k, h, t, g;
    printf("请输入每位同学的学号和每一科的成绩:");
    stu[0] = 0;
    sum[0] = 0;
   
    int o;//学生人数-1(i从0开始
    for (i = 0;i < N;i++)
    {
        scanf("%lld", &hao[i]);
        o = i;
        for (j = 0;j < M;j++)
        {
            scanf("%d", &score[i][j]);
            stu[i] += score[i][j];
        }
    }
    for (t = 0;t < N;t++)
    {
        for (k = 0;k < M;k++)
        {
            sum[k] += score[k][t];
        }
    }
    for (h = 0;h < N;h++)
    {
        pj[h] = stu[h] / M;
    }
    for (g = 0;g < M;g++)
    {
        ave[g] = sum[g] / (o + 1);
    }
}
#5
qq142021-01-03 16:11
已经解决了!!一个输入错误,函数声明的形参和引用的时候没有对应
#6
qq142021-01-03 16:12
回复 3楼 caque
是的是的
1