C语言—每日选择题—Day68

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

第一题

1、运行以下C语言代码,输出的结果是()

#include <stdio.h>
int main()
{
    char *str[3] ={"stra", "strb", "strc"};
    char *p =str[0];
    int i = 0;
    while(i < 3)
    {
        printf("%s ",p++);
        i++;
    } 
    return 0;
}

A: stra strb strc

B: s t r

C: stra tra ra

D: s s s

答案及解析 C

C语言—每日选择题—Day68,C语言选择题,c语言,算法,开发语言

这里需要注意的是printf函数,会自动识别字符串,到\0位置结束打印

而p为char*类型,p++,只会移动一个字节,p++后置++,返回++之前的值

所以第一次打印:stra,但p在t位置

第二次:tra,但p在r位置

第三次为:ra,但p在a位置

第二题

2、下列代码输出的结果是什么()

#include <stdio.h>
int main() 
{
    int m[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
    int(*p)[4] = (int(*)[4])m;
    printf("%d", p[1][2]);
    return 0;
}

A: 7

B: 3

C: 8

D: 4

答案及解析 A

C语言—每日选择题—Day68,C语言选择题,c语言,算法,开发语言

这里p是一个数组指针,类型为int(*)[4]

p[1] [2] 相当于:*(*(p + 1) + 2),p的类型为int (*) [4],所以p + 1,是往后4个元素大小

相当于取到了5,6,7,8的整个地址

而数组指针,这样理解更容易:int arr[4];

&arr :表示整个数组的地址,是数组指针,对数组指针解引用:*&arr = arr;

所以对数组指针解引用得到的是数组指针开头的元素地址;

那*(p + 1) 就是5的地址,类型int*

所以*(*(p + 1) + 2),就是往后移动两个元素,到7的地址,再解引用拿出7;

第三题

3、下列程序的输出结果是( )

int main()
{
    char p1[15]="abcd", *p2="ABCD", str[50]="xyz";
    strcpy(str + 2, strcat(p1+2, p2+1));
    printf("%s", str);
    return 0;
}

A: xyabcAB

B: abcABz

C: ABabcz

D: xycdBCD

答案及解析 D

C语言—每日选择题—Day68,C语言选择题,c语言,算法,开发语言

首先要记住strcpy,是覆盖到str + 2,所指向的地址,所以应该在z往后覆盖;

而strcat,是链接字符串,从p1 + 2 为起始位置,p2 + 1为起始位置,p2 + 1链接到p1 + 2末尾:cdBCD

strcpy中:就是z变成cdBCD

所以str就是xycdBCD

第四题

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

A: 两个字符串可以用关系运算符进行大小比较
B: 函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位)
C: C语言本身没有提供对字符串进行整体操作的运算符
D: 当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和

答案及解析 C

A:错误,字符串比较需要使用strcmp函数,因为要比较相同位置的字符的ASCII值

B:错误:strlen函数返回的是到 ‘ \0 ’之前的长度,而 ' \0 '也占用了内存,并没返回实际占用内存大小;

C:正确

D:错误:在拼接的时候,是舍去了一个字符串的 '\0',结果字符串占用内存的空间应该是原字符串空间和 - 1;

第五题

5、程序的结果是什么( )

#include<stdio.h>
char* f(char* str, char ch)
{
    char* it1 = str;
    char* it2 = str;
    while(*it2 != '\0')
    {
        while (*it2 == ch)
        {
            it2++;
        } 
        *it1++ = *it2++;
    } 
    return str;
} 
int main() 
{
    char a[10];
    strcpy(a, "abcdcccd");
    printf("%s", f(a, 'c'));
    return 0;
}

A: abdcccd

B: abdd

C: abcc

D: abddcccd

答案及解析 D

这个自己按着程序思路遍历一遍就行文章来源地址https://www.toymoban.com/news/detail-847565.html

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

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

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

