我正在网上法官解决问题而且我遇到了问题。我认为我的代码是正确的,但不幸的是法官说错了答案。我哪里弄错了?
Habib在过去几天里学到了很多关于编程的知识!今天,他面临着一个新的挑战,用测试用例处理输入!为此,他必须解决一组输入,并且对于每个输入,h必须生成输出。除了计算因子之外,还有什么比练习这个更好?!通过将N
的所有整数相乘来计算整数1 to N
的阶乘。例如,4!
(4阶乘)计算为 - 1x2x3x4=24
。在这个问题中,Habib需要为定义数量的测试用例解决一组输入。例如,如果testcase = 3
,那么他必须接受3
组输入并生成3
组所需输出,一个输出用于一个输入。帮助他解决问题。
输入
输入以整数Test(0&lt; Test&lt; 100)开始,表示要求解的输入或测试用例的数量。对于每个测试用例,输入整数n(0 <= n <= 10)。
输出
对于每个测试用例,在一行中生成输出格式为:Case x: y
,其中x是测试用例编号,y是计算n!的答案。
#include <stdio.h>
int main()
{
int i,Test,n=0,x,j,y,s=1;
scanf("%d",&Test);
for(i=1;i<=Test;i++)
{
scanf("%d",&n);
for(j=1;j<=n;j++)
{
s=s*j;
}
printf("Case %d: %d\n",i,s);
}
return 0;
}
答案 0 :(得分:2)
您忘记为每个测试用例重置s
。
尝试在s=1;
之后添加scanf("%d",&n);
。
答案 1 :(得分:0)
输入输入以整数Test(0&lt; Test&lt; 100)开始,表示要求解的输入或测试用例的数量。对于每个测试用例,输入整数n(0 <= n <= 10)。
您的代码并未反映这一点。你一定要检查输入是否有效,方法可以是:
if(Test < 100 && Test > 0){
//do something
}else{
printf("Invalid input!");
}
此外,您应该考虑使用大写变量名称或仅使用小写,例如:int test,n
或int Test, N
。当你必须在几天之后编辑它们时,混合两者使得更大的项目成为猜谜游戏。
现在到你的任务: 基本上你的任务是找到n!并做X次。
正如@MikeCat所说,你永远不会重置你的s,这是你的阶乘的起点。
#include <stdio.h>
int main(){
int i,test,n=0,x,j,y,s=1;
scanf("%d",&Test);
if(!(test <100 && test > 0)){
printf("Invalid input!");
}
for(i=1;i<=test;i++)
{
scanf("%d",&n);
s = 1;
for(j=1;j<=n;j++)
{
s=s*j;
}
printf("Case %d: %d\n",i,s);
}
return 0;
}
这应该可以解决问题。
答案 2 :(得分:0)
将您的代码更改为
#include <stdio.h>
int main()
{
int i,Test,n=0,x,j,y;
scanf("%d",&Test);
for(i=1;i<=Test;i++)
{
int s=1;//observe this
scanf("%d",&n);
for(j=1;j<=n;j++)
{
s=s*j;
}
printf("Case %d: %d\n",i,s);
}
return 0;
}