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

C语言小练习(三)

在这里插入图片描述
🌞 “也许你感觉自己与周遭格格不入,但正是那些你一人度过的时光,让你变得越来越有意思,等有天别人终于注意到你的时候,他们就会发现一个比他们想象中更酷的人。”-《生活大爆炸》

Day03

  • 📝 一.选择题
  • 📝二.编程题

📝 一.选择题

🎈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
🔭答题思路:函数第一个形参 char b[10] ,需要传入的是数组的首地址。数组char c[10] 的数组名 c 是数组的首元素地址,可以传入 c。参数a是指针,需要接受它的地址。

🎈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放在*的左边,表示指针指向的值不可修改,但是指针指向可以修改。const放在*的右边,表示指针指向的值可修改,但是指针指向不可以修改。那么,放在中间,指针指向以及指针指向的值都不能改。本题中,*c和*d指向的值不能变,e的指向不能变,f都不能变,因此全错。

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

#define _CRT_SECURE_NO_WARNINGS 1
#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
🔭答题思路:本题主要需要弄清楚for循环的一个执行流程:
在这里插入图片描述
关于for循环的详细知识点可以见博客链接: for循环
那么,本题的解题流程如下:
在这里插入图片描述
在这里插入图片描述

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

#include <stdio.h>
int main()
{int a = 3;printf("%d\n", (a += a -= a * a));return 0;
}

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

🏆答案:D
🔭答题思路:本题考察的主要是运算符的优先级以及结合性。关于具体的操作符的知识可跳转至链接: 操作符

🔎操作符的优先级:

操作符描述结合性是否控制求值顺序
()聚组/
()函数调用左结合性
[ ]下标引用左结合性
.访问结构成员左结合性
->访问结构指针成员左结合性
++后缀自增左结合性
- -后缀自减左结合性
!逻辑反右结合性
~按位取反右结合性
+单目,表示正值左结合性
-单目,表示负值右结合性
++前缀自增右结合性
- -前缀自减右结合性
*间接访问右结合性
&取地址右结合性
sizeof取其长度,以字节表示右结合性
(类型)类型转换右结合性
*乘法左结合性
/除法左结合性
%整数取模左结合性
+加法左结合性
-减法左结合性
<<左移位左结合性
>>右移位左结合性
>大于左结合性
>=大于等于左结合性
<小于左结合性
<=小于等于左结合性
==等于左结合性
!=不等于左结合性
&位与左结合性
^位异或左结合性
I位或左结合性
&&逻辑与左结合性
II逻辑或左结合性
?:条件操作符右结合性
=赋值左结合性
+=以…加右结合性
-=以…减右结合性
*=以…乘右结合性
/=以…除右结合性
%=以…取模右结合性
<<=以…左移右结合性
>>=以…右移右结合性
&=以…与右结合性
^=以…异或右结合性
I=以…或右结合性
,逗号左结合性

📖我们可以发现在该表达式中a += a -= a * a*的优先级大于-=+=*是左结合,和+=-=是右结合。
本题的解题流程如下:
在这里插入图片描述
运行结果如下:
在这里插入图片描述

🎈5.下列不能实现死循环的是( )
A: while(1){} B: for(;1;){} C: do{}while(1); D: for(;0;){}

🏆答案:D
🔭答题思路:只有想循环条件为真时,循环才会继续。在C语言中,0表示假,1为真,因此选D

📝二.编程题

1.🎈首先输入要输入的整数个数 n ,然后输入 n 个整数。输出为 n 个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。
注意: 0 即不是正整数,也不是负数,不计入计算; 本题有多组输入用例。
输入描述:首先输入一个正整数 n ,然后输入 n 个整数。
输出描述:输出负数的个数,和所有正整数的平均值。
数据范围: 1≤n ≤2000 ,输入的整数都满足 ∣val∣≤1000
OJ链接【牛客网题号: HJ97 记负均正】【难度:简单】

🔭答题思路:从题目中的输入n个整数,我们会想到要利用数组来储存数据。然后利用for循环来找出数组中负数的个数(count)和正数的个数(count2),并且把所有正整数加起来,然后算出平均值。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int arr[1000];int n = 0;while (scanf("%d", &n) != EOF){int count = 0;//记录负数的个数int count2 = 0;//记录正数的个数float sum = 0;int i = 0;for (i = 0; i < n; i++){scanf("%d", &arr[i]);if (arr[i] < 0){count++;}if (arr[i] > 0){count2++;sum += arr[i];}}printf("%d ", count);if (count2)printf("%.1f", sum / count2);elseprintf("0.0");}return 0;
}

🔭样例输出:
在这里插入图片描述
2.🎈有一个长度为 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
OJ链接【牛客网题号: JZ11 旋转数组的最小数字】【难度:简单】

🔭答题思路:本题我采用的是遍历的方法,把每个数都比较一遍。但是这种方法只限于数据少的情况,数据大的话就会算很久,效率低。

int minNumberInRotateArray(int* rotateArray, int rotateArrayLen ) {int min = *rotateArray;//初始存放第一个数for (int i = 1; i < rotateArrayLen; ++i){if(*(rotateArray+i) < min){min = *(rotateArray+i);}}return min;
}

好啦,第三天的练习到这里就结束啦!后期会继续更新C语言的小练笔,欢迎大家持续关注、点赞和评论!❤️❤️❤️

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

相关文章:

  • 2023 js逆向爬虫 有道翻译 代码
  • 【物联网无线通信技术】NFC从理论到实践(FM17XX)
  • Python爬虫猿人学逆向系列——第六题
  • idea使用tomcat
  • 搭建Tomcat HTTP服务:在Windows上实现外网远程访问的详细配置与设置教程
  • Java学习笔记——继承(包括this,super的使用总结)
  • Android 获取应用sha1和sha256
  • c# 方法参数修饰符(out、ref、in)的区别
  • shell 编写一个带有进度条的程序安装脚本
  • 服务器数据恢复-AIX PV完整镜像方法以及误删LV的数据恢复方案
  • 首席执行官Adam Selipsky解读“亚马逊云科技的技术产品差异化”
  • C++ Day3
  • OpenEuler 安装mysql
  • [Docker] Windows 下基于WSL2 安装
  • (未完成)【Spring专题】SringAOP底层原理解析——阶段三(AOP)
  • 使用Nodejs创建简单的HTTP服务器,借助内网穿透工具实现公网访问的方法分享
  • 使用 OpenTelemetry 构建可观测性 03 - 导出
  • Pyqt5打开电脑摄像头进行拍照
  • Flowable 7.0.0.M2 版本功能
  • 【golang】关于指针的有限操作
  • ProGuard + SpringBoot3 + JDK17
  • Kafka面试
  • Amazon CloudFront 部署小指南(六)- Lambda@Edge 基础与诊断
  • centos7安装hadoop 单机版
  • 村口的人家排放污水,污水浸染了整个村子,怎么办
  • 算法leetcode|72. 编辑距离(rust重拳出击)
  • 实训笔记8.21
  • robust distortion-free watermarks for language models
  • PTS性能测试工具-使用记录
  • 【boost网络库从青铜到王者】第六篇:asio网络编程中的socket异步读(接收)写(发送)