基础题-求奇数的乘积

waggly505 2017-11-07 02:07:55


#include <stdio.h>
#include <string.h>

int main()
{
int n,a,sum;


while((n=getchar()) != EOF)
{sum=1;
scanf("%d",&n);
while((a=getchar()) != '\n');
{
for(;n>=0;n--)
{
if(a%2!=0)

sum*=a;
else
sum*=1;




}
printf("%d",sum);
}


getchar();
}
return 0;
}



代码如上,不管输入什么输出都是1????求解答
...全文
677 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
maxbirdyang 2017-11-07
  • 打赏
  • 举报
回复
scanf("%d",&n); 回车之后,'\n' 10 换行(newline) while((a=getchar()) != '\n'); a == 10,所以每次都是偶数,你可以debug断住看下a的值 { for(;n>=0;n--) { if(a%2!=0) sum*=a; else sum*=1; } printf("%d",sum); }
自信男孩 2017-11-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>

int main()
{
    int n,a,sum = 1;
    int i;

#if 1

    while (scanf("%d", &n) == 1) {
        i = 0;
        while (i < n && scanf("%d", &a) == 1) {
            if (a % 2 != 0)
                sum *= a;
            i++;
        }
        printf("sum = %d\n", sum);
        sum = 1;
    }

#else
    while((n=getchar()) != EOF)
    {
        sum=1;
        scanf("%d",&n);
        while((a=getchar()) != '\n');
        {
            for(;n>=0;n--)
            {
                if(a%2!=0)

                    sum*=a;
                else
                    sum*=1;




            }
            printf("%d",sum);
        }


        getchar();
    }
#endif
    return 0;
}

参考一下吧 getchar()输入的1, 2,3都是字符1, 2, 3不是数值的1, 2, 3 字符'1', '2', '3'对应的十进制分别是49, 50, 51

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