int main(){
char s[10];
int t,n,i,a,w;
scanf("%d",&t);
while(t--)
{
w=0;
scanf("%d%s",&n,s);
for(i=0;i<n;i++)
{
scanf("%d",&a);
if(a%2==0)
w++;
}
if(n==1 && w==1 && strcmp(s,"Dee") == 0)
printf("Dee\n");
else
printf("Dum\n");
}
return 0;}
while(t--)
?
这是while(t=t-1)
吗?
对于t
的任何给定整数,情况永远不会如此?
答案 0 :(得分:4)
while (t--) {
...
}
表示评估t
是真还是假,然后递减t
。因此,如果为1
输入t
的值,则上述循环将实际迭代一次,然后终止。
另一方面,如果您有以下循环:
while (--t) {
...
}
如果您为1
输入t
,那么循环甚至不会执行一次,因为t
在循环评估之前会变为零。
答案 1 :(得分:2)
t=t-1
和--t
都相同。 --t
只是一个简短的符号。
while()
如果是false
或0
则会退出。循环中除0
以外的任何数字(可能是正数或负数)始终为true执行/迭代t
值减1个值。它一直持续到t
的值变为0
并退出循环。
t--
被称为后减量。它首先检查然后递减值。
--t
被称为预先减少。它首先递减值,然后检查。
答案 2 :(得分:2)
while (t--)
几乎等同于for(t = x; t>0; t--)
,案例t<0
除外。何时,t<0
,for
循环不执行,但while
循环执行无限时间且代码崩溃。
此处,x
是在运行t
循环之前初始化while
的值。
答案 3 :(得分:0)
在while循环中 while(x){----} ,如果 x&gt; = 1 ,则会执行循环,但 x < / strong>变为&lt; = 0 ,循环将被终止。
所以,在这个问题中,让我们说 t = 2 ,如 while条件语句值 2 ,循环将执行但在 t 减少到 1 之前。同样, t 会递减为 0 ,循环会再次运行。
现在,第3次循环尝试运行时t的值已经为0,因此它将被终止