问几道不会的题

chenlei1700 2005-03-29 11:20:56
1
main()
{int n;
for(n=100;(n%3)&&n<=00;n++)
printf("%d",n);
}
得循环能不能这么写?哪里有错误?

2
A)for(i=1; ; )
{if(++i%2==0) continue;
if(++i%3==0) break;
}

B)i=32767;
do { if (i<0) break;} while(++i);

C) for (i=1; ; ) if(++i<10)continue;

D) i=1;
while (i--);
我看B和C都是死循环 为什么答案是C

3 main()
{int x=3,y;
do { y=x--;
if (!y) {printf("*");continue;}
printf("#");
} while (1<=x<=2);
}
将会得到什么结果? 为什么会是个死循环?

4 再if语句里 如果出现 (i/result==1) 和 (i==result) 用哪个对

5 while (printf("*')) 这个循环控制表达式与0等价还是与 '0' 等价 这两个有什么区别?
谢谢
...全文
244 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
winstarr 2005-03-30
  • 打赏
  • 举报
回复
还有意思。
xiaozhishi 2005-03-30
  • 打赏
  • 举报
回复
1
main()
{int n;
for(n=100;(n%3)&&n<=0);n++)
printf("%d",n);
}
得循环能不能这么写?哪里有错误?
改正后还是有错误呢

for(n=100;(n%3)&&n<=0);n++)
少了'('
结果还是没有
100%3==0&&3<=100不是假的了吗?

5 while (printf("*")) 这个循环控制表达式与0等价还是与 '0' 等价 这两个有什么区别?
你这个还是少了')'
可以这样写吗?

while (printf("*"))?
kahn 2005-03-30
  • 打赏
  • 举报
回复
3、分析的是(1<=(x<=2)),该式子在这个程序中是永真的,<=是右结合的
xiaozhishi 2005-03-30
  • 打赏
  • 举报
回复
main()
{int n;
for(n=100;(n%3)&&n<=00;n++)
printf("%d",n);
}
得能不能这么写?哪里有错误?

不是很明白,就算你是求100内不是3的倍数那也不可能求出来
n=1;(n%3)&&n<=100 不知道是不是这样
当n=3时循环就结束了n%3=0
0&&3<=100不是假的了吗?
rocklabzhang 2005-03-30
  • 打赏
  • 举报
回复
这么多人回
我只是接分的份了
chenlei1700 2005-03-30
  • 打赏
  • 举报
回复
===================4。使用强制转换,你输入的是浮点数,但你判断的值用的是整数,当然是不行的了。
(int)(i/result)==1;第二个是什么类型的都是可以的,但是你必须是精确的相等.=======================
i/result=1 的1不能代表浮点数么??

printf("*")地返回值是字符个数还是1?或0
janeSatan 2005-03-30
  • 打赏
  • 举报
回复
1
main()
{int n;
for(n=100;(n%3)&&n<=00;n++)//应该是for(n=100;(n%3)&&n>=0;n--)你想实现的功能是要输出0到100中不是3倍数的数字吧。如果是要三的倍数就让n%3==0;
printf("%d",n);
}

3 main()
{int x=3,y;
do { y=x--;
if (!y) printf("*");
else
printf("#");
} while (1<=x<=2);
}
把continue去掉,多加一个else就不会是死循环了。
注意continue和break的用法。
4。使用强制转换,你输入的是浮点数,但你判断的值用的是整数,当然是不行的了。
(int)(i/result)==1;第二个是什么类型的都是可以的,但是你必须是精确的相等。
C_projecting 2005-03-30
  • 打赏
  • 举报
回复
printf函数的返回值为打印出字符的数目
Flood1984 2005-03-30
  • 打赏
  • 举报
回复
1
main()
{int n;
for(n=100;(n%3)&&n<=00;n++)
printf("%d",n);
}
得循环能不能这么写?哪里有错误?

我觉得你的意思可能是:
求出100以内能被3整除的数,
这样写是不行的,
因为其条件只有2种选择,
打印一个数,或者退出循环,
所以只能打印一个数就退出了
whyglinux 2005-03-30
  • 打赏
  • 举报
回复
>> 3、分析的是(1<=(x<=2)),该式子在这个程序中是永真的,<=是右结合的

<=是左结合,因此1<=x<=2相当于(1<=x)<=2
chenlei1700 2005-03-30
  • 打赏
  • 举报
回复
""""4 再if语句里 如果出现 (i/result==1) 和 (i==result) 用哪个对
得看它们是什么类型,如果是能精确表示的int,两个都可以,如是浮点数,用第一个"""""

为什么浮点就不能用第2个?

"""""""Each of these functions returns the number of characters printed, or a negative value if an error occurs. """""""""
the characters of "*" stand by which number??