相关文章

  • day32—选择题

    A 减少磁盘 I/O 次数 B 减少平均寻道时间 C 提高磁盘数据可靠性 D 实现设备无关性 思路:CPU执行速度要快于磁盘io速度,为了提高效率,对于经常访问的磁盘数据,可以使用磁盘缓存来提高io速度;可以减少的是平均寻道次数,而不是时间;数据的可靠性不是由缓冲区决定的;

    2023年04月21日
    浏览(41)
  • day41—选择题

    A 180.80.76.0 B 180.80.76.255 C 180.80.77.255 D 180.80.79.255 思路:子网掩码255.255.252.0(即11111111.11111111.11111100.00000000),网络号为连续的1,主机号为连续的0;题目要发送广播分组,所以求的是广播地址,广播地址的主机位也是全为1,所以主机 180.80.77(01001101).55所在的广播地址就是180.8

    2024年02月03日
    浏览(40)
  • day45—选择题

    A 205 B 205.140 C 68 D 205.140.36 思路:A类地址网络号是0 ~ 127,B类地址网络号是128.0 ~ 191.255,C类是192.0.0 ~ 223.255.255,因此这是一个C类网络,24位网络号 A 服务端收到客户端的SYN包后等待2 ml时间后就会进入SYN_SENT状态 B 服务端收到客户端的ACK包后会进入SYN_RCVD状态 C 当客户端处于ESTA

    2024年02月04日
    浏览(36)
  • day31—选择题

    A 1 B 9 C 10 D 11 思路:CPU中只能处理一个,一共有12个进程,那么处在就绪队列中的最多就是11个 A 线程同步的方法包括使用临界区,互斥量,信号量等 B 两个线程同时对简单类型全局变量进行写操作也需要互斥 C 实现可重入函数时,对自动变量也要用互斥量加以保护 D 可重入函

    2023年04月20日
    浏览(79)
  • day26—选择题

    A 形式参数可被字段修饰符修饰 B 形式参数不可以是对象 C 形式参数为方法被调用时真正被传递的参数 D 形式参数可被视为local variable 思路:字段修饰符指的是public等,形式参数是不可以被public等修饰的;形式参数可以是对象;实参为方法被调用时真正被传递的参数;local v

    2023年04月14日
    浏览(41)
  • day29—选择题

    A toString(),equals() B clone(),equals() C hashCode(),equals() D getClass(),clone() 思路:先调用对象的HashCode方法将对象映射为数组下标,再通过equals方法判断元素内容是否相同;toString是打印元素内容,clone是拷贝;getclass是获取对象的类对象 A 编译运行通过,输出结果是88 B 编译时错误,co

    2023年04月17日
    浏览(47)
  • 数据结构:选择题+编程题(每日一练)

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

    2024年02月06日
    浏览(41)
  • 算法设计与分析——选择题

    ​ 1:给定程序时间复杂度的递推公式:T(1)=1,T(N)=2T(N/2)+N。则对该程序时间复杂度最接近的描述是: A.O(logN)     B.O(N)      C.O(NlogN)      D.O(N 2 ) 2:程序P1和P2时间复杂度的递推公式: P1: T(1)=1, T(N)=T(N/2)+1; P2: T(1)=1, T(N)=2T(N/2)+1; 则下列关于两程序时间复杂度的

    2024年02月07日
    浏览(34)
  • 弯道超车必做好题集锦三(C语言选择题)

    编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,每篇大约10题左右。此为第三篇选择题篇,该系列会不定期更新,后续还会开编程题的系列。敬请期待! 1 、请阅读以下程序,其运行结果是() int main () { c

    2024年02月10日
    浏览(33)
  • 云计算第1阶段_Linxu基础知识_day03,Linux运维面试题选择题

    ├── boot ├── dev ├── etc ├── home ├── lib - usr/lib ├── lib64 - usr/lib64 ├── media ├── mnt ├── opt ├── proc ├── root ├── run ├── sbin - usr/sbin ├── srv ├── sys ├── tmp ├── usr └── var 目录介绍(了解): /root #root用户的家目录 /home #存储

    2024年04月13日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包