这个是题目
题目内容:
你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。
输入格式:
一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。
输出格式:
两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。
输入样例:
9 3 4 2 5 7 -1
输出样例:
4 2
这个是我的代码
#include<stdio.h>
int main()
{
int x;
int t=0;
int a=0;
int b=0;
printf("请输入一组数,以-1作为结束数:\n");
scanf("%d",&x);
if(-2<x&&x<10000)
{
while(0<x&&x<10000)
{
t=x%2;
if(t==1)
a++;
else
b++;
scanf("%d ",&x);
}
if(x==-1)
printf("奇数%d个,偶数%d个",a,b);
}
else
printf("输入无效");
return 0;
}
问题
结果就是我要多打一个-1才能结束运行。
谢谢你们的帮助
把输入放到循环语句内部,修改如下:
#include<stdio.h>
int main()
{
int x;
int t=0;
int a=0;
int b=0;
printf("请输入一组数,以-1作为结束数:\n");
do{
scanf("%d",&x);
if(x == -1)
break;
if(x<-2 || x>10000){
printf("输入无效\n");
continue;
}
t=x%2;
if(t==1)
a++;
else
b++;
}while(0<x&&x<10000);
printf("奇数%d个,偶数%d个",a,b);
return 0;
}
你代码逻辑有问题,参考
#include <stdio.h>
int main()
{
int x;
int t = 0;
int a = 0;
int b = 0;
printf("请输入一组数,以-1作为结束数:\n");
while (1)
{
scanf("%d", &x);
if (x == -1)
break;
else if (x >= 0 && x <= 10000)
{
t = x % 2;
if (t == 1)
a++;
else
b++;
}
else
{
printf("输入无效\n");
}
}
printf("奇数%d个,偶数%d个", a, b);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
19行scanf中的空格删掉
你这是在网站上做题吗