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

C语言假期作业 DAY 03

目录

题目

一、选择题

1、已知函数的原型是: int fun(char b[10], int *a); ,设定义: char c[10];int d; ,正确的调用语句是( )

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

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

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

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

二、编程题

 1:记负均正_牛客题霸_牛客网 (nowcoder.com)HJ97 记负均正

描述

输入描述:

输出描述:

2:旋转数组的最小数字_牛客题霸_牛客网JZ11 旋转数组的最小数字

描述

示例1

示例2

题解

一、选择题

1 、【答案解析】

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、请问下列表达式哪些会被编译器禁止【多选】( )

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

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

 

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

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

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

A: -6

B: 12

C: 0

D: -12

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

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

二、编程题

 1:记负均正_牛客题霸_牛客网 (nowcoder.com)HJ97 记负均正

描述

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

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

数据范围:  1≤n ≤2000  ,输入的整数都满足  ∣val∣≤1000 

输入描述:

首先输入一个正整数n,
然后输入n个整数。

输出描述:

输出负数的个数,和所有正整数的平均值。

2:旋转数组的最小数字_牛客题霸_牛客网JZ11 旋转数组的最小数字

描述

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

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

要求:空间复杂度:O(1) ,时间复杂度:O(logn)

示例1

输入:[3,4,5,1,2]

返回值:1

示例2

输入:[3,100,200,3]

返回值:3 

题解

一、选择题

1 、【答案解析】

正确答案: A
参数 a 是指针,要接收地址, BD 错误。参数 b 可以接收的是 char* ,而 &c 的类型是 char(*)[10] , C 错误

2 、【答案解析】

正确答案: ABCD
如果 const 位于 * 的左侧,则 const 就是用来修饰指针所指向的变量,即指针指向为常量; *c 和 *d 不能变。 如果 const 位于 * 的右侧,则 const 就是修饰指针本身,即指针本身是常量; e 和 f 不能变。

3 、【答案解析】

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

4 、【答案解析】

正确答案: D
a+=a-=a*a 等价于 a=a+(a=a-a*a) ,即先计算 a=a-a*a ,所以此时 a 的值为 3-3*3=-6 ,再计算 -6+(-6)=-12 赋值给 a ,所以a 的值为 -12 ,也就是整个表达式的值,所以应选择 D

5 、【答案解析】

正确答案: D
只有条件为真时才进行循环, ABC 中 1 为真, D 中 0 为假

二、编程题

1 、【答案解析】:

这道题其实通过 scanf 捕捉数据即可,统计负数个数,以及正数格式,并且在统计正数个数的过程中求取正数总和,最后计算得出平均数即可。需要注意的是所有数字中0 是不统计在内的。

#include<stdio.h>
#include<stdlib.h>
int main() {int n = 0;while (scanf("%d", &n) != EOF) {int i = 0;int sum = 0;float ava = 0.0f;int cnt1 = 0;//记录负数int cnt2 = 0;//记录除0后的数int cnt3 = 0;//记录0的个数int* arr = (int*)malloc(n * sizeof(int));for (i = 0; i < n; i++) {scanf("%d", &arr[i]);}for (i = 0; i < n; i++) {if (arr[i] < 0) {cnt1++;} else if (arr[i] > 0) {sum += arr[i];cnt2++;} else {cnt3++;}}if (cnt3 == n) {printf("%d 0.0", cnt1);} else {ava = (double)sum / cnt2;printf("%d %.1f", cnt1, ava);}free(arr);arr = NULL;}return 0;
}

2、【答案解析】

 暴力破解:遍历数组找出最小值即可 更优思想:采用二分查找,这个题主要分析三种旋转情况 [1, 2, 3, 4, 5],使用中间值与右端进行比较。

1. 中间大于右边 [3, 4, 5, 1, 2],这种情况下,最小数一定在右边;则left = middle + 1

2. 中间等于右边 [1, 0, 1, 1, 1], 这个是[0, 1, 1, 1, 1] 旋转过来的,这时候需要缩小范围 right--;,注意不能是 left++,因为是非降序数组,所以要缩小右边范围,把较小值向右推,符合我们的判断规则。

3. 中间小于右边 [5, 1, 2, 3, 4], 这种情况下,最小数字则在左半边;则right = middle
 

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

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

相关文章:

  • 使用serverless实现从oss下载文件并压缩
  • 从上到下打印二叉树
  • 【推荐】排序模型的调优
  • 负载均衡安装配置详解
  • Java-逻辑控制
  • UE 透明渲染次序
  • 【C++】多态原理剖析,Visual Studio开发人员工具使用查看类结构cl /d1 reportSingleClassLayout
  • vue实现flv格式视频播放
  • iptables安全技术和防火墙
  • 微信小程序开发5
  • 【算法题】2681. 英雄的力量
  • fastutil简单测试下性能
  • 【FAQ】关于无法判断和区分用户与地图交互手势类型的解决办法
  • 腾讯云裸金属服务器CPU型号处理器主频说明
  • 工程安全监测无线振弦采集仪在建筑物中的应用
  • 【iOS】isKindOfClass和isMemberOfClass方法
  • 李飞飞「具身智能」VoxPoser:0预训练完成复杂指令
  • 前端八股文
  • 前端年度工作述职报告优秀
  • 【MyBatis 学习一】认识MyBatis 第一个MyBatis查询
  • TCP 和 UDP
  • springboot配置自定义数据源(Druid德鲁伊)的步骤。
  • K8S:容器日志收集与管理
  • Flutter系列文章-Flutter进阶
  • 【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式
  • rust学习-线程
  • 题目:2180.统计各位数字之和为偶数的整数个数
  • 3dsmax制作一个机器人
  • C++的类型转换运算符:reinterpret_cast
  • flask中的cookies介绍