鱼C论坛

 找回密码
 立即注册
查看: 2736|回复: 14

[已解决]求助大佬一个数组的问题!

[复制链接]
发表于 2019-11-1 08:21:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
每次都只得了33分……TAT

题目:现在按学号次序(1到n)给你n个同学的的成绩,m次询问,每次询问第i个学生到第j个学生的平均成绩(保留两位小数)。

输入:Input第一行一个整数n,第二行n个整数代表n个同学的成绩。 第三行一个整数m,接下来m行每次两个整数i,j,每次询问第i个学生到第j个学生的平均成绩(保留两位小数)。 (1<=n<=1000)

输出:对于每次询问,输出成绩
#include <stdio.h>

int main()
{
        int n;
        scanf("%d", &n);
        int s[n], p;
        for(p=0; p<n; p++)
        {
                scanf("%d", &s[p]);
        }
        
        int m, q, i, j, k, sum=0;
        double a;
        scanf("%d", &m);
        for(q=0; q<m; q++)
        {
                scanf("%d %d", &i, &j);
                for(k=i-1; k<=j-1; k++)
                {
                        sum = sum + s[k];
                }
                a = (sum*1.0)/(j-i+1);
                printf("%.2f", a);
                sum = 0;
        }
        
        return 0;
}
最佳答案
2019-11-2 00:19:21
本帖最后由 bin554385863 于 2019-11-2 01:04 编辑
bin554385863 发表于 2019-11-1 23:29
额,那是我看岔了,我在看看等下改改


这应该是你要的效果吧
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int n = 1;
    printf("请输入学生个数\n");
    scanf("%d", &n);
    int stu[n] = {0};
    printf("请按学号输入成绩\n");
    for (size_t i = 0; i < n; i++)
    {
        scanf("%d", &stu[i]);
    }
    int m = 0, a = 0, b = 0;
    float res = 0, sum = 0;
    printf("请输入询问的次数\n");
    scanf("%d", &m);
    int t = m + 1;
    while (m != 0)
    {
        printf("请第%d次输入开始学号, 结束学号\n", t-m);
        scanf("%d%d", &a, &b);
        for (size_t i = a - 1; (i <= b - 1)&&(a <= b); i++)
        {
            sum += stu[i];
        }
        res = sum / (b - a + 1);
        printf("第%d次平均成绩 = %.2f\n", t - m, res);
        printf("\n");
        sum = 0;
        m--;
    }
    return 0;
}
===============================================================
Microsoft Windows [版本 10.0.18363.418]
(c) 2019 Microsoft Corporation。保留所有权利。

E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-zflx2jxg.42x --stdout=Microsoft-MIEngine-Out-xsmimx2y.e41 --stderr=Microsoft-MIEngine-Error-enbuwzwj.civ --pid=Microsoft-MIEngine-Pid-hlgfwcns.oo0 "--dbgExe=E:\My Program\Others\MinGW\bin\gdb.exe" --interpreter=mi
请输入学生个数
12
请按学号输入成绩
11 22 33 44 55 66 96 85 74 45 12 78
请输入询问的次数
4
请第1次输入开始学号, 结束学号
1 3
第1次平均成绩 = 22.00

请第2次输入开始学号, 结束学号
1 2
第2次平均成绩 = 16.50

请第3次输入开始学号, 结束学号
4 9
第3次平均成绩 = 70.00

请第4次输入开始学号, 结束学号
7 10
第4次平均成绩 = 75.00



E:\Users\admin\Documents\VScode>  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-1 08:44:34 From FishC Mobile | 显示全部楼层
没头没脑的,
请注明问题出在哪,或者贴出报错代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 12:10:53 | 显示全部楼层
兄弟,我看了三遍,还测试了半天,并没有发现你说的只会得出一个结果的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 21:38:12 | 显示全部楼层
要干什么呢??问什么问题呢??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-1 22:47:26 | 显示全部楼层
bin554385863 发表于 2019-11-1 08:44
没头没脑的,
请注明问题出在哪,或者贴出报错代码

抱歉,第一次发帖提问没说清楚……这个题是我学校的练习,我在devC++上可以运行,但在学校平台上还有两个测试点没通过,问了老师他也只说是数组长度的问题,但我改了之后也没用,所以来发帖问下我的有没有什么问题……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-1 22:47:57 | 显示全部楼层
lovepipi 发表于 2019-11-1 12:10
兄弟,我看了三遍,还测试了半天,并没有发现你说的只会得出一个结果的问题

抱歉,第一次发帖提问没说清楚……这个题是我学校的练习,我在devC++上可以运行,但在学校平台上还有两个测试点没通过,问了老师他也只说是数组长度的问题,但我改了之后也没用,所以来发帖问下我的有没有什么问题……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-1 22:48:48 | 显示全部楼层
AmosAlbert 发表于 2019-11-1 21:38
要干什么呢??问什么问题呢??

