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

这篇具有很好参考价值的文章主要介绍了C语言:选择+编程(每日一练Day14)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言:选择+编程(每日一练Day14),C语言练习,c语言,算法,开发语言,笔记,深度学习,学习,c++

目录

选择题:

题一:

题二:

题三:

题四:

题五:

编程题:

题一:珠玑妙算

思路一:

题二:两数之和

思路一:

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

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


选择题:

题一:

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 <stdio.h>
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)

C语言:选择+编程(每日一练Day14),C语言练习,c语言,算法,开发语言,笔记,深度学习,学习,c++

示例:

输入: 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)

C语言:选择+编程(每日一练Day14),C语言练习,c语言,算法,开发语言,笔记,深度学习,学习,c++

示例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;
}

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

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

                                              C语言:选择+编程(每日一练Day14),C语言练习,c语言,算法,开发语言,笔记,深度学习,学习,c++文章来源地址https://www.toymoban.com/news/detail-706973.html

到了这里,关于C语言:选择+编程(每日一练Day14)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

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

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:寻找奇数 思路一: 题二:寻找峰值 思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们的一键三连

    2024年02月10日
    浏览(48)
  • C语言:选择+编程(每日一练Day5)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:数字在升序数组中出现的次数 思路一: 思路二: 题二:整数转换  思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键

    2024年02月09日
    浏览(50)
  • C语言:选择+编程(每日一练Day6)

    目录 ​编辑选择题:  题一: 题二: 题三: 题四: 题五: 编程题: 题一:至少是其他数字两倍的最大数 思路一: 思路二: 题二:两个数组的交集  思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感

    2024年02月11日
    浏览(54)
  • C语言:选择+编程(每日一练Day8)

    目录 选择题:  题一: 题二: 题三: 题四: 题五: 编程题: 题一:字符个数统计 思路一: 题二:多数元素 思路一:  本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们的一

    2024年02月11日
    浏览(89)
  • C语言:选择+编程(每日一练Day1)

    目录  选择题: 题一: 题二: 题三:  题四:  题五: 编程题: 题一:打印1到最大的n位数 示例1 思路一: 题二:计算日期到天数转换 示例1  思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 1、执行下

    2024年02月09日
    浏览(45)
  • C语言:选择+编程(每日一练Day9)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:自除数 思路一: 题二:除自身以外数组的乘积 思路二: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连! 感谢大佬们

    2024年02月09日
    浏览(45)
  • C语言:选择+编程(每日一练Day4)

    1、 设变量已正确定义,以下不能统计出一行中输入字符个数( 不包含回车符 )的程序段是( ) A: n=0;while(ch=getchar()!=\\\'n\\\')n++;     B: n=0;while(getchar()!=\\\'n\\\')n++; C: for(n=0;getchar()!=\\\'n\\\';n++);              D: n=0;for(ch=getchar();ch!=\\\'n\\\';n++); 答案解析:               对于for循环,其

    2024年02月09日
    浏览(55)
  • C语言:选择+编程(每日一练Day7)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:图片整理 思路一: 思路二:  题二:寻找数组的中心下标  思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感谢大佬们的一键三连!

    2024年02月11日
    浏览(45)
  • C语言:选择+编程(每日一练Day3)

    目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:记负均正 思路一: 题二:旋转数组的最小数字 思路一: 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: f

    2024年02月09日
    浏览(45)
  • C语言:选择+编程(每日一练)

    目录  选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:尼科彻斯定理 示例1 题二:等差数列 示例2 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 1、以下程序段的 输出结果 是( ) #includestdio.h i

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包