C语言:选择+编程(每日一练Day8)

news2025/1/20 17:05:42

目录

选择题: 

题一:

题二:

题三:

题四:

题五:

编程题:

题一:字符个数统计

思路一:

题二:多数元素

思路一: 

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!


选择题: 

题一:

1、如下程序的运行结果是( )
char c[5]={'a', 'b', '\0', 'c', '\0'};
printf("%s", c);

A: 'a' 'b'    B: ab\0c\0    C: ab c    D: ab

答案解析:

        字符串的结束标志是'\0',而'\0'的ASCII值是0,而c[2]被初始化为0,就相当于是'\0',故字符串打印的内容只有"ab"。

题二:

2、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )

  
A: a[2][0]    B: a[2][3]    C: a[0][3]   
D: a[1>2][1]

答案解析:

        本题主要考虑数组越界访问的情况,二维数组的行和列都是从0开始的,对于a数组来说,行下标最大是1,列下标最大是2,D选项中1>2表达式的值是0,是正确的,其他选项行和列都可能存在越界,A是行越界,B是行和列都越界,C是列越界。

题三:

3、在下面的字符数组定义中,哪一个有语法错误( )


A: char a[20]="abcdefg";     B: char a[]="x+y=5.";

C: char a[15];                       D: char a[10]='5';

答案解析:

        D中的'5'是一个字符常量,不能给字符型数组a初始化。

题四:

4、下列定义数组的语句中正确的是【多选】( )
A:#define size 10
char str1[size], str2[size+2];

B:char str[];

C:int num['10'];

D:int n=5; int a[n][n+2];

答案解析:

        A选项:宏替换,没问题;B选项:非法定义,一维数组必须定义数组元素个数;C选项:字符'0',转换成十进制为48,所以该选项最终为int num[48];D选项:错误,数组定义下角标不能为变量,注:C99标准中支持了使用变量,这里不做特殊考虑。

题五:

5、已知 “ i ” “ j ”都是整型变量,下列表达式中,与下标引用X[i][j]不等效的是【多选】()

A:*(X[i]+j)    B:*(X+i)[j]     C:*(X+i+j)     D:*(*(X+i)+j)

答案解析:

        本题考查的是二维数组的元素访问,A选项是 正确的,X[i]就是第i行的数组名,数组名表示首元素的地址,X[i]表示第i行的第一个元素的地址,+j后就是第i行下标为j的元素的地址,整体解引用就是X[i][j],A正确。B选项因为[]的优先级高于*,

所以代码相当于**((x+i)+j),X+i+j后就越界了,并不代表X[i][j],所以错误。C选项也明显不对,X是二维数组的数组名,数组名相当于第一行的地址,X+i+j,跳过了i+j行,就越界了,C错误。D选项是标准的指针形式访问二位数组的一个元素。

编程题:

题一:字符个数统计

字符个数统计_牛客题霸_牛客网 (nowcoder.com)

示例:

   输入:

   abc

   输出:

   3

思路一:

排序记录法:

        第一步:创建足够大小的数组arr,输入数组的元素,计算数组长度sz,通过my_string函数传参计算;

        第二步:在函数中将数组按升序排序以及记录数的定义count

        第三步:遍历数组:确保唯一性当数组为空或没有记录相同的字符时放入数组,每次记录完记录数都+1;

        第四步:将记录数count返回,打印。

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
//升序排列
int my_cmp(const void* p1,const void* p2)
{
    return strcmp((char*)p1,(char*)p2);
}
//计算字符个数函数
int my_string(char* arr,int sz)
{
    assert(arr);
    //升序排列
    qsort(arr,sz,sizeof(arr[0]),my_cmp);
    char sum[500]= {0};
    int count = 0;
    //遍历数组
    for(int i = 0;i < sz;i++ )
    {
        //当数组为空或没有记录相同的字符时放入数组
        if(count == 0 || arr[i] != sum[count-1])
        {
            sum[count++] = arr[i];
        }
    }
    return count;
}
int main() 
{
    char arr[500] ={0};
    scanf("%s",&arr);
    //就是数组长度
    int sz = strlen(arr);
    //记录不同个数
    int num = my_string(arr,sz);
    printf("%d\n",num);
    return 0;
}


