HTML04

这篇博客包含了一些关于C语言的编程题目及其解析,包括循环控制、函数递归、指针、循环类型、预处理器、位运算以及迭代器的使用。题目涉及到死循环的判断、函数递归执行结果、当型循环的特点、程序运行结果预测以及数组和指针的交互等。
  1. 下列哪一个循环会导致死循环?()
    正确答案: C 你的答案: D (错误)
    A.for(int k=0;k<0;k++)
    B.for(int k=10;k>0;k–)
    C.for(int k=0;k<10;k–)
    D.for(int k=0;k>0;k++)

C正确,A和D都是不执行循环,因为条件不满足所以直接结束,B是满足条件,循环会执行,但会结束,C的话是不管怎么减K,K一直是小于10的,所以永远无限循环

  1. 下列程序执行func(15,20)的结果为( )
    int func(int i, int j){
    if (i <= 0 || j <= 0)
    return 1;
    return 2 * func( i-3, j/2);
    }
    正确答案: D 你的答案: C (错误)
    A.8
    B.16
    C.24
    D.32

i j
15 20
12 10 2*
9 5 2^2
6 2 2^3
3 1 2^4
0 0 2^5 =32

  1. C 语言的当型循环是先执行循环后判断条件。请问这句话的说法是正确的吗?
    正确答案: B 你的答案: B (正确)
    正确
    错误

这个题是个概念的问题,循环分为当型和直到型。当型就是常用的while,直到型是do while

  1. 以下代码输出的值是:
    int x=4;
    void incre()
    {
    static int x=1;
    x*=x+1;
    printf(“%d”,x);
    }
    int _tmain(int argc,_TCHAR* argv[])
    {
    int I;
    for(i=1;i<x;i++){
    incre();
    }
    return 0;
    }
    正确答案: A 你的答案: B (错误)
    A.2642
    B.2
    C.4
    D.5

int x=4 不变,for循环执行3次,调用3次incre()方法,在incre()方法里面的x变量的值一直在变。
每次调用incre()就执行一次 x=x*(x+1);
第一次:x=1*(1+1)=2
第二次:x=2*(2+1)=6
第三次:x=6*(6+1)=42

  1. 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。该程序的功能是将形参n所指变量中,各位上为奇数的数去掉,剩余的数按原来从低位到高位的顺序组成一个新数。
    unsigned long fun(unsigned long n)
    {
    unsigned long x = 0; int t;
    while (n)
    {
    t = n % 10;
    /********** found /
    if (t % 2 == _______)
    /
    found /
    x = _____ + t;
    /
    found ******/
    n = _______;
    }
    return x;
    }
    正确答案: A 你的答案: B (错误)
    A.0 x
    10 n/10
    B.1 x
    10 n%10
    C.1 t
    10 n/10
    D.0 t
    10 n%10

该程序的功能是将形参n所指变量中,各位上为奇数的数去掉,剩余的数按原来从低位到高位的顺序组成一个新数,并通过形参指针n传回所指变量。 例如,若输入一个数27638496,则新数为64862。
1,这里判断是否是偶数,所以判断%2是否为0
2,x为保存的偶数,每次扩大10倍加上个位数
3,数字n每次去掉个位数,继续循环

  1. 若有以下程序段
    char str[4][12]={“aa”, “bbb”, “cccc”, “d”},*strp[4];
    int i;
    for(i=0;i<4;i++)
    strp[i]=str[i];
    不能正确引用字符串的选项是
    正确答案: B 你的答案: B (正确)
    A.str[0]
    B.strp
    C.strp[3]
    D. strp

1、首先要知道*strp[4]是一个指针数组 ,里面存放的是指针 。(为什么?因为 [] 括号的优先级高于 * ,也就是strp先和 [] 结合 构成数组,先与谁结合本质就是什么,因此是本质是数组,数组中存放的是指针,同理理解记忆数组指针 (*p)[] )
2、要知道二维数组的第一维是行指针,什么意思?
比如str[4][12] 中 str[0] ,str[1] , st[2] , st [3] 也就是第一维,他们都是行指针, 分别指向每一行
3、数组名是一个常量指针,在B选项中 strp是 指针数组 * strp[4] 的数组名, 也就是 strp = & strp[0] , 而strp[0]是指向 aa 的,&strp[0] 当然就错了

  1. #include命令的功能是()。
    正确答案: C 你的答案: D (错误)
    A.在命令处插入一个头文件
    B.在文件首部插入一个头文件
    C.在命令处插入一个文本文件
    D.在文件首部插入一个程序文件

预处理器发现#include后,就会寻找指令后面<>中的文件名,并把这个文件的内容包含到当前的文件中,被包含的文件中的文本将替换源代码文件中的#include指令

  1. 设字符型变量x的值是064,表达式“~ x ^ x << 2 & x”的值是()
    正确答案: A 你的答案: A (正确)
    A.0 333
    B.333
    C.0x333
    D.020

