• 【C语言】每日一题(半月斩)——day3


    目录

    一,选择题

    1.已知函数的原型是: int fun(char b[10], int *a);

    2、请问下列表达式哪些会被编译器禁止【多选】( )

    3、以下程序的输出结果为( ) 

    4、下面代码段的输出是( ) 

    5、下列不能实现死循环的是( ) 

    二,编程题

    1.记负均正

    2.旋转数组的最小数字


    一,选择题

    1.已知函数的原型是: int fun(char b[10], int *a);

    设定义: char c[10];  int d; ,正确的调用语句是()

    A: fun(c,&d);            B: fun(c,d);

    C: fun(&c,&d);         D: fun(&c,d);

    解析:

    本体考察的是函数的调用和传参;

    数组名:

    数组名就是地址,通常来说:数组名是数组首元素的地址

    但是有2个例外:

    1. sizeof(数组名),这里的数组名表示的整个数组,计算的是整个数组的大小,单位是字节。
    2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。

    除此之外,所有遇到的数组名都是数组首元素的地址。

    注:数组传参的本质是指针,传递的是数组首元素地址

    但是形参也可以是数组接收,也可以指针接收。
    正确答案:A

    2、请问下列表达式哪些会被编译器禁止【多选】( )

    1. int a = 248, b = 4;
    2. int const* c = 21;
    3. const int* d = &a;
    4. int* const e = &b;
    5. int const* const f = &a;

    A: *c = 32;             B: *d = 43         C: e=&a         D: f=0x321f 

    解析:

    考察的是对const的理解

    const修饰指针

    修饰指针有两种方法

    counst int* p ;

    int * counst p;

    • const 放在的左边

    限制的指针指向的内容,也就是说: 不能通过指针来修改指针指向的内容

    但是指针变量是可以修改的,也就是指针指向其他变量的

    • const 放在的右边

    限制的是指针变量本身,指针变量不能再指向其他对象

    但是可以通过指针变量来修改指向的内容

    正确答案:ABCD

    3、以下程序的输出结果为( ) 

    1. int i;
    2. void prt()
    3. {
    4. for (i = 5; i < 8; i++)
    5. printf("%c", '*');
    6. printf("\t");
    7. }
    8. int main()
    9. {
    10. for (i = 5; i <= 8; i++)
    11. prt();
    12. return 0;
    13. }

    A: ***         B: *** *** *** ***         C: *** ***         D: * * * 

    解析:

    本题考察的是,转义字符和全局变量 

    转义字符:

    '\t'  代表为水平制表符,简单来说就是在键盘上按了TAB的效果,也可以理解为缩进符

     全局变量

    作用域为整个程序生命周期与主函数相同,只有程序结束,它才会销毁

     在进入prt()后出来时 i  被修改成了8,然后进行主函数的条件调整表达式;  i++;i变成了9;

    不满足主函数的条件判断表达式,推出循环

    正确答案:A

    4、下面代码段的输出是( ) 

    1. int main()
    2. {
    3. int a = 3;
    4. printf("%d\n", (a += a -= a * a));
    5. return 0;
    6. }

    A: -6                 B: 12                 C: 0       D: -12 

    解析:

    考察:运算符优先级,操作符(复合赋值符)的理解 

    查看操作符优先级表可以得知,'*'乘法的优先级高于赋值操作符;

    所以先算后面的  a-=a*a  -> a=a-a*a;  a=-6;

    再算前面的   a+=a->  a=a+a;   a=-12;

    正确答案:D

    5、下列不能实现死循环的是( ) 

     A: while(1){}                B:  for(;1;){}                 C: do{}while(1); D:         for(;0;){}

     解析:

    考察:循环条件判断

    C语言中规定:0为假,非0为真;

    只有条件为真时才进行循环, ABC 中 1 为真, D 中 0 为假

    正确答案:D

    二,编程题

    1.记负均正

    首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。

    0即不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。

    记负均正——牛客网

    1. int main()
    2. {
    3. int n = 0;
    4. int arr[1000];
    5. scanf("%d", &n);
    6. int i = 0;
    7. //往数组输入元素
    8. for (i = 0; i < n; i++)
    9. {
    10. scanf("%d", &arr[i]);
    11. }
    12. //输出负数
    13. int num = 0; //记录负数个数
    14. //正整数的平均值
    15. double pos = 0; //记录正整数个数
    16. double temp = 0;
    17. double sum = 0; //平均数
    18. int zero = 0; //记录0的个数
    19. for (i = 0; i < n; i++)
    20. {
    21. if (arr[i] < 0)
    22. {
    23. num++;
    24. }
    25. else if (arr[i] == 0)
    26. zero++;
    27. else
    28. {
    29. temp = temp + arr[i];
    30. pos++;
    31. }
    32. }
    33. if (zero == n)
    34. {
    35. printf("%d 0.0\n",num);
    36. }
    37. else {
    38. {
    39. sum = temp / pos;
    40. printf("%d %.1lf",num, sum);
    41. }
    42. }
    43. return 0;
    44. }

    2.旋转数组的最小数字

    有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。

    旋转数组的最小值——牛客网

    1. static int min = 10000;
    2. int minNumberInRotateArray(int* rotateArray, int rotateArrayLen ) {
    3. // write code here
    4. int i = 0;
    5. for(i = 0; i < rotateArrayLen;i++)
    6. {
    7. if(rotateArray[i]< min)
    8. {
    9. min = rotateArray[i];
    10. }
    11. }
    12. return min;
    13. }

     

  • 相关阅读:
    瀑布流使用虚拟列表性能优化
    Java模板方法模式源码剖析及使用场景
    微服务项目:尚融宝(43)(核心业务流程:借款额度审批(3))
    在服务中无法正常启动Nacos
    使用proxy把后端返回的图片域名替换成目标域名
    C#界面里Form.IsMdiContainer 属性的使用
    仿游戏热血江湖游戏类22(得到物品基本攻击力2)
    工程(十四)——ubuntu20.04 PL-VINS
    2D 直方图
    Pandas统计分析中(数据计算、数据格式化、数据分组统计、数据移位、数据转换、数据合并、数据导出)
  • 原文地址:https://blog.csdn.net/m0_67367079/article/details/132991331