题二:多数元素

169. 多数元素 - 力扣(LeetCode)

思路一: 

轮番比较:

        第一步:定义记录数count比较数k,题目返回条件

        第二步:数组num按升序排列

        第三步:遍历数组:先判断k与上一个k值是否相同不相同则开始下一个数的记录;相同则记录数+1;当满足题目返回条件时退出。

//比较函数升序
int my_cmp(const void* p1,const void* p2)
{
    return *(int*)p1 - *(int*)p2;
}
int majorityElement(int* nums, int numsSize)
{
    int num = numsSize/2;
    int count = 0;
    int k = -1;
    //升序排序
    qsort(nums,numsSize,sizeof(nums[0]),my_cmp);
    //遍历数组
    for(int i = 0;i < numsSize;i++)
    {
        //与k不相同就重新开始记录
        if(k != nums[i])
        {
            k = nums[i];
            count = 0;
        }
        //相同记录+1
        if(nums[i] == k)
        {
            count++;
        }
        //达到要求返回
        if(count > num)
        {
            return k;
        }
    }
    return 0;
}

本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵!

感谢大佬们的一键三连! 感谢大佬们的一键三连! 感谢大佬们的一键三连!

                                              

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/925541.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建harbor仓库并进行一些操作

文章目录 前言一、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。二、安装搭建私有仓库 Harbor1、安装docker-compse2、安装harbor 3、修改配置文件4、运行脚本5 登入harbor仓库总结 前言 本篇文章需要完成的以下几个操作&#xff1a; 使用mysql:5.6和 ownclo…

0基础学习VR全景平台篇 第90篇:智慧眼-数据统计

【数据统计】是按不同条件去统计整个智慧眼项目中的热点&#xff0c;共包含四大块&#xff0c;分别是数据统计、分类热点、待审核、回收站&#xff0c;下面我们来逐一进行介绍。 1、数据统计 ① 可以按所属分类、场景分组、所属场景、热点类型以及输入热点名去筛选对应的热点&…

Spring之Spring生态系统的演进

未来展望&#xff1a;Spring生态系统的演进 未来展望&#xff1a;Spring生态系统的演进 摘要引言词汇解释详细介绍新技术趋势与影响开发方向与展望探讨Spring在未来的发展趋势微服务与云原生响应式编程强调开发效率和全栈式开发支持人工智能和大数据保持灵活性和创新性 针对新兴…

有效降低传导辐射干扰

一直以来&#xff0c;设计中的电磁干扰&#xff08;EMI&#xff09;问题十分令人头疼&#xff0c;尤其是在汽车领域。为了尽可能的减小电磁干扰&#xff0c;设计人员通常会在设计原理图和绘制布局时&#xff0c;通过降低高di / dt的环路面积以及开关转换速率来减小噪声源。 但…

SpringBootWeb案例 Part 4

3. 修改员工 需求&#xff1a;修改员工信息 在进行修改员工信息的时候&#xff0c;我们首先先要根据员工的ID查询员工的信息用于页面回显展示&#xff0c;然后用户修改员工数据之后&#xff0c;点击保存按钮&#xff0c;就可以将修改的数据提交到服务端&#xff0c;保存到数据…

eps三维测图软件工具箱设置

1、打开软件&#xff0c;点击工具箱按钮。具体如下&#xff1a; 2、点击工具箱内分组按钮&#xff0c;右键选择插入命令。如下&#xff1a; 3、进入命令设置界面&#xff0c;如下&#xff1a;

Android View动画整理

此前也有写 View 动画相关的内容&#xff0c;但都只是记录代码&#xff0c;没有特别分析。以此篇作为汇总、整理、分析。 Android View 动画有4中&#xff0c;分别是 平移动画 TranslateAnimation缩放动画 ScaleAnimation旋转动画 RotateAnimation透明度动画 AlphaAnimation …

