智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3211|回复: 12
打印 上一主题 下一主题

c语言面试题

  [复制链接]

21

主题

45

帖子

0

精华

高级会员

Rank: 4

积分
563
威望
322
贡献
129
兑换币
158
注册时间
2012-11-27
在线时间
56 小时
毕业学校
杭电
跳转到指定楼层
1#
发表于 2013-5-9 13:27:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
3贡献
#include <stdio.h>
#include <math.h>
void main()
{
  unsigned int a,b;
  a = 8;
  b = 10;
  do
  {
   printf("%s\n","i'am here");
  }
  while((a-b)>5||(a-b)<-5);
}

为什么这样写就会无限地执行循环?如果这样写
#include <stdio.h>
#include <math.h>
void main()
{
  unsigned int a,b;
  a = 8;
  b = 10;
  do
  {
   printf("%s\n","i'am here");
  }
  while((a-b)>5);
}
就会执行一次循环,然后跳出

这是一家公司的面试题,相信广大车友应该精通C语言,求解释?
请大家莫嫌简单,自己可以用VC++试一试

最佳答案

查看完整内容

改为#include #include void main() { unsigned int a,b; a = 8; b = 10; do { printf("%s\n","i'am here"); } while((a-b)>5); } 也是无限循环~~ while((a-b)>5); 改成while((a-b)

7

主题

563

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4530
QQ
威望
2516
贡献
1044
兑换币
592
注册时间
2011-9-24
在线时间
485 小时
2#
发表于 2013-5-9 13:27:25 | 只看该作者
改为#include <stdio.h>
#include <math.h>
void main()
{
  unsigned int a,b;
  a = 8;
  b = 10;
  do
  {
   printf("%s\n","i'am here");
  }
  while((a-b)>5);
}
也是无限循环~~
while((a-b)>5);
改成while((a-b)<5);
只执行一次

初步分析~unsigned int~~~无符号的
回复

使用道具 举报

25

主题

1217

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
27530

论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章资源大师奖章

QQ
威望
18731
贡献
5857
兑换币
3255
注册时间
2012-6-6
在线时间
1471 小时
3#
发表于 2013-5-9 13:58:28 | 只看该作者
你题目就错了....关键是定义类型那儿出问题unsigned int
回复

使用道具 举报

8

主题

266

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3743

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
1374
贡献
973
兑换币
642
注册时间
2012-12-4
在线时间
698 小时
4#
发表于 2013-5-9 14:04:05 | 只看该作者
简单丹 发表于 2013-5-9 13:58
你题目就错了....关键是定义类型那儿出问题unsigned int

求大神详解,我试了试,二者相减结果为-2,而且while()中的条件为假啊,为嘛会无限执行呢!
回复

使用道具 举报

37

主题

565

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4385
威望
2300
贡献
1251
兑换币
1399
注册时间
2012-9-25
在线时间
417 小时
5#
发表于 2013-5-9 14:16:45 | 只看该作者
c很神奇
回复

使用道具 举报

25

主题

1217

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
27530

论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章资源大师奖章

QQ
威望
18731
贡献
5857
兑换币
3255
注册时间
2012-6-6
在线时间
1471 小时
6#
发表于 2013-5-9 14:17:45 | 只看该作者
恋深蓝 发表于 2013-5-9 14:04
求大神详解,我试了试,二者相减结果为-2,而且while()中的条件为假啊,为嘛会无限执行呢!

其实LZ的两个程序都回无线循环
你把输出格式换成无符号型%u就是一个很大的整数...如果是%d就是-2
#include <stdio.h>
#include <math.h>
void main()
{
  unsigned int a,b;
  a = 8;
  b = 10;
  do
  {
   printf("%u\n",a-b);
  }
  while(a-b>5);
}



回复

使用道具 举报

0

主题

1672

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13030
QQ
威望
7128
贡献
3436
兑换币
424
注册时间
2013-1-5
在线时间
1233 小时
7#
发表于 2013-5-9 14:40:26 | 只看该作者
回复

使用道具 举报

28

主题

319

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
8901
威望
1806
贡献
6053
兑换币
1174
注册时间
2012-11-8
在线时间
521 小时
8#
发表于 2013-5-9 15:31:32 | 只看该作者
unsigned int 无符号的整形,复数当然出错啦,c语言这种强类型的语言很容易出错。要是能用一些,更高级的语言开发嵌入式就好了
回复

使用道具 举报

1

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
207
威望
125
贡献
56
兑换币
19
注册时间
2013-3-27
在线时间
13 小时
9#
发表于 2013-5-9 15:58:42 | 只看该作者
神奇的C语言,常读常新!
回复

使用道具 举报

0

主题

32

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2436
威望
1294
贡献
852
兑换币
656
注册时间
2012-8-27
在线时间
145 小时
10#
发表于 2013-5-9 16:38:59 | 只看该作者
C真心强大、、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-10-7 14:33 , Processed in 0.057886 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表