程序不会进入循环

时间:2018-01-27 19:28:14

标签: c scanf

你好,我对编程很陌生。

我知道关于这个主题已经有很多已经被问到的问题,但是我已经阅读了所有这些问题但仍无法确定问题所在。分配是编写程序,它将采用4位数字并乘以数字(exp.1576; 1 * 5 * 6 * 7)。程序运行bat ok直到循环然后停止(甚至没有说有一些错误)。在此先感谢您的帮助

#include< stdio.h >
#include <math.h>
main()
{
 int n,i,b=4,proizvod=1 ; 
 printf("Unesite prirodan cetvorocifreni broj:");
 scanf_s("%d ", &n);
 for (i = 0; i < b; b--) {
     proizvod = proizvod * n % 10;
     n = n / 10;
 }
  printf("Prozivod cifara je: %d", proizvod);
}

2 个答案:

答案 0 :(得分:4)

由于在space %dscanf_s()之后给出%d,因此等待额外输入。 删除scanf_s("%d ", &n); // space is causing scanf_s() to wait for another input 之后的空格。

b=4

按照你的逻辑,不需要n,你的任何数字的输入都可以,所以旋转循环直到zero变为 while(n!=0){ /* rotate loop until n not becomes zero */ proizvod = proizvod * (n % 10); n = n / 10; } ,如下所示。

{{1}}

答案 1 :(得分:0)

该逻辑仅对四位数有效。如果您想为任何数字编码,请使用逻辑while(n!=0)。其他人已经解释了无输出的原因。删除%d后的空格。