深度学习模型优化:提高训练效率和精度的技巧

文章目录 1. 数据预处理2. 批量归一化&#xff08;Batch Normalization&#xff09;3. 学习率调整4. 提前停止&#xff08;Early Stopping&#xff09;5. 模型压缩与剪枝6. 模型并行与分布式训练7. 自动化超参数调整结论 &#x1f389;欢迎来到AIGC人工智能专栏~探索Java中的静…

【MySQL】2、MySQL数据库的管理

常用 describe user; Field:字段名称 Type:数据类型 Null :是否允许为空 Key :主键 Type:数据类型 Null :是否允许为空key :主键 Default :默认值 Extra :扩展属性&#xff0c;例如:标志符列&#xff08;标识了种子&#xff0c;增量/步长&#xff09;1 2 id&#xff1a;1 3 5 …

机器视觉工程师,2023年最大忠告,没实力,别辞职

最近很多粉丝频繁联系我&#xff0c;太难了&#xff0c;想辞职&#xff0c;干不下去&#xff0c;想要要辞职。 我会慢慢和他分析他当前的优势和劣势&#xff0c;从目前掌握各家公司招聘的信息来看&#xff0c;分以下几种情况&#xff1a; 第一&#xff1a;员工流动性大的公司&…

badgerdb 压缩合并

压缩合并原因 badgerdb是lsm tree派系的数据库&#xff0c;put&#xff0c;delete接口都是通过追加写日志的方式来保存的&#xff0c;日志如果一直不清理&#xff0c;会导致读性能越来越差&#xff0c;占用的存储空间也越来越大&#xff0c;badgerdb为了解决这些问题&#xff0…

深入解析:树结构及其应用

文章目录 学习树的基本概念理解树的遍历方式学习堆和优先队列的应用案例分析&#xff1a;使用堆进行Top K元素的查找结论 &#x1f389;欢迎来到数据结构学习专栏~深入解析&#xff1a;树结构及其应用 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈…

提高生产力的强大开发工具

在当今快速发展的软件开发领域&#xff0c;提高生产效率和质量是每个开发团队追求的目标。JNPF&#xff08;Java Non-Enterprise Application Framework&#xff09;作为一种灵活且强大的开发工具&#xff0c;旨在帮助开发团队实现这一目标。本文将深入探讨JNPF如何提高生产力&…

非凸联合创始人李佐凡受邀出席复旦DSBA项目座谈会

8月17日&#xff0c;非凸科技联合创始人&CTO李佐凡受邀参加复旦管院数据科学与商业分析专业硕士&#xff08;DS&BA&#xff09;项目发展座谈会&#xff0c;与学校教授、老师在生源背景、课程教学、职业发展、学生培养和企业合作方面进行深入交流&#xff0c;旨在更好地…

【衍射光栅】用于Matlab的交互式衍射光栅模型研究

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【C++STL基础入门】vector运算和遍历、排序、乱序算法

文章目录 前言一、vector运算符1.1 比较运算符vector有哪些比较运算符&#xff1f;示例代码注意 1.2 下标运算符 二、算法2.1 算法需要的头文件2.2 遍历算法2.3 排序算法从大到小从小到大 2.4 乱序算法 总结 前言 C标准库提供了丰富的容器和算法&#xff0c;其中vector是最常用…

基本概念【算术、 关系、逻辑、位、字符串、条件、优先级等运算符】(三)-全面详解(学习总结---从入门到深化)

文章目录 运算符(operator) 算术运算符 赋值及其扩展赋值运算符 关系运算符 逻辑运算符 位运算符 字符串连接符 条件运算符 运算符优先级的问题 数据类型的转换 自动类型转换 强制类型转换 Scanner 处理键盘输入 运算符(operator) 计算机的基本用途就是执行数学运…

16、Flink 的table api与sql之连接外部系统: 读写外部系统的连接器和格式以及Elasticsearch示例(2)

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

每日一题 113路径总和||(递归)

题目 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22…