当前位置: 首页 > news >正文

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day2

🔥个人主页:@草莓熊Lotso

🎬作者简介:C++研发方向学习者

📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》

⭐️人生格言:生活是默默的坚持,毅力是永久的享受。

前言:我们距离学习完C语言已经很久了,在数据结构学完后,博主准备通过这16天的强化训练和大家一起回顾C语言的知识,今天依旧是五道选择和两道编程题,希望大家能有所收获。


目录

选择题:

编程题:

1.尼科彻斯定理

2.等差数列


选择题:

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

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

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

答案解析:

正确答案:A

这里考查转义字符,注意:\\ 表示字符'\',\123表示字符'{',\t表示制表符,这些都是一个字符

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

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

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

答案解析:

正确答案:B

宏只是替换,替换后NUM的样子是(2+1+1)*2+1/2,计算得8

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

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

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

答案解析:

正确答案:C

此题注意静态局部变量的使用,static改变了i的生命周期,第一次调用函数:i初值是1,递归第二次调用函数时,i还是第一次那个变量,值已经变成了2,再一次调用函数时i就是3,依次类推

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

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

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

答案解析:

正确答案:B

const在*的左边,则指针指向的变量的值不可直接通过指针改变(可以通过其他途径改变);在*的右边,则指针的指向不可变。简记为"左定值,右定向",(1)和(2)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: 以上说法都不对

答案解析:

正确答案:D

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


编程题:

1.尼科彻斯定理

题目链接:尼科彻斯定理_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

#include <stdio.h>
#include<math.h>
int main() {int n;while (scanf("%d", &n) != EOF) {int sum=pow(n,3);int s=0;int d=n*(n-1)+1;int e=d+(n-1)*2;while(s<sum){printf("%d",d);s+=d;if(d>1&&d<e) printf("%s","+");d+=2;}}return 0;
}

题目解析:

  • 对于输入正整数 n,先算  ,确定连续奇数序列起始值 d = n*(n - 1) + 1 ,通过循环累加连续 n 个奇数(每次 d += 2 ),输出这些奇数相加形式,满足序列和为  且长度为 n 的要求,能正确解决题目给定输入输出任务 

2.等差数列

题目链接:等差数列_牛客题霸_牛客网

题目描述:

题目示例:

代码演示:

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

题目解析:

  • 这道题了解了等差数列求和公式 Sn=n(a1+an)/2 就简单了 ,根据题目得知 a1=2 ,而等差数列第n项也有具体公式an=a1+(n-1)d ,而公差为3, 这时候只需要套入公式计算即可

往期回顾:

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day1

结语:本篇博客就到此结束了,C 语言的精髓在于对细节的掌控和对底层的理解,这需要持续实践。愿你带着这份训练中获得的思维与习惯,在编程路上走得更稳、更远。如果文章对你有帮助的话,欢迎评论,点赞,收藏加关注,感谢大家的支持。

http://www.dtcms.com/a/327699.html

相关文章:

  • 嵌入式 - Linux软件编程:文件IO
  • 零售业CRM实战:如何打通线上线下客户数据?
  • Ansible 基本使用
  • UE官方文档学习 C++ TAarry 查询(三)Contain,Find函数的使用
  • Redis--day4--实战-黑马点评--搭建环境
  • WPS JS宏 通用方法整理汇总 实时更新
  • 【Vue 3 响应式系统深度解析:reactive vs ref 全面对比】
  • MySQL(下)
  • C语言入门完结篇_结构体、枚举、时间函数的、变量类型(C语言划分内存各个区块的方法)、文件操作
  • MyBatis 缓存与 Spring 事务相关笔记
  • Spring-Cache 缓存数据
  • damn the jvm again(2)
  • 编程模型设计空间的决策思路
  • 什么是跨域访问问题,如何解决?
  • Windows怎样配置动态磁盘
  • [SC]SystemC中的SC_FORK和SC_JOIN用法详细介绍
  • android端自定义通话通知
  • VUE的8个生命周期
  • Orange的运维学习日记--41.Ansible基础入门
  • sqli-labs通关笔记-第44关 POST字符型堆叠注入(单引号闭合 手工注入+脚本注入3种方法)
  • demo 英雄热度榜 (条件筛选—高亮切换—列表渲染—日期显示)
  • Full GC 频率优化实战
  • RGWRados::get_obj_state_impl()
  • 25C机场航班调度程序(JS 100)
  • 【智能硬件】2025年儿童智能手表革命:守护隐私的科技堡垒
  • AQS的理解
  • B树索引和B+树索引有什么区别?
  • 编译 BusyBox for ARM 平台
  • 数据结构:图
  • 1、正则表达式入门