c语言每日一练(2)

前言:
每日一练系列,每一期都包含5道选择题,2道编程题,博主会尽可能详细地进行讲解,令初学者也能听的清晰。每日一练系列会持续更新,暑假时三天之内必有一更,到了开学之后,将看学业情况更新。

5道选择题: 

1、以下程序段的输出结果是()

#include<stdio.h>
#include<string.h>
int main()
{
char s[] = "\\123456\123456\t";
printf("%d\n", strlen(s));
return 0;
}

A.12    B.13    C.16    D.以上都不对

解析:根据题目分析可知,这串代码的作用是用来计算字符串s的长度的   strlen函数的特性则是在遇到\0的时候会停止访问,而字符串末尾都会有\0,虽然你看不到。关于strlen博主之前也写过一篇博客介绍,对strlen函数不是很理解的朋友们可以去看看。手把手教你玩转常用字符串函数(包含模拟实现)_大海里的番茄的博客-CSDN博客

既然是计算字符串的长度,那么我们要做的就是数一数s这个字符串有多长    \是一种转义字符,\修饰\的意思是,转义第二个\使第二个\就是一个普通的字符,因此,这两个\\加在一起才是1个字符  123456,有6个字符,6+1就是7个字符。

接着走,又遇到\了,\后面带数字,代表着后面的数是八进制的数,且最多为三位    因此把\123看作一个整体,视为一个字符,7+1现在有8个字符,456三个字符,8+3有11个字符,最后的\t看作一个字符,故最后有12个字符,答案选A

很多小伙伴会忘记转义字符的具体内容,这里博主把之前整理的内容给大家。

 

2、若有以下程序,则运行后的输出结果是( )

#include<stdio.h>
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
int main()
{printf("%d\n", NUM);return 0;
}

A.4   B.8   C.9    D.6

 解析:宏定义就是在进行操作之前先将对应的代码替换成对应的宏。这串代码想要打印NUM,而NUM有宏定义,所以在操作之前先将NUM替换成对应的宏,替换结果为(M+1)*M/2,M有宏定义,继续替换,替换结果为(N+1+1)*N+1/2,注意,只是替换,不要画蛇添足加什么括号,根据宏定义来,它怎么定义的你就怎么替换。N有宏定义,替换结果为(2+1+1)*2+1/2,计算结果为8.5,但printf准备打印整型数据,那么就会导致数据丢失,打印出8

 

 3、如下函数的 f(1) 的值为( )

int f(int n)
{
static int i = 1;
if(n >= 5)
return n;
n = n + i;
i++;
return f(n);
}

 A.5    B.6    C.7    D.8

 解析:根据题意可知,我们的目标是f(1),调用int f(int n)函数时传1时f的返回值就是我们的答案。走进函数将n看作1,首先函数定义了一个静态变量i,并初始化为1,静态变量的意义就是不会随着函数调用的结束而销毁,它只会在程序结束之后销毁,同样它也只会创建一次,也就是说static int i=1只会走一次    if(n>=5)就是说当n>=5时才会触发,先跳过,n=n+i,那么此时n=2,继续走,i++,i为2,返回f(2),继续进入f()函数,但这次传的是2,i也是2,那么n最后会是4,i会是3,继续递归,n还是没>=5,n=n+i使n为7,i++使i为4,继续递归,这次n为7,n>=5了,中止函数,返回7。故答案选C

 4、下面3段程序代码的效果一样吗( )

int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

A.(2)=(3)    B.(1)=(2)    C.都不一样    D.都一样

解析:const修饰指针变量的效果,是根据const和*之间的相对位置来决定的    const放在*的左边意味着对应的指针不能被修改,放在*的右边意味着指针所指向的内容不能被修改。那么观察题目我们只需要找相对位置一样的即可,不难发现,(1)和(2)const和*的相对位置都是const在*的右边,故效果一样,而(3)的const放在*的右侧,效果不一样。故选B

5、对于下面的说法,正确的是( )
A.对于 struct X{short s;int i;char c;},sizeof(X)等于sizeof(s) + sizeof(i) + sizeof(c)
B.对于某个double变量 a,可以使用 a == 0.0 来判断其是否为零
C.初始化方式 char a[14] = "Hello, world!"; 和char a[14]; a = "Hello, world!";的效果相同
D.以上说法均不对

解析:结构体的大小是需要通过对齐实现的,A选项的X的大小是这样计算的,short型,占两个字节,偏移量为0和1的位置被占据,int型占4个字节,因此得对齐到偏移量为4的倍数的位置,因此,偏移量为4,5,6,7被占据,而偏移量为1,2,3的空间被浪费,char型占1个字节,它不用对齐,所以偏移量为8的位置被占据,大小为9,再根据内存对齐的规则,要对齐到最大对齐数的倍数,也就是4的倍数,10,11被浪费,最后的结构体计算结果为12和2+4+1=8是有所不同的。

