【发布时间】:2019-11-27 10:01:33
【问题描述】:
有n个学生的数组(stu[n])。如果性别是男孩,那么我的代码会添加
- 对于男孩
b, 2nd,4th,6th,........数组的偶数位置元素和 - 对于女孩
g, 1st,3rd,5th....数组的奇数位置元素。
1> 男孩的性别用 b 表示。 2> 用g表示女孩的性别。
输入信息>>
- 第一行包含 n,表示班级中的学生人数,即数组中元素的数量。
- 随后的每一行都包含 n 个学生的分数。
- 最后一行包含性别 b/g;
输出信息>>
输出应包含上述标记的所有替代元素的总和。
#include <stdio.h>
int main() {
int n,i;
scanf("%d",&n);//n denotes number of students.
int stu[n],sum=0;
for(i=1;i<=n;++i)
scanf("%d",&stu[i]);//for accepting input in array.
char gen;
scanf("%s",&gen);//for accepting input gender b/g.
for(i=1;i<=n;i++){
if(gen=='g' && i%2!=0){ //girl g adds alternate odd position elements.
sum=sum+stu[i];
printf("%d",sum);
}
else if(gen=='b' && i%2==0){ //boy b adds alternate even position elements.
sum=sum+stu[i];
printf("%d",sum);
}
}
//code
return 0;
}
示例输入
3 3 2 5 b
样本输出 8
解释>> 标记 = [3,2,5] 和性别 = b 所以它将添加 3+5(甚至位置 0,2 替代元素)。如果性别代替 b 是 g 那么它将产生输出 = 2。
我的代码在所有测试用例中显示输出为 0。
【问题讨论】:
-
你说文件有多行,但你给的样本都在一行。输入中的每个数据点是用换行符还是空格分隔?细节很重要,准确无误也很重要。
-
由新行分隔
-
数据用新行分隔。
-
我应该将 \n 添加到所有 scanf 并检查吗??
-
如果你用scanf,其实没关系。但是IMO你不应该使用scanf。我在下面给出的解决方案适用于每种情况。
标签: c for-loop scanf variable-length-array