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

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

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

目录

选择题:

题一:

题二:

题三:

题四:

题五:

编程题:

题一:数组颠倒

思路一:

题二:单词倒排

思路一:

思路二:

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

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


选择题:

题一:

1、请阅读以下程序,其运行结果是( )
int main()
{
        char c='A';
        if('0'<=c<='9')

        printf("YES");
        else

        printf("NO");
        return 0;
}

A: YES    B: NO    C: YESNO    D: 语句错误

答案解析:

        '0'<=c<='9'并非判断x大于等于字符0,小于等于字符9,而是先执行'0'<=c,使用这个表达式的结果再和'9'比较,'0'的ASCII码值是48,'A'的ASCII码值是'65',故'0'<c是真值1,1无疑是小于字符'9'的,最终是真。

题二:

2、假设编译器规定 int 和 short 类型长度分别为32位和16位,若有下列C语言语句, y 的机器数为( )
unsigned short x = 65530;
unsigned int y = x;

A: 0000 7FFA         B: 0000 FFFA   

C: FFFF 7FFA        D: FFFF FFFA

答案解析:

        unsigned short类型的x变量2个字节保存了65530,十六进制形式为0xFFFA,x给y赋值时会整型提升,而无符号数在提升时高位补0,其实就相当于把x的值放在了y的低2个字节的空间中,故选B。

题三:

3、下列程序的输出结果是什么( )
#include<stdio.h>
int main()
{
        int n = 1001;
        int ans = 0;
        for(int i = 1; i <= n; ++i)
        {
                ans ^= i % 3;
        }
        printf("%d",ans);
        return 0;
}

A: -2    B: 0    C: 1    D: 2

答案解析:

             i % 3 的值按1、2、0循环,可推算出ans按1、3、3、2、0、0循环,循环进行1001次,而1001%6=5,也就是ans按规律得到的第5个数为最终结果,故ans=0 。

题四:

4、C 语言中,下列运算符优先级最高的是 ( )

A: !    B:  C: >>    D: ==

答案解析:

        单目运算符的优先级通常都比较高,具体情况可查阅运算符优先级表格。

题五:

5、要使 a 的低四位翻转,需要进行操作是( )  

 A: a|0xF    B: a&0xF    C: a^0xF    D: ~a

答案解析:

        十六进制数0xF是4位1,参与运算时整型提升,高位都是0。低四位和1异或,0^1是1,1^1是0;高位和0异或,0^0是0,1^0是1。故而可以通过异或F使得a的低四位翻转,并保持高位不变。

编程题:

题一:数组颠倒

数字颠倒_牛客题霸_牛客网 (nowcoder.com)

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

示例1

        输入:

        1516000

        输出:

        0006151

思路一:

前后交换法:

        第一步:定义一个数组接收元素,并计算数组长度,left指向第一个元素,right指向最后一个元素;

        第二步:只要left < right,就交换两个元素;

        第三步:打印字符串。

#include <stdio.h>
#include <string.h>

int main() 
{
    char arr[10] = {0};
    scanf("%s",&arr);
    int sz = strlen(arr);
    int left = 0;
    int right = sz-1;
    //前后交换
    while(left < right)
    {
        char num = arr[left];
        arr[left] = arr[right];
        arr[right] = num;
        left++;
        right--;
    }
    printf("%s",arr);
    return 0;
}

题二:单词倒排

单词倒排_牛客题霸_牛客网 (nowcoder.com)

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

示例1

        输入:

        I am a student

        输出:

        student a am I

思路一:

逆置整个数组: I am a student——>tneduts a ma I

分别逆置各个单词:student a ma I

                                 student a  ma I

                                 student a am I

        第一步:由于正常情况下scanf的局限性,这里用gets来接收元素,并计算长度sz

        第二步:分别定义当前节点cur开始节点start来定位一个单词的范围,以及记录数count;

        第三步:首先数组整体倒置,然后从第一位开始,判断是字母就cur后移一位,不是字母就将start到cur-1区间的字母进行倒置,倒置完不是最后一个元素就添‘ ’(空格),再跳过所以非字母的元素;

        第四步:循环判断直到全部遍历一遍,就是需要的结果。

#include <stdio.h>
#include <string.h>
#include <ctype.h>
//倒置
void my_reverse(char* left, char* right)
{
    while (left < right)
    {
        char* tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}

int main()
{
    char arr[10000] = { 0 };
    gets(arr);
    //数组长度
    int sz = strlen(arr);
    //定位单词范围
    char* cur = arr;
    char* start = arr;
    //记录单词有几个字母
    int count = 0;
    //整体倒置
    my_reverse(arr, arr + sz - 1);
    while (*cur != '\0')
    {
        //是字母就++
        while (isalpha(*cur))
        {
            cur++;
        }
        //一个单词倒置
        my_reverse(start, cur - 1);
        //倒置后补空格
        if(*cur != '\0')
            *cur = ' ';
        //跳过所有非字母
        while (!isalpha(*cur) && *cur != '\0')
        {
            start = ++cur;
        }
    }
    //打印
    printf("%s", arr);

    return 0;
}

思路二:

        scanf("%[a-z|A-Z]",arr[i]);    %["a-z | A-Z"]意思是是只接收字母元素,与二维数组连用,就是将一串字符连成的单词放到一维数组中。

如:

        I  like  bit

即:I

        like

        bit

        第一步:定义一个足够接收字符串长度的二维数组arr,以及初始化为“0”的“ i ”“ x ”

        第二步:scanf返回值,正确输入n个变量返回n,不匹配返回0,输入结束EOF,接收字母字符到一维数组中,只要后面不是'\n'就i++,否则直接退出循环;

        第三步:从后往前将打印单词打印。

#include <stdio.h>
#include <stdlib.h>

int main() 
{
    char arr[10000][21] = {0};
    int i = 0;
    int x = 0;
    while(1)
    {
        //scanf返回值,正确输入n个变量返回n,不匹配返回0,输入结束EOF
        x = scanf("%[a-z|A-Z]",arr[i]);
        //如果输入结束,退出
        if(getchar() == '\n')
        break;
        //记录单词个数
        if(x)
        i++;
    }
    //从后往前打印单词
    for(int j = i;j >= 0;j--)
    {
        if(j > 0)
        printf("%s ",arr[j]);
        else
        printf("%s",arr[j]);
    }
    return 0;
}

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

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

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

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

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

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

相关文章

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

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

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

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

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

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

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

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

    2024年02月09日
    浏览(42)
  • 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日
    浏览(53)
  • C语言:选择+编程(每日一练Day7)

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

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

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

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

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

    2024年02月09日
    浏览(49)
  • 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日
    浏览(42)
  • C语言:每日一练(选择+编程)

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

    2024年02月12日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包