对于结构体对齐内容不理解的朋友可以去看下博主之前写的自定义类型详解,里面有关于这一问题的详细叙述

自定义类型详解_大海里的番茄的博客-CSDN博客

 B选项,考察double类型的比较,由于浮点数存在误差,不能直接判断两个数是否相等,通常采用比较两数之差的绝对值是否小于一个很小的数字(具体的可自己设定这样一个数,作为误差)来确定是否相等。C选项,a为数组首地址是常量不能改变,所以A,B,C都是错的,故答案为D

编程题1: 

P5717 【深基3.习8】三角形分类 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 唯一需要注意的就是锐角和钝角的判断,因为很多人都把它们的判断方法忘记了

两条较短边的平方和大于最长边的平方,此三角形就是锐角三角形

两条较短边的平方和小于最长边的平方,此三角形就是钝角三角形

#include<stdio.h>
int main()
{int a=0;int b=0;int c=0;//代表着三角形的三边scanf("%d %d %d",&a,&b,&c);int max=a>b?a:b;max=max>c?max:c;//计算出三边的最大边int min=a>b?b:a;min=a>min?min:a;//计算出三边的最小边 int sum=a+b+c;//三边总和a=max;//令a为最大边b=sum-min-max;//令b为中间边c=min;//令c为最小边if(b+c<=a)//三角形成立条件,两边之和大于第三边,不满足肯定不是三角形//拿较小的两条边来比较,如果较小的两边之和都能大于第三边就一定是三角形{printf("Not triangle");}else//是三角形才能进行后面的判断{if(b*b+c*c==a*a)//勾股定理判直角{printf("Right triangle\n");}else if(b*b+c*c>a*a){printf("Acute triangle\n");}else if(b*b+c*c<a*a){printf("Obtuse triangle\n");}if(a==b||b==c||c==a)//等腰三角形判断{printf("Isosceles triangle\n");if(a==b&&b==c)//先是等腰才是等边{printf("Equilateral triangle\n");}}}
}

编程题2:

等差数列_牛客题霸_牛客网

根据等差数列的公式     首末相加*项数/2即是答案,那么计算首末端即可 

#include <stdio.h>
int main() {
int head=0;
int end=0;
int n=0;
scanf("%d",&n);
head=2;
end=2+(n-1)*3;
printf("%d",(head+end)*n/2);
}

好了,今天的练习到这里就结束了,感谢各位友友的来访,祝各位友友前程似锦O(∩_∩)O

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

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

相关文章

Nginx启动报错- Failed to start The nginx HTTP and reverse proxy server

根据日志&#xff0c;仍然出现 “bind() to 0.0.0.0:8888 failed (13: Permission denied)” 错误。这意味着 Nginx 仍然无法绑定到 8888 端口&#xff0c;即使使用 root 权限。 请执行以下操作来进一步排查问题&#xff1a; 确保没有其他进程占用 8888 端口&#xff1a;使用以…

python#django数据库一对一/一对多/多对多

一对一OneToOneField 用户和用户信息 搭建 # 一对一 class TestUser(models.Model): usernamemodels.CharField(max_length32) password models.CharField(max_length32) class TestInfo(models.Model): mick_namemodels.CharField(max_length32) usermode…

企业计算机服务器中了locked勒索病毒怎么办,如何预防勒索病毒攻击

计算机服务器是企业的关键信息基础设备&#xff0c;随着计算机技术的不断发展&#xff0c;企业的计算机服务器也成为了众多勒索者的攻击目标&#xff0c;勒索病毒成为当下计算机服务器的主要攻击目标。近期&#xff0c;我们收到很多企业的求助&#xff0c;企业的服务器被locked…

leaflet-uniapp 缩放地图的同时 显示当前缩放层级

记录实现过程&#xff1a; 需求为移动端用户在使用地图时&#xff0c;缩放地图的同时&#xff0c;可以获知地图此时缩放的级别。 效果图如下&#xff1a;此时缩放地图级别为13 map.on() 有对应的诸多行为 查看官网即可&#xff0c;这里根据需要为--zoomstart zoom zoomend 代…

Crowd-Robot Interaction 论文阅读

论文信息 题目&#xff1a;Crowd-Robot Interaction:Crowd-aware Robot Navigation with Attention-based Deep Reinforcement Learning 作者&#xff1a;Changan Chen, Y uejiang Liu 代码地址&#xff1a;https://github.com/vita-epfl/CrowdNav 来源&#xff1a;arXiv 时间…

【Linux】网络套接字知识点补足

目录 1 地址转换函数 1.1 字符串转in_addr的函数: 1.2 in_addr转字符串的函数: 1.3 关于inet_ntoa 2 TCP协议通讯流程 1 地址转换函数 本节只介绍基于IPv4的socket网络编程,sockaddr_in中的成员struct in_addr sin_addr表示32位 的IP 地址但是我们通常用点分十进制的字符串…

