当前位置: 首页 > news >正文

C语言暑假刷题冲刺篇——day3

目录

一、选择题

二、编程题


  • 🎈个人主页:库库的里昂
  •  🎐CSDN新晋作者
  •  🎉欢迎 👍点赞✍评论⭐收藏
  • ✨收录专栏:C语言每日一练
  • ✨其他专栏:代码小游戏C语言初阶
  • 🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗

【前言】

在大家学完初阶C语言后,有很多知识点是比较模糊的,我们应该多刷题,这样才能巩固我们所学知识。所以我开了一个新专栏C语言每日一刷,每一篇都包含5道选择题,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);

【答案】A

【解析】

  1. 函数的原型是: int fun(char b[10], int&a);
  2. 变量c,d的定义是: char c[1];int d;

D函数第一个形参 char b[10],需要传入的是数组的首地址。数组char c[10] 的数组名 c 是数组的首元素地址,可以传入 C。
@函数第二个形参int &a为引用类型作为形参,d 是 整型变量,可以直接传入,因此传给 fun 函数的实参是 d。最终,fun 函数调用的形式是 f(c,d)。因此选A。

补充:

如果函数原型为int fun(char b[10],int*a
即此时第二个形参为指针类型,则需传入变量d的地址,此处就应该选B

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

int a = 248, b = 4;
int const *c = 21;
const int *d = &a;
int *const e = &b;
int const * const f = &a;

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

【答案】ABCD

【解析】

这里的考点为对const掌握的是否清楚

 1.const如果在指针变量的“ * ”的左边(即 const int * a 和 int const * a的意义是相同的,作用是等价的)

表达的意思是:对指针变量a 解引用的值是保持不变的

只有a里面存放的地址改变了,解引用出来的值才会变化

  2. const如果在指针变量的“ * ”的右边【即 int * const a】 表达的意思是: a里面存放的地址是保持不变

只有主动对 *a 赋值才能改变这个值,但a里面的地址是一直保持不

对于A和B:const在“ * ”的左面,则 const 就是用来修饰指针所指向的变量,即指针指向为常量,则此时的*c和*d不变

对于C和D:如果 const 位于“ * ”的右侧,则 const 就是修饰指针本身,即指针本身是常量

则e和f的地址不能被改变

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

#include <stdio.h>
int i;
void prt()
{for (i = 5; i < 8; i++)printf("%c", '*');printf("\t");
} 
int main()
{for (i = 5; i <= 8; i++)prt();	return 0;
}

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

【答案】A

【解析】

注意:这里出现转义字符 \t ,而 \t 代表为水平制表符,简单来说就是在键盘上按了TAB的效果,也可以理解为缩进符

全局变量创建在静态区中,作用域为整个程序生命周期与主函数相同,只有程序结束,它才会销毁

全局变量 i ,在 main() 中修改为 5 ,第一次在 prt() 中执行循环输出三次 '*' , i 被修改为 8 ,回到 main() 中第二次调用 prt() 时,i<8 为假,循环结束没输出,执行一次 print("\t") ,再次回到主函数后 i++ 变为 9 , i<=8 为假,循环结束 ;

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

int main()
{int a=3;printf("%d\n",(a+=a-=a*a));return 0;
}

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

【答案】D

【解析】

本题可以写成:表达式a+a-=a*a中*的优先级最高,其次是-=,+的优先级最低,因此先求a*a,所以原表达式可写成a+a-=9,再算a-=9,原表达式可写为a=a-9=-6,最后算a+a,因为此时a=-6,所以a+a=-6+(-6)=-12,故选择D选项。

拓展:操作符优先级图表

C语言运算符优先级_word文档在线阅读与下载_免费文档

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

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

【答案】D

【解析】

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

二、编程题

1.OJ链接 【牛客网题号: HJ97 记负均正】【难度:简单】

首先输入要输入的整数个数 n ,然后输入 n 个整数。输出为 n 个整数中负数的个数,和所有正整数的平均值,
结果保留一位小数。
注意: 0 即不是正整数,也不是负数,不计入计算; 本题有多组输入用例。
输入描述:首先输入一个正整数 n ,然后输入 n 个整数。
输出描述:输出负数的个数,和所有正整数的平均值。
 

#include<stdio.h>                                              
int main() {int n = 0;while (~scanf("%d ", &n)){int arr[2001] = { 0 };int count1 = 0;int count2 = 0;int sum = 0;float ave = 0;int i = 0;for (i = 0; i < n; i++){scanf("%d ", &arr[i]);if (arr[i] < 0){count1++;}else if (arr[i] > 0){count2++;sum += arr[i];}}printf("%d ", count1);if (count2){ave = sum / count2;printf("%.1lf\n", ave);}else{printf("0.0\n");}}return 0;
}

2.OJ链接 【牛客网题号:JZ11 旋转数组的最小数字】【难度:简单】

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

数据范围:1≤ n ≤ 10000,数组中任意元素的值: 0 ≤ val ≤ 10000

示例:
输入:[3,4,5,1,2]
返回值:1

int minNumberInRotateArray(int* nums, int numsLen) {int left = 0;int right = numsLen - 1;while (left < right){int mid = (left + right) / 2;if (nums[mid] < nums[right])right = mid;else if (nums[mid] > nums[right])left = mid + 1;elseright--;}return nums[right];
}

好了,今天的每日一刷就到这里结束了,感谢大家的观看!

http://www.lryc.cn/news/128599.html

相关文章:

  • Taro+vue3小程序开启分享他人和分享到朋友圈
  • JAVA-Spring中IOC容器是什么?
  • QT多屏显示程序
  • python使用xlwt时,报ValueError: More than 4094 XFs (styles)
  • GitHub 打不开解决方案
  • Java网络编程(一)网络基础
  • matlab使用教程(17)—多项式的定义和运算
  • 华为认证 | 这门HCIA认证正式发布!
  • 【Docker】Docker安装 MySQL 8.0,简洁版-快速安装使用
  • CSS自己实现一个步骤条
  • Visual Studio 2019 解决scanf函数报错问题
  • 亚马逊无限买家号如何注册?
  • 前端框架学习-ES6新特性(尚硅谷web笔记)
  • 普陀发布新规服务元宇宙企业 和数软件发展元宇宙场景落地
  • Kotlin差异化分析,let,run,with,apply及also
  • (stm32)低功耗模式
  • 【C++学习手札】一文带你认识C++虚函数(内层剖析)
  • Python“牵手”1688商品评论数据采集方法,1688API申请指南
  • “深入解析JVM内部机制:探秘Java虚拟机的奥秘“
  • 【系统工具】开源服务器监控工具WGCLOUD初体验
  • powerBI应用技巧
  • RK3568背光调试分享
  • Numpy入门(2)—随机数
  • ansible的playbook剧本
  • 【03 英语语法:从句(名词从句、定语从句/形容词从句、状语从句/副词从句)】
  • vue动态修改audio地址
  • CF113A Grammar Lessons 题解
  • puzzle(0414)六边形拼图
  • 回归预测 | MATLAB实现基于SAE堆叠自编辑器多输入单输出回归预测
  • BEV感知实时构建路口拓扑 觉非科技基于MapTR的优化与实践