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

cpp 复制代码
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里面存放的地址改变了,解引用出来的值才会变化

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

只有主动对 *a 赋值才能改变这个值,但a里面的地址是一直保持不
对于A和B:const在" * "的左面,则 const 就是用来修饰指针所指向的变量,即指针指向为常量,则此时的*c和*d不变

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

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

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

cpp 复制代码
#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、下面代码段的输出是( )

cpp 复制代码
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选项。

拓展:操作符优先级图表

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 个整数。

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

cpp 复制代码
#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

cpp 复制代码
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;
		else
			right--;
	}
	return nums[right];
}

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

相关推荐
GIS小天3 小时前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年8月25日第170弹
人工智能·算法·机器学习·彩票
PAK向日葵4 小时前
【算法导论】XM 0823 笔试题解
算法·面试
岁月栖迟4 小时前
leetcode 49. 字母异位词分组
windows·算法·leetcode
Asmalin4 小时前
【代码随想录day 21】 力扣 77. 组合
算法·leetcode·职场和发展
XH华4 小时前
C语言第十一章内存在数据中的存储
c语言·开发语言
AndrewHZ6 小时前
【python与生活】如何用Python写一个简单的自动整理文件的脚本?
开发语言·python·生活·脚本·文件整理
拉法豆粉6 小时前
在压力测试中如何确定合适的并发用户数?
java·开发语言
枯萎穿心攻击6 小时前
Unity VS UE 性能工具与内存管理
开发语言·游戏·unity·ue5·游戏引擎·虚幻·虚幻引擎
爱上纯净的蓝天7 小时前
迁移面试题
java·网络·c++·pdf·c#
老赵的博客7 小时前
c++ 常用接口设计
开发语言·c++