求助大佬一个数组的问题!
每次都只得了33分……TAT{:9_238:}题目:现在按学号次序(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, p;
for(p=0; p<n; p++)
{
scanf("%d", &s);
}
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;
}
a = (sum*1.0)/(j-i+1);
printf("%.2f", a);
sum = 0;
}
return 0;
} 没头没脑的,
请注明问题出在哪,或者贴出报错代码 兄弟,我看了三遍,还测试了半天,并没有发现你说的只会得出一个结果的问题 要干什么呢??问什么问题呢??
bin554385863 发表于 2019-11-1 08:44
没头没脑的,
请注明问题出在哪,或者贴出报错代码
{:10_257:}抱歉,第一次发帖提问没说清楚……这个题是我学校的练习,我在devC++上可以运行,但在学校平台上还有两个测试点没通过,问了老师他也只说是数组长度的问题,但我改了之后也没用,所以来发帖问下我的有没有什么问题…… lovepipi 发表于 2019-11-1 12:10
兄弟,我看了三遍,还测试了半天,并没有发现你说的只会得出一个结果的问题
{:10_291:}抱歉,第一次发帖提问没说清楚……这个题是我学校的练习,我在devC++上可以运行,但在学校平台上还有两个测试点没通过,问了老师他也只说是数组长度的问题,但我改了之后也没用,所以来发帖问下我的有没有什么问题…… AmosAlbert 发表于 2019-11-1 21:38
要干什么呢??问什么问题呢??
{:10_245:}抱歉,第一次发帖提问没说清楚……这个题是我学校的练习,我在devC++上可以运行,但在学校平台上还有两个测试点没通过,问了老师他也只说是数组长度的问题,但我改了之后也没用,所以来发帖问下我的有没有什么问题…… 本帖最后由 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 = {0};
printf("请按学号输入成绩\n");
for (size_t i = 0; i < n; i++)
{
scanf("%d", &stu);
}
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;
}
res = sum / (b - a + 1);
printf("第%d次平均成绩 = %.2f\n", t - m, res);
printf("\n");
sum = 0;
m--;
}
return 0;
}
bin554385863 发表于 2019-11-1 23:06
#include
int main()
scanf("%d %d", &i, &j);
for(k=i-1; k<=j-1; k++)
{
sum = sum + s;
}
可是j不是在上面有输入的吗?这样那i也没有初始化啊……{:10_291:} 阿康康康 发表于 2019-11-1 23:16
scanf("%d %d", &i, &j);
for(k=i-1; k
额,那是我看岔了,我在看看等下改改 本帖最后由 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 = {0};
printf("请按学号输入成绩\n");
for (size_t i = 0; i < n; i++)
{
scanf("%d", &stu);
}
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;
}
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> bin554385863 发表于 2019-11-2 00:19
这应该是你要的效果吧
===============================================================
{:10_298:}辛苦你了,感谢! 阿康康康 发表于 2019-11-1 22:48
抱歉,第一次发帖提问没说清楚……这个题是我学校的练习,我在devC++上可以运行,但在学校平台 ...
好的,是不是边界设置错误了呢 bin554385863 发表于 2019-11-2 00:19
这应该是你要的效果吧
===============================================================
弱弱问一句size_t i = a - 1 含义是? 本帖最后由 bin554385863 于 2019-11-11 21:18 编辑
愈伤组织 发表于 2019-11-11 21:14
弱弱问一句size_t i = a - 1 含义是?
你输入的是从一开始的索引,而C语言是从零开始索引的
页:
[1]