抱歉,第一次发帖提问没说清楚……这个题是我学校的练习,我在devC++上可以运行,但在学校平台上还有两个测试点没通过,问了老师他也只说是数组长度的问题,但我改了之后也没用,所以来发帖问下我的有没有什么问题……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 23:06:07 | 显示全部楼层
本帖最后由 bin554385863 于 2019-11-2 01:10 编辑
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int n = 1;
    printf("请输入学生个数\n");
    scanf("%d", &n);
    int stu[n] = {0};
    printf("请按学号输入成绩\n");
    for (size_t i = 0; i < n; i++)
    {
        scanf("%d", &stu[i]);
    }
    int m = 0, a = 0, b = 0;
    float res = 0, sum = 0;
    printf("请输入询问的次数\n");
    scanf("%d", &m);
    int t = m + 1;
    while (m != 0)
    {
        printf("请第%d次输入开始学号, 结束学号\n", t-m);
        scanf("%d%d", &a, &b);
        for (size_t i = a - 1; (i <= b - 1)&&(a <= b); i++)
        {
            sum += stu[i];
        }
        res = sum / (b - a + 1);
        printf("第%d次平均成绩 = %.2f\n", t - m, res);
        printf("\n");
        sum = 0;
        m--;
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-1 23:16:31 | 显示全部楼层

                scanf("%d %d", &i, &j);
                for(k=i-1; k<=j-1; k++)
                {
                        sum = sum + s[k];
                }
可是j不是在上面有输入的吗?这样那i也没有初始化啊……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-1 23:29:50 | 显示全部楼层
阿康康康 发表于 2019-11-1 23:16
scanf("%d %d", &i, &j);
                for(k=i-1; k

额,那是我看岔了,我在看看等下改改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-2 00:19:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 bin554385863 于 2019-11-2 01:04 编辑
bin554385863 发表于 2019-11-1 23:29
额,那是我看岔了,我在看看等下改改


这应该是你要的效果吧
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int n = 1;
    printf("请输入学生个数\n");
    scanf("%d", &n);
    int stu[n] = {0};
    printf("请按学号输入成绩\n");
    for (size_t i = 0; i < n; i++)
    {
        scanf("%d", &stu[i]);
    }
    int m = 0, a = 0, b = 0;
    float res = 0, sum = 0;
    printf("请输入询问的次数\n");
    scanf("%d", &m);
    int t = m + 1;
    while (m != 0)
    {
        printf("请第%d次输入开始学号, 结束学号\n", t-m);
        scanf("%d%d", &a, &b);
        for (size_t i = a - 1; (i <= b - 1)&&(a <= b); i++)
        {
            sum += stu[i];
        }
        res = sum / (b - a + 1);
        printf("第%d次平均成绩 = %.2f\n", t - m, res);
        printf("\n");
        sum = 0;
        m--;
    }
    return 0;
}
===============================================================
Microsoft Windows [版本 10.0.18363.418]
(c) 2019 Microsoft Corporation。保留所有权利。

E:\Users\admin\Documents\VScode>c:\Users\admin\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-zflx2jxg.42x --stdout=Microsoft-MIEngine-Out-xsmimx2y.e41 --stderr=Microsoft-MIEngine-Error-enbuwzwj.civ --pid=Microsoft-MIEngine-Pid-hlgfwcns.oo0 "--dbgExe=E:\My Program\Others\MinGW\bin\gdb.exe" --interpreter=mi
请输入学生个数
12
请按学号输入成绩
11 22 33 44 55 66 96 85 74 45 12 78
请输入询问的次数
4
请第1次输入开始学号, 结束学号
1 3
第1次平均成绩 = 22.00

请第2次输入开始学号, 结束学号
1 2
第2次平均成绩 = 16.50

请第3次输入开始学号, 结束学号
4 9
第3次平均成绩 = 70.00

请第4次输入开始学号, 结束学号
7 10
第4次平均成绩 = 75.00



E:\Users\admin\Documents\VScode>  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-2 08:48:32 | 显示全部楼层
bin554385863 发表于 2019-11-2 00:19
这应该是你要的效果吧

===============================================================

辛苦你了,感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-8 12:29:58 | 显示全部楼层
阿康康康 发表于 2019-11-1 22:48
抱歉,第一次发帖提问没说清楚……这个题是我学校的练习,我在devC++上可以运行,但在学校平台 ...

好的,是不是边界设置错误了呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-11 21:14:02 | 显示全部楼层
bin554385863 发表于 2019-11-2 00:19
这应该是你要的效果吧

===============================================================

弱弱问一句size_t i = a - 1 含义是?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-11 21:17:28 | 显示全部楼层
本帖最后由 bin554385863 于 2019-11-11 21:18 编辑
愈伤组织 发表于 2019-11-11 21:14
弱弱问一句size_t i = a - 1 含义是?


你输入的是从一开始的索引,而C语言是从零开始索引的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 12:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表