我遇到这个问题我过去7个小时都试图完成这个问题,但我没有到达任何地方。我尝试了很多选择,但我似乎总是失败。如果有人帮我解决这个问题,我会很高兴,所以我可以看到我出错的地方。我做了很小的尝试但是我越往前走得越远。如果有人给我一些指导,我会很高兴。这是程序应该是什么样的。
我必须输入整数,只要它是一个浮动数字,而不是它应该显示错误,我需要再试一次。最小数量为10。
输入所有数字后,它应显示数字的百分比是偶数。
我可以随时输入"退出"
退出程序int i;
for(i=1; i<=10; ++i)
printf("Enter 10 integers: ");
scanf("%d",&i);
printf("Enter the next integer or type exit to end the program: %d",i);
system("PAUSE");
return (printf);
答案 0 :(得分:3)
既然你要求提供指导而不是一个完整的解决方案,那么就这样了。
首先你当前有
for(i=1; i<=10; ++i)
printf("Enter 10 integers: ");
scanf("%d",&i);
除非您使用大括号,否则for
将绕下一行循环,即它会打印“输入...”10次:
for(i=1; i<=10; ++i)
printf("Enter 10 integers: ");
scanf("%d",&i);
习惯于将所有想要循环的东西(甚至是单行)放入大括号中可能会有所帮助:
for(i=1; i<=10; ++i)
{
printf("Enter 10 integers: ");
scanf("%d",&i);
//...
}
人们(有充分理由)通常在C中从0开始:
for(i=0; i<10; ++i)
{
printf("Enter 10 integers: ");
scanf("%d",&i);
//...
}
如果您构建代码,那么可能有助于提取get_valid_input函数
for(i=0; i<10; ++i)
{
printf("Enter 10 integers: ");
get_valid_input(); //what do you intend to do with this?
//...
}
与
int get_valid_input()
{
int i;
scanf("%d",&i); //how do they type "exit"?
//..
}
这需要考虑 - 它应该返回int
吗?
然后你可以把它们存放在某个地方。
但是你可以随时跟踪偶数的百分比。
此外,您可以随时按“退出”(键入字符串或按键?),因此您需要能够指出。
一旦完成,不要忘记打印结果。 (留给读者练习)
答案 1 :(得分:0)
int i, v, n=0, even;
int array[10] = {0};
char buff1[32], buff2[32];
printf("Enter 10 integers: \n");
for(i=1; i<=10; ++i){
printf("Enter the next integer or type exit to end the program %d:\n", i);
fgets(buff1, sizeof buff1, stdin);
strcpy(buff2, strtok(buff1, " \t\n"));//trim
if(strcmp(buff2, "exit")==0)
break;
if(1!=sscanf(buff2, "%d%s", &v, buff1)){
printf("invalid input\n");
--i;
continue;
}
array[n++] = v;
}
for(even=i=0;i<n;++i){
printf("%d ", array[i]);
if((array[i] & 1) == 0)
++even;
}
printf("\n");
if(n)
printf("Even proportions : %.1f%%\n", 100.0*even / n);
system("PAUSE");
return 0;