C语言面试题选

1.要求把从1到1000的1000个数中找出能被21整除的所有数并依次把它存储在一个一维数组中并打印输出。

题目简单,提示 定义 int num;

num=1000/21;得到1到1000的1000个数中能被21整除的个数,也即要定义的一个一维数组大大小为num,存储1到1000的1000个数中能被21整除的所有数。

2.  int n=2;

 while(n>=0)

 n=n-1;

printf("%d\n",n); 输出? 答案-1

3.char  a[5]={1,2,3,4,5};

char *p1,*p2;

p1=a;

p2=p1;

printf("%d\n",*p1++);

printf("%d\n",*p2+1);

输出? 答案:

1

其实就是*p1++结果是取得*p1值p1再指向下一个元素地址,*p2+1先算p2+1,结果指向下一个元素地址,然后输出该值

4.int  m=6;

if(m-->5) printf("%d\n",m);

else

printf("%d\n",m--);

输出?

解:if(m-->5)中先取m的值6来判断是否m>5,不管判断结果是真是假,接下来m就减1变成5了,所以输出5.

5.int  x=1;

int y=1;

表达式(!x||y--)值是?

解答:开始不等于0,即是真,符号“!”是逻辑非运算,所以!x等于0,不管x是什么值,!x运算后是0;由于中间是或运算,所以编译器还得判断||右边的结果,由于y=1,所以判断y--为1,非0,所以结果输出1,然后y变为0.

6.int x,y,t;

x=y=3;

t=++x||++y;

则y的值是?

解答:由于t=++x||++y;中++x结果非0,即为真,而结果接下来是要和++y逻辑结果作或运算,因为左边为真了,编译器直接退出不再判断右边++y,即++y部分没得到执行,所以y结果仍然为原值3.

以上是本人面试中遇到的感觉需要注意的部分题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值