需要小c编程帮助

时间:2014-12-04 12:46:45

标签: c

我遇到这个问题我过去7个小时都试图完成这个问题,但我没有到达任何地方。我尝试了很多选择,但我似乎总是失败。如果有人帮我解决这个问题,我会很高兴,所以我可以看到我出错的地方。我做了很小的尝试但是我越往前走得越远。如果有人给我一些指导,我会很高兴。这是程序应该是什么样的。

  1. 我必须输入整数,只要它是一个浮动数字,而不是它应该显示错误,我需要再试一次。最小数量为10。

  2. 输入所有数字后,它应显示数字的百分比是偶数。

  3. 我可以随时输入"退出"

    退出程序
    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);
    

2 个答案:

答案 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;