专业的佛山网站设计,wordpress企业中文模板下载,公司网络系统维护,建筑方案设计说明范文前言#xff1a; 每日一练系列#xff0c;每一期都包含5道选择题#xff0c;2道编程题#xff0c;博主会尽可能详细地进行讲解#xff0c;令初学者也能听的清晰。每日一练系列会持续更新#xff0c;暑假时三天之内必有一更#xff0c;到了开学之后#xff0c;将看学业情… 前言 每日一练系列每一期都包含5道选择题2道编程题博主会尽可能详细地进行讲解令初学者也能听的清晰。每日一练系列会持续更新暑假时三天之内必有一更到了开学之后将看学业情况更新。 5道选择题
1、以下程序段的输出结果是 #includestdio.h
#includestring.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个字符61就是7个字符。 接着走又遇到\了\后面带数字代表着后面的数是八进制的数且最多为三位 因此把\123看作一个整体视为一个字符71现在有8个字符456三个字符83有11个字符最后的\t看作一个字符故最后有12个字符答案选A 很多小伙伴会忘记转义字符的具体内容这里博主把之前整理的内容给大家。 2、若有以下程序则运行后的输出结果是
#includestdio.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替换成对应的宏替换结果为(M1)*M/2M有宏定义继续替换替换结果为(N11)*N1/2注意只是替换不要画蛇添足加什么括号根据宏定义来它怎么定义的你就怎么替换。N有宏定义替换结果为(211)*21/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 i1只会走一次 if(n5)就是说当n5时才会触发先跳过nni那么此时n2继续走ii为2返回f(2),继续进入f()函数但这次传的是2i也是2那么n最后会是4i会是3继续递归n还是没5nni使n为7i使i为4继续递归这次n为7n5了中止函数返回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的倍数的位置因此,偏移量为4567被占据而偏移量为123的空间被浪费char型占1个字节它不用对齐所以偏移量为8的位置被占据大小为9再根据内存对齐的规则要对齐到最大对齐数的倍数也就是4的倍数1011被浪费最后的结构体计算结果为12和2418是有所不同的。 对于结构体对齐内容不理解的朋友可以去看下博主之前写的自定义类型详解里面有关于这一问题的详细叙述
自定义类型详解_大海里的番茄的博客-CSDN博客 B选项考察double类型的比较由于浮点数存在误差不能直接判断两个数是否相等通常采用比较两数之差的绝对值是否小于一个很小的数字具体的可自己设定这样一个数作为误差来确定是否相等。C选项a为数组首地址是常量不能改变所以A,B,C都是错的故答案为D 编程题1
P5717 【深基3.习8】三角形分类 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 唯一需要注意的就是锐角和钝角的判断因为很多人都把它们的判断方法忘记了
两条较短边的平方和大于最长边的平方,此三角形就是锐角三角形
两条较短边的平方和小于最长边的平方,此三角形就是钝角三角形
#includestdio.h
int main()
{int a0;int b0;int c0;//代表着三角形的三边scanf(%d %d %d,a,b,c);int maxab?a:b;maxmaxc?max:c;//计算出三边的最大边int minab?b:a;minamin?min:a;//计算出三边的最小边 int sumabc;//三边总和amax;//令a为最大边bsum-min-max;//令b为中间边cmin;//令c为最小边if(bca)//三角形成立条件两边之和大于第三边不满足肯定不是三角形//拿较小的两条边来比较如果较小的两边之和都能大于第三边就一定是三角形{printf(Not triangle);}else//是三角形才能进行后面的判断{if(b*bc*ca*a)//勾股定理判直角{printf(Right triangle\n);}else if(b*bc*ca*a){printf(Acute triangle\n);}else if(b*bc*ca*a){printf(Obtuse triangle\n);}if(ab||bc||ca)//等腰三角形判断{printf(Isosceles triangle\n);if(abbc)//先是等腰才是等边{printf(Equilateral triangle\n);}}}
}
编程题2
等差数列_牛客题霸_牛客网 根据等差数列的公式 首末相加*项数/2即是答案那么计算首末端即可
#include stdio.h
int main() {
int head0;
int end0;
int n0;
scanf(%d,n);
head2;
end2(n-1)*3;
printf(%d,(headend)*n/2);
}
好了今天的练习到这里就结束了感谢各位友友的来访祝各位友友前程似锦O(∩_∩)O