你好,我对编程很陌生。
我知道关于这个主题已经有很多已经被问到的问题,但是我已经阅读了所有这些问题但仍无法确定问题所在。分配是编写程序,它将采用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);
}
答案 0 :(得分:4)
由于在space
%d
内scanf_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后的空格。