char x = 064,为八进制表示,对应二进制码为00110100(32位系统下,char类型长度为1字节,8个二进制位)
几个运算符的优先级分别是~ << & ^,依次运算得到以下结果:
(以下结果为当步运算的值,不是x的当前值,小伙伴们擦亮眼睛哈_
1.~x 按位取反,结果为 11001011
2.x << 2 对x左移2位,结果为11010000
3.x << 2 & x 即第2步的结果与x做按位与操作,结果为 00010000
4.最后第3步的结果与~x做异或运算,结果为11011011,即333。
因为按八进制输出,需要前置0,所以选A

  1. std::vector::iterator重载了下面哪些运算符?
    正确答案: A C D 你的答案: D (错误)
    A.++
    B.>>
    C.* (前置)
    D.==

++,–用于双向迭代,迭代器最基本的功能;
*用于复引用迭代器用于引用迭代器对应的元素,也是基本操作;
==用于判断两个迭代器是否相等,迭代的时候需要判断迭代器是否到了某个位置;

  1. 下面的说法那个正确
    #define NUMA 10000000
    #define NUMB 1000
    int a[NUMA], b[NUMB];
    void pa()
    {
    int i, j;
    for(i = 0; i < NUMB; ++i)
    for(j = 0; j < NUMA; ++j)
    ++a[j];
    }
    void pb()
    {
    int i, j;
    for(i = 0; i < NUMA; ++i)
    for(j = 0; j < NUMB; ++j)
    ++b[j];
    }
    正确答案: C 你的答案: A (错误)
    A.pa 和 pb 运行的一样快
    B.pa 比 pb 快
    C.pb 比 pa 快
    D.无法判断

pa是执行1000次1000万连续地址的相加,pb是执行1000万次1000连续地址的相加,虽然相加次数是一样的,但是pa数组较长,跨的页较多,所以会产生较多次的缺页,导致执行速度较pb慢
测试时pb比pa快,数组a比数组b大很多,可能跨更多的页,缺页率高或者缓存命中更低,所以pb快

  1. 【数字部分】甲的工作是每4天休息一天,乙是每5天休息一天,丙是每6天休息一天,如果甲乙丙在某个星期一同时休息,那么下次同时休息是( )。
    正确答案: C 你的答案: C (正确)
    星期日
    星期六
    星期五
    星期四

4, 5, 6的最小公倍数是60,下次同时休息也就是第60天;本周还剩6天,(60-6)/7=7……5,所以是周五

  1. 某单位有工作人员48人,其中女性占总人数的37.5%,后来又调来女性若干人,这时女性人数恰好是总人数的40%,问调来几名女性
    正确答案: B 你的答案: B (正确)
    1
    2
    3
    4

原来女性人数:48*37.5%=18
设调来女性人数为x:(18+x)/(48+x)=0.4
解的x=2

  1. 1 ,2 ,5 ,29 ,()
    正确答案: C 你的答案: C (正确)
    34
    846
    866
    37

5=22+11
29=55+22
()=2929+55=866

5, 17 , 21 , 25 ,()
正确答案: B 你的答案: C (错误)
30
31
32
34

31
奇数项 5=1^2 +4,21= 4 ^ 2+5,()=5 ^2+6=31
偶数项 7=2 ^ 3-1,25=3^3-2
分奇偶项考虑

  1. -2/5,1/5,-8/750,( )。
    正确答案: A 你的答案: B (错误)
    11/375
    9/375
    7/375
    8/375

-2/5,1/5,-8/750,11/375
4/(-10),1/5,8/(-750),11/375
分子 4、1、8、11=>头尾相减=>7、7
分母 -10、5、-750、375=>分2组(-10,5)、(-750,375)=>每组第二项除以第一项=>-1/2,-1/2
所以答案为11/375

  1. ( ) 对于 绿茶 相当于 音乐 对于 ( )
    正确答案: C 你的答案: C (正确)
    龙井 浪漫
    早春 娱乐
    咖啡 绘画
    健康 情操

咖啡和绿茶是不同的饮品,音乐和绘画是不同的艺术

  1. 82,98,102,118,62,138,( )
    正确答案: D 你的答案: D (正确)
    68
    76
    78
    82

82+98=180,98+102=200,102+118=220,118+62=180,62+138=200,138+82=220

  1. 职业社会化是指个体按社会需要选择职业,掌握从事某种职业的知识和技能,以及从事某种职业后进行知识、技能更新再训练的过程。
    根据上述定义,下列属于职业社会化的是:
    正确答案: A 你的答案: B (错误)
    食堂管理员张某看到很多领域急需翻译人才,利用业余时间学习并取得翻译资格证后到某公司任职
    青年张某参军后被分配至汽车班,学得精湛的修车技艺,退役后自己开了一间修理部
    某公司会计李某热爱厨艺,业余时间参加了一个培训班,学习营养知识,提高烹饪技艺
    下岗女工陈某在抚育孩子期间,积累了丰富的知识和经验,后在朋友建议下开办了一所幼儿园

注意题干:个体按照社会需要选择职业。显然B选项的被分配不符合该项要求

  1. 1
    枪:子弹
    正确答案: A 你的答案: A (正确)
    汽车:汽油
    门:窗户
    桌子:椅子
    表带:手表

枪消耗子弹,汽车消耗汽油

  1. 一种外表类似苹果的水果被培育出来,我们称它为皮果。皮果皮里面会包含少量杀虫剂的残余物。然而,专家建议我们吃皮果之前不应该剥皮,因为这种皮果的果皮里面含有一种特殊的维生素,这种维生素在其他水果里面含量很少,对人体健康很有益处,弃之可惜。以下哪项如果为真,最能对专家的上述建议构成质疑?( )
    正确答案: C 你的答案: C (正确)
    皮果皮上的杀虫剂残余物不能被洗掉
    皮果皮中的那种维生素不能被人体充分消化吸收
    吸收皮果皮上的杀虫剂残余物对人体的危害超过了吸收皮果皮中的维生素对人体的益处
    皮果皮上杀虫剂残余物的数量太少,不会对人体带来危害

C选项描述更直接、精准。B选项中,不能充分吸收≠0吸收,存在“吸收一点就对人体大有裨益的情况”,无法对专家结论产生有效质疑。同时找到如下参考资料
参考资料:
[1]判断推理解题技巧:可能性推理削弱型力度比较分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值