输入一个正整数 repeat (0<repeat<10),做repeat 次下列运算:读入一批正整数(以零或负数为结束标志),求其中的奇数和。
#include <stdio.h>
int main()
{
int repeat;
scanf("%d", &repeat);
getchar();
for (; repeat > 0; repeat--)
{
int i=1;
int result = 0;
/*读入一批正整数(以零或负数为结束标志),求其中的奇数和*/
while (1)
{
scanf("%d",&i);
if (i == 0 || i == -1)
{
break;
}
if (i % 2 != 0)
{
result += i;
}
}
printf("%d\n", result);
}
return 0;
}
基于new bing的分析:
使用 while(repeat--) 的方式循环读取一批正整数。在每次读取一批正整数时,我们先读入第一个正整数 num,然后判断其是否大于0,如果大于0,则继续读取下一个数值。在读取每个数值时,我们同样判断其是否为奇数,并累加到 result 变量中。当读取的数值小于等于0时,推出内层循环,并打印 result 的值。这样就可以有效避免超时问题。
#include <stdio.h>
int main()
{
int repeat;
scanf("%d", &repeat);
getchar();
while (repeat--)
{
int num, result = 0;
/* 读取一批正整数(以零或负数为结束标志),求其中的奇数和 */
scanf("%d", &num);
while (num > 0)
{
if (num % 2 != 0)
{
result += num;
}
scanf("%d", &num);
}
printf("%d\n", result);
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:在输入正整数repeat后,输入一组正整数,可以用循环遍历这组正整数,判断每个数是否为奇数,并将所有奇数加起来。对于超时的问题,可以考虑使用更优的算法或优化代码,比如减少循环次数、使用快速读入等。以下是可能的代码实现(C语言):
#include <stdio.h>
int main() {
int repeat, i, j, num, sum;
scanf("%d", &repeat); // 输入循环次数
for (i = 0; i < repeat; i++) { // 循环repeat次
scanf("%d", &num); // 输入一组正整数
sum = 0; // 初始化奇数的和
for (j = 0; j < num; j++) { // 遍历这组正整数
int x;
scanf("%d", &x);
if (x % 2 == 1) { // 判断是否为奇数,并加入奇数的和
sum += x;
}
}
printf("%d\n", sum); // 输出奇数的和
}
return 0;
}