我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

55f0f6eb5fef45b8b31fc561c321cc87.png

目录

选择题:

题一:

题二:

题三:

题四:

题五:

编程题:

题一:珠玑妙算

思路一:

题二:两数之和

思路一:

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

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


选择题:

题一:

1、有以下函数,该函数的功能是( )
int fun(char *s)
{
        char *t = s;
        while(*t++);
        return(t-s);
}

A: 比较两个字符的大小            B: 计算s所指字符串占用内存字节的个数
C: 计算s所指字符串的长度       D: 将s所指字符串复制到字符串t中

答案解析:

        循环在*t为0时停止,同时t++,t最后会停在字符串结束的'\0'之后的一个位置,t作为尾部指针减去头部指针就是整个字符串占用内存的字节数,包含\0在内;而c答案字符串长度不包括最后的\0。

题二:

2、若有“ float a[3]={1.5,2.5,3.5},*pa=a;*(pa++)*=3; ”,则 *pa 的值是( )

A: 1.5    B: 2.5    C: 3.5    D: 4.5

答案解析:

        在*pa=a中指针pa指向a[0];pa++返回值仍是操作之前的值;*(pa++)取pa指向的地址的值;*(pa++)*=3将该值变为原来的3倍,也就是数组a的第一个值为4.5;由于pa++之后pa指针移动了sizeof(float)个字节,所以pa指向a[1],所以值为2.5。

题三:

3、以下程序运行后的输出结果是( )
#include
int main()
{
        int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, *p = a + 5, *q = NULL;
        *q = *(p+5);
        printf("%d %d\n", *p, *q);
        return 0;
}

A: 运行后报错    B: 6 6    C: 6 11    D: 5 10

答案解析:

        指针q初始化为NULL,接着又解引用指针q,是错误的,对NULL指针是不能解引用的。

题四:

4、设有定义 char *p[]={"Shanghai","Beijing","Honkong"}; 则结果为 j 字符的表达式是( )

A: *p[1] +3    B: *(p[1] +3)    C: *(p[3] +1)    D: p[3][1]

答案解析:

        B选项,p是个char*类型的数组,p[1]拿到字符串"beijing"的首地址,再加3便是'j'的地址,解地址拿到'j。

题五:

5、以下叙述中正确的是( )

A: 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同
B: 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息
C: 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;
D: 指针变量之间不能用关系运算符进行比较

答案解析:

        A 选项描述不正确,不同类型指针一般不可以直接赋值;C选项中,p=NULL;和p=0;是等价的;D选项中,指向同一数组的两指针变量进行关系运算可表示它们所指数组元素之间的位置关系。B选项正确。

编程题:

题一:珠玑妙算

面试题 16.15. 珠玑妙算 - 力扣(LeetCode)

baadd4325bb441628f5c81c40a2ab567.png

示例:

输入: solution="RGBY",guess="GGRR"输出: [1,1]解释: 猜中1次,伪猜中1次。

提示:

  • len(solution) = len(guess) = 4
  • solutionguess仅包含"R","G","B","Y"这4种字符

思路一:

        第一步:定义两个数组arr1,arr2记录两数组单词(颜色)的个数,开辟两个int类型大小的tmp输出的数组元素个数为2;

        第二步:遍历数组将相同的记录,不相同的在字母数组颜色中+1;

        第三步:遍历一遍字母表数组,满足同时有字母且有相同颜色时tmp+当前数组元素的最小值;

        第四步:返回tmp。

int* masterMind(char* solution, char* guess, int* returnSize){    //记录两数组单词(颜色)的个数    int arr1[26] = {0};    int arr2[26] = {0};    int* tmp = (int*)calloc(2,sizeof(int));    *returnSize = 2;    //将相同的记录,不相同的在数组颜色中+1    for(int i = 0; i < 4; i++ )    {        if(solution[i] != guess[i])        {            arr1[solution[i] - 65] ++;            arr2[guess[i] - 65] ++;        }        else        {            tmp[0]++;         }    }        for(int i = 0; i < 26; i++ )    {        //有相同颜色时,将数量给tmp[1]        if(arr1[i] > 0 && arr2[i] > 0)        {            tmp[1] += arr1[i] > arr2[i] ? arr2[i] : arr1[i];        }    }    return tmp;}

题二:两数之和

两数之和_牛客题霸_牛客网 (nowcoder.com)

b133b3d7289b4739af498d56002dac60.png

示例1

        输入:

        [3,2,4],6

        返回值:

        [2,3]

        说明:

        因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以返回[2,3]   

思路一:

双重for循环暴力破解:

        第一步:开辟动态内存大小为两个int类型的tmp,输出的数组元素个数为2;

        第二步:双重for循环:计算当前数与后面的的数相加是否=target相同:tmp[0] = i + 1;
tmp[1] = j + 1(+1是因为题目没有0下标位)返回tmp;

        第三步:遍历结束都没有符合条件的两个下标,就将返回置NULL。

int* twoSum(int* numbers, int numbersLen, int target, int* returnSize ) {    int* tmp = (int*)malloc(sizeof(int) * 2);    *returnSize = 2;    //计算当前数与后面的的数相加是否=target    for(int i = 0; i < numbersLen; i++ )    {        //跳过不符合的数        if(numbers[i] > target)            continue;        for(int j = i+1; j < numbersLen; j++)        {            if(numbers[i] + numbers[j] == target)            {                tmp[0] = i + 1;                tmp[1] = j + 1;                return tmp;             }        }    }    //为空时    *returnSize = 0;    return NULL;}

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

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

                                              c90de1178d0345148d109f22b2169307.jpeg

来源地址:https://blog.csdn.net/weixin_71964780/article/details/132655458

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C语言每日一练------Day(6)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:整数转换 异或 💓博主csdn个人主页:小小unic
2023-08-30

C语言每日一练------Day(5)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:错误的集合 密码检查 💓博主csdn个人主页:小小u
2023-08-30

选择C语言编程软件?这五个值得一试!

选择C语言编程软件?这五个值得一试!导语:对于想要学习和使用C语言进行编程的人来说,选择一款合适的编程软件是至关重要的。本文将介绍五款值得一试的C语言编程软件,帮助读者快速入门和提升编程技能。一、Dev-C++Dev-C++是一款免费
选择C语言编程软件?这五个值得一试!
2024-02-22

选择编程语言:Golang和C语言的优劣比较

编程语言一直是开发人员之间讨论的热门话题,其中Golang和C语言是两种备受关注的语言之一。本文将对这两种语言进行优劣比较,并给出具体的代码示例来说明它们的特点。一、Golang1. 优点a. 并发处理能力强Golang在设计之初就
选择编程语言:Golang和C语言的优劣比较
2024-03-06

硬件抽象编程该如何选择C语言及Rust

今天给大家介绍一下硬件抽象编程该如何选择C语言及Rust。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。在 Rust 中使用类型级编程可以使硬件抽象更加安全。R
2023-06-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录