• c语言每日一练(15)


    前言:
    每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,上学期间将看学业情况更新。

     五道选择题:

    1、程序运行的结果为()

    1. #include
    2. int main()
    3. {
    4. int pad = 0; int pAd = 0;
    5. int sum = 5;
    6. pad = 5;
    7. pAd = (sum++,pAd++, ++pAd);
    8. printf("%d %d\n", pAd,pad);
    9. }

    A、1,5      B、2,5      C、1,6     D、2,6

    解析:首先定义sum和pad为5,接着是一串逗号表达式,从左往右进行,最后的值为最后一个表达式,我们可以走一下,sum++,令sum为6,pAd++,令pAd=1(注意:这里不用什么前置后置,你可以把逗号表达式之间的表达式看作一个单独的区块,计算机会执行完这个区块的内容才去执行别的),最后一步可以看作pAd=(++pAd),独立区块++pAd先执行,令pAd为2,,pad一直为5,所以最后打印出来的结果为,2,5,选B

    前置后置结果一致 ,证明可以看作独立区块

     

     2、程序运行的结果为()

    1. #include
    2. int sum(int a)
    3. {
    4. int c = 0;
    5. static int b = 3;
    6. c += 1;
    7. b += 2;
    8. return (a + b + c);
    9. }
    10. int main()
    11. {
    12. int i;
    13. int a = 2;
    14. for (i = 0; i < 5; i++)
    15. {
    16. printf("%d ", sum(a));
    17. }
    18. }

    A、 8 8 8 8 8          B、 9 11 13 15 17                 C、10 12 14 16 18          D、8 10 12 14 16 

    解析:观察sum可以发现,它返回的值为a+b+c的和,而sum没有对a进行额外操作,所以每次a都是2;c每次进来都会被重定义为0,再c+=1,所以c每次都为1,再说下b,b是static类型的变量,也就是说b的生命域是全局的且它只会被定义一次,第一次b被定义为3,接着b+=2令b为5,第二次b+=2,令b为7,第三次,b为9,第四次b为11,第五次b为13,而a+c始终为3,所以最后打印的结果为3+5 3+7 3+9 3+11 3+13 =8 10 12 14 16选D

    3、关于if语句说法正确是( )
    A、if语句后面只能跟一条语句
    B、if语句中0表示假,1表示真,其他无意义
    C、if语句时一种分支语句,可以实现单分支,也可以实现多分支
    D、else语句总是和它的对其的if语句匹配 

    解析:A选项错误,if后面可以根很多条语句,有{}即可。B选项错误,太片面了,c语言中非0的语句均为真。C选项正确,else if就是多分支。D选项错误,没有括号的情况默认和最近的匹配。

    4、程序运行的结果为()

    1. #include
    2. int func(int a)
    3. {
    4. int b;
    5. switch (a)
    6. {
    7. case 1: b = 30;
    8. case 2: b = 20;
    9. case 3: b = 16;
    10. default: b = 0;
    11. }
    12. return b;
    13. }
    14. int main()
    15. {
    16. int x=3
    17. printf("%d",func(x));
    18. }

    A、 30    B、20    C、16    D、0

    解析:switch中要如果没有break中止就会顺着走下去,这道题就是这样,它的case语句中均没有break,那么它就会顺着走下去,一直走到最后的b=0,所以最后返回的值也是0,选D

     5、程序运行的结果为()

    1. #include
    2. int main()
    3. {
    4. int a = 0, b = 0;
    5. // for循环将a和b的初始值均设置为1
    6. for (a = 1, b = 1; a <= 100; a++)
    7. {
    8. if (b >= 20) break;
    9. if (b % 3 == 1)
    10. {
    11. b = b + 3;
    12. continue;
    13. }
    14. b = b-5;
    15. }
    16. printf("%d\n", a);
    17. return 0;
    18. }

    A、7   B、8   C、22   D、死循环 

    解析:观察代码可以发现主体部分是个循环,目标是打印出a的值,而a的值只会在循环结束时才会++,那么不难看出,完整进行循环的次数+1(为什么+1,因为跳出循环前a先++之后才执行break)就是a的值,b>=20会跳出循环,而b若%3==1就会增3,由于遇到了continue,所以b就会一直加3直到>=20,可以看出加7次3,b就会>=20,所以完整的循环进行了7次,所以最后a为8,选B 

    编程题1:

    单词分析 - 蓝桥云课 (lanqiao.cn)

    思路:只需判断小写字母且一共有26个字母,所以创建一个长度为26的整型数组来储存每个字母出现的次数,接着比较得出最大即可,需要注意的一点就是记得储存对应的下标 

    1. int main(int argc, char *argv[])
    2. //这个参数不用看它,你就把它当作没有即可
    3. {
    4. int count[26]={0};
    5. //分别储存26个字母的出现次数
    6. char ch=0;
    7. while((ch=getchar())!='\n')
    8. {
    9. count[ch-'a']++;
    10. //对应字母-'a'可以得到对应的下标
    11. }
    12. int i=0;int max=0;int max_i=0;
    13. for(i=0;i<26;i++)
    14. {
    15. if(count[i]>max)
    16. {
    17. max=count[i];//储存最多出现次数
    18. max_i=i;//下标也储存
    19. }
    20. }
    21. printf("%c\n%d",max_i+'a',max);
    22. }

    编程题2: 

    门牌制作 - 蓝桥云课 (lanqiao.cn)

     

    提示:%10操作可以将数的最后一位取出,/10操作可以把数的最后一位删除 

    1. #include
    2. int main()
    3. {
    4. int i=0;int count=0;
    5. for(i=1;i<=2020;i++)
    6. {
    7. int number=i;
    8. while(number)
    9. {
    10. if(number%10==2)
    11. {
    12. count++;
    13. }
    14. number/=10;
    15. }
    16. }
    17. printf("%d",count);
    18. return 0;
    19. }

  • 相关阅读:
    dgb调试
    [创业-46]:中小公司的组织架构与公司管理
    英特尔OneAPI介绍
    人工智能AI 全栈体系(五)
    Linux学习笔记——系统文件与目录操作函数
    java毕设项目网上图书分享系统(附源码)
    C/C++语言100题练习计划 86——数的计算(递推实现)
    VMware Workstation中安装系统和VMware tools
    输入部件 QComboBox --组合框/下拉列表
    SpringSecurity+jwt使用
  • 原文地址:https://blog.csdn.net/fq157856469/article/details/132870912