无涯教程-Perl - bind函数

描述 此功能将网络地址绑定到由SOCKET标识的文件句柄。地址应该是用于打开的Socket的适当类型的打包地址。 语法 以下是此函数的简单语法- bind SOCKET, ADDRESS 返回值 如果失败,此函数返回0,如果成功,则返回1。 Perl 中的 bind函数 - 无涯教程网无涯教程网提供描述此功能…

day52-Redis

Redis 1.Redis 1.1 RESP连接Redis 1.2 定义&#xff1a;是一个高性能的key-value数据库&#xff08;非关系型数据库&#xff09; 1.3 数据类型&#xff1a; key键的类型是字符串类型&#xff1b; 值的类型有五种&#xff1a;字符串String&#xff0c;哈希hash&#xff0…

pygame贪吃蛇游戏

pygame贪吃蛇游戏 贪吃蛇游戏通过enter键启动&#xff0c;贪吃蛇通过WSAD进行上下左右移动&#xff0c;每次在游戏区域中随机生成一个食物&#xff0c;每次吃完食物后&#xff0c;蛇变长并且获得积分&#xff1b;按空格键暂停。 贪吃蛇 import random, sys, time, pygame from …

AR远程专家指导在汽车改装上的应用有哪些?

随着科技的不断发展&#xff0c;AR增强现实技术逐渐走进了我们的生活。加上商贸国际化&#xff0c;远程协同纵深到制造生产的更多环节&#xff0c;研发协同、工艺优化等场景复杂、跨层级、需要频繁沟通确认的流程正通过AR应用实现全面远程化的过渡&#xff0c;在汽车行业&#…

JVM入门到精通

一、JVM概念 1.1、什么是JVM Java Virtual Machine&#xff1a;Java虚拟机&#xff0c;用来保证Java语言跨平台 Java虚拟机可以看做是一台抽象的计算机&#xff0c;如同真实的计算机那样&#xff0c;它有自己的指令集以及各种运行时内存区域 Java虚拟机与Java语言并没有必然…

【数据结构】常见的排序算法

常见的排序算法 常见的排序算法插入排序之直接插入排序时间复杂度特性总结 插入排序之希尔排序时间复杂度 选择排序之直接选择排序特性总结 选择排序之堆排序时间复杂度特性总结 交换排序之冒泡排序特性总结 交换排序之快速排序hoare版本挖坑法双指针法快速排序的优化1&#xf…

【Python基础教程】super()函数的正确使用方法

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 1.super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了,super()内也可不加参数 2.规律是super是按调用的次序执行&#xff0c;super后面的语句是逆向执行的。 有2段示例代码&#xff0c;不同的在于value有没…

NB-IOT 和蜂窝通信(2/3/4/5G)的区别和特点是什么?

NB-IOT 和蜂窝通信(2/3/4/5G)的区别和特点是什么? 参考链接:https://www.sohu.com/a/221664826_472880 NB IOT是窄带物联网技术,主要解决的是低速率数据传输,可使用GSM900或DCS1800频段,在频段使用上比较灵活,可以和GSM,UMTS或LTE共存,具备优异的MCL(最小耦合损耗…

Vue3 条件渲染简单应用

去官网学习-》条件渲染 | Vue.js 运行示例&#xff1a; 代码&#xff1a;HelloWorld.vue <template><div class"hello"><h1>Vue 条件渲染</h1><h2 v-if"flag">true显示内容</h2><h2 v-if"flag2">fal…

我的创作5周年纪念日

机缘 CSDN在 SEO 方面做得很好。所以容易接触到。 然后就尝试使用了。没想到已经5年了。 收获 写blog其实是对知识的总结&#xff0c;能让自己更好的分享交流&#xff0c;让自己能和其他技术者一起交流迭代&#xff0c;并且把技术内容不断做好&#xff0c;让更多人通过技术…

【周末闲谈】“深度学习”,人工智能也要学习?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录 系列目录前言机器学习深度学习深度学习的三在种方法深度学习讲解…

据说这是最详细的,HttpRunner接口自动化框架讲解,直接上高速...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 框架简介 HttpRu…

Golang之路---02 基础语法——函数

函数 由于Golang语言是编译型语言&#xff0c;所以函数编写的顺序是无关紧要的&#xff0c;它不像 Python 那样&#xff0c;函数在位置上需要定义在调用之前。 函数定义 func function_name( [parameter list] ) [return_types] {函数体 }参数解释&#xff1a; func&#x…

Java实现数字加密

Java实现数字加密 需求分析代码实现小结Time 需求分析 1.首先&#xff0c;考虑方法是否需要接收数据处理&#xff1f; 需要一个4位数&#xff0c;至于是哪一个数&#xff0c;让方法的调用者传递。 所以&#xff0c;方法的参数&#xff0c;就是这个需要加密的四位数 2.接着&…