chenlei1700 2005-03-30
  • 打赏
  • 举报
回复
1
main()
{int n;
for(n=100;(n%3)&&n<=0);n++)
printf("%d",n);
}
得循环能不能这么写?哪里有错误?
5 while (printf("*") 这个循环控制表达式与0等价还是与 '0' 等价 这两个有什么区别?
1和5已更正

冥王之锤 2005-03-30
  • 打赏
  • 举报
回复
1
main()
{int n;
for(n=100;(n%3)&&n<=00;n++)//这个不明白,写错了吧
printf("%d",n);
}
得循环能不能这么写?哪里有错误?

2
A)for(i=1; ; )
{if(++i%2==0) continue;
if(++i%3==0) break;
}

B)i=32767;
do { if (i<0) break;} while(++i);//会产生溢出,在windows下面可以这么写。但是这个跟cpu有关系,有的cpu专门有个位表示溢出。这样写就死循环了 。这是种垃圾的写法。
C) for (i=1; ; ) if(++i<10)continue;//这个当然是死循环

D) i=1;
while (i--);
我看B和C都是死循环 为什么答案是C

3 main()
{int x=3,y;
do { y=x--;
if (!y) {printf("*");continue;}
printf("#");
} while (1<=x<=2);//这句是1 <= (x <= 2),从第一次开始就是2然后更小,条件肯定为真
}
将会得到什么结果? 为什么会是个死循环?

4 再if语句里 如果出现 (i/result==1) 和 (i==result) 用哪个对
如果是能精确表示的int,两个都可以
如果两个是浮点数,应该都避免,因为浮点数是不能精确表示大小的,第一个式子,1的浮点表示是1.000001,i/result得1得时候不一定这样表示1。结果无法取确定。


5 while (printf("*')) 这个循环控制表达式与0等价还是与 '0' 等价 这两个有什么区别?
Each of these functions returns the number of characters printed, or a negative value if an error occurs.

一个是字符,一个是数字,'0'与0是不一样的。
qq345270199 2005-03-30
  • 打赏
  • 举报
回复
kahn(麟) 厉害,一语道破啊!
zhangfjj 2005-03-30
  • 打赏
  • 举报
回复
5 while (printf("*") 这个循环控制表达式与0等价还是与 '0' 等价 这两个有什么区别?
1和5已更正
=============
你所说的循环控制表达式是不是指(printf("*"))
按我所理解的,就是要你关心printf()函数的返回值,为正确输出数据项数
看看:
int main()
{
int i;
i=printf("*");//这里i为1,
printf("\ni=%d\n",i);
return 0;
}
运行结果为1
所以你所问的既不与0更不与'0'等价,而是与1等价
即:while(printf("*"))
和while(1)等价
wwxxdd1982 2005-03-30
  • 打赏
  • 举报
回复
4 再if语句里 如果出现 (i/result==1) 和 (i==result) 用哪个对
我感觉后面的更好牵着你要注意当result为0时的情况。这样前者变得无意义了而后者还可以表示相等的意思
关于1 for(n=100;(n%3)&&n<=00;n++)
n已经为100了还n++什么呢?n<=00就不会成立了即始终为假了,n%3的取余运算当m=102时为假
所以程序只会执行n=100的第一步
zhangfjj 2005-03-29
  • 打赏
  • 举报
回复
1
main()
{int n;
for(n=100;(n%3)&&n<=00;n++)//----------------有笔误,n<=00?
printf("%d",n);
}
得循环能不能这么写?哪里有错误?

2
A)for(i=1; ; )
{if(++i%2==0) continue;
if(++i%3==0) break;
}

B)i=32767;
do { if (i<0) break;} while(++i);//i为int型,32767+1就溢出了,变为了-32768了,不会是死循环

C) for (i=1; ; ) if(++i<10)continue;//这个当然是死循环

D) i=1;
while (i--);
我看B和C都是死循环 为什么答案是C

3 main()
{int x=3,y;
do { y=x--;
if (!y) {printf("*");continue;}
printf("#");
} while (1<=x<=2);
}
将会得到什么结果? 为什么会是个死循环?
=============
我看主要是分析1<=x<=2,跟数学表达式不同,在C语言表达式中,要表示1<=x<=2,得写成
1<=x&&x<=2

4 再if语句里 如果出现 (i/result==1) 和 (i==result) 用哪个对
得看它们是什么类型,如果是能精确表示的int,两个都可以,如是浮点数,用第一个


5 while (printf("*')) 这个循环控制表达式与0等价还是与 '0' 等价 这两个有什么区别?
while (printf("*'))//又有笔误,是双引号吗?while (printf("*"))
考虑printf()函数的返回值

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