这个问题
一位数学老师要求她的学生给出3个正奇数的例子。当学生指定正确答案时,他/她的分数增加1.当学生指定正偶数时,他/她的分数减0.5。当学生指定负数时,他/她将不再有机会纠正他或她的错误,他/她的分数将减少1.因此,当他/她正确指定时,学生轮到他们3个正奇数或当学生指定负数时。
很少有学生不知道奇数和偶数之间的差异,他们犯了很多错误,所以教师很难维持得分。老师请求你的帮助。
你可以通过写一个程序计算分数来帮助她吗?
样品输入1:1 3 5样品输出1:3.0
样品输入2:1 2 5 6 7样品输出2:2.0
样品输入3:2 -4样品输出3:-1.5
样品输入4:3 3 3样品输出4:3.0
问题:
在这里,我没有得到如何通过单一scanf输入多个变量
这是我的代码
#include<stdio.h>
int main()
{
int a,i;
float b=0;
for(i=1;i<=3;i++)
{
scanf("%d",&a);
do
{
if(a%2==0)
{
b=b-0.5;
}
if(a<0)
{
b--;
}
else if(a%2!=0)
{
b++;
}
printf("%.1f",b);
}
while(a%2!=0);
break;
}
return 0;
}
看,下面的for
循环只会迭代3
次:
for(i=1;i<=3;i++)
而你输入的时间可能超过3
次数(参见样本输入2)!
除了代码中的一些逻辑错误外,还有一些语法问题。
float b=0;
使用float b = 0.0;
请注意,如果输入为负偶数,则以下代码将减少b
的0.5
if(a%2==0)
{
b=b-0.5;
}
直接的if
条件将再次通过b
减少1
。
if(a<0)
{
b--;
}
这将使你的结果更加减少0.5
,这是不正确的。
根据您的问题定义,Sample Input是可变的,因此您还必须实现循环。尝试这样的事情:
int input, correctResultCount = 0;
float result = 0.0;
while (true) {
scanf("%d", &input);
if (input < 0) {
result--;
break;
}
if (input % 2 == 0) {
result = result - 0.5;
}
if (input % 2 != 0) {
result++;
correctResultCount++;
}
if (correctResultCount == 3)
break;
}
printf("%.1f", result);