c/c++语言开发共享基本的C编程

我正在尝试编写一个程序,它给出一定数量的输入将输出所列输入的乘积(只有0-9的会计输入而忽略其他输入)。 例如:输入:345将导致输出:60,或另一个示例,输入:3t4和输出:12

我已经做了很多次尝试,这就是我所坚持的:

#include  main(){ int c,i; c = getchar(); i = 1; while (c!= 'n'){ if (c>=48 && c<=57){ i=c*i; c=getchar(); } } printf("%d",i); } 

    更改

     i = c*i; 

     i = (c - '0')*i; 

    这里发生的是变量c包含数字的ascii值而不是数字。 所以, '0'是48, '1'是49,依此类推。 所以当你输入12时,你不会得到1x2而是49x50

    看看ascii图表。

    从内部if块中删除花括号

     #include  main() { int c,i; c = getchar(); i = 1; while (c!= 'n'){ if (c>=48 && c<=57) i = (c-'0')*i; c=getchar(); } printf("%d",i); } 

    您必须将已读取的字符转换为相应的数字值。 由于您只使用单个数字,因此可以利用/滥用“0”到“9”的ASCII字符按顺序(从48到57)的事实。

    使用do { } while()而不是while() { }可以避免在循环外“预设” c的需要。

    main的正确标头是int main(void)int main(int argc, char *argv[]) ,你应该从main return一个值。

    以下应该有效,但我承认我没有编译或测试它:

     #include  int main(void) { int c; /* Character read */ int i = 1; /* Product */ do { c = getchar(); if (c>='0' && c<='9'){ i *= (c-'0'); } } while( c != 'n' ); printf("Product: %dn",i); return 0; } 

    2要注意的事项:(1)。 删除if块的花括号。 (2)。 负责从ascii代码到数字的转换。 i =(c – ‘0’)* i;

      以上就是c/c++开发分享基本的C编程相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/518812.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