考试类网站如何做,网站开发一定得用html吗,建立网站需要哪些,正规现货交易平台app#x1f493;博客主页#xff1a;江池俊的博客⏩收录专栏#xff1a;C语言刷题专栏#x1f449;专栏推荐#xff1a;✅C语言初阶之路 ✅C语言进阶之路#x1f4bb;代码仓库#xff1a;江池俊的代码仓库#x1f389;欢迎大家点赞#x1f44d;评论#x1f4dd;收藏⭐ 文… 博客主页江池俊的博客⏩收录专栏C语言刷题专栏专栏推荐✅C语言初阶之路 ✅C语言进阶之路代码仓库江池俊的代码仓库欢迎大家点赞评论收藏⭐ 文章目录 选择题编程题尼科彻斯定理等差数列 前言 本专栏每篇练习将包括 5个选择题 2个编程题将涵盖C语言的不同方面包括基础语法、数据类型、控制结构、数组、指针和函数等。通过练习你将逐步掌握C语言的基础知识和常见问题提高你的编程技巧和解决问题的能力。我希望这个博客能够为你提供有价值的练习资源让你在实践中不断进步。同时我们也鼓励你在练习过程中进行思考和创新尝试使用不同的编程方法和技巧。让我们一起挑战C语言练习题攻克每一个难点不断提升自己的编程技能在评论区分享你的练习心得和问题与我们一起交流和成长。 选择题
以下程序段的输出结果是
#includestdio.h
int main()
{char s[] \\123456\123456\t;printf(%d\n, strlen(s));return 0;
}A: 12 B: 13 C: 16 D: 以上都不对 正确答案A 【解析】 这里考查转义字符注意\ \ 表示字符 ’ \ \123 表示字符 ‘{’\t 表示制表符这些都是一个字符。 若有以下程序则运行后的输出结果是
#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 正确答案B 【解析】 宏只是替换替换后NUM的样子是(211)*21/2计算得8。 如下函数的 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 正确答案C 【解析】 此题注意静态局部变量的使用static改变了i的生命周期第一次调用函数i初值是1递归第二次调用函数时i还是第一次那个变量值已经变成了2再一次调用函数时i就是3依次类推. 下面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: 都一样 正确答案B 【解析】 const在 * 的左边则指针指向的变量的值不可直接通过指针改变(可以通过其他途径改变);在 * 的右边则指针的指向不可变。简记为 “左定值右定向” (1)和(2)const都在 * 的左边(3)中const在 * 的右边所以应该选择B。 对于下面的说法正确的是
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 编程题
尼科彻斯定理
【牛客网链接HJ76 尼科彻斯定理】
【题目信息】 【答案解析】
这道题的关键在于知道规律后能够找到第 n 个数据立方的 起始奇数从这个起始奇数开始组成连续的n个奇数 项之和的表达式即可。比如 33 的起始奇数是 7 则 {7, 9, 11} 3个奇数求和表达式 7 9 11 。 而起始奇数有个规则 m3 的起始奇数值等于 m * (m - 1) 1
奇数起始项规律
首先所有奇数项构成一个差值为2的等差数列 1 3 5 7 9 ....
其次1的起始奇数是第1个等差数列项2的起始奇数是第2个等差数列项3的起始奇数是第4个等差数列项...
形成规律
1 2 4 7....而他们的差值分别是1 2 3 4 5...所以第n项的起始奇数就是一个从1开始到n-1的等差数列1 2 3 4 5....之和1
因此,
当需要求m的立方的起始奇数时首先计算他的第一个奇数项是总体的第几个然后再根据等差数列1 3 5 7 9...求这个起始奇数。
等差数列求和公式 Snn(a1an)/2 --- m * (m - 1) / 2 计算奇数项是总体的第几个
等差数列第n项公式 ana1(n-1)d --- 1 (m * (m - 1) / 2) 1 - 1) * 2 计算这个起始奇数的值
最终得到m的立方的表达式起始奇数 m * (m - 1) 1 最终的表达式//代码 1
#include stdio.h
int main() {int m 0;while (scanf(%d, m) ! EOF) {int start m * m - m 1;//找到起始奇数printf(%d, start);//先打印出起始奇数for (int i 1; i m; i) //依次打印后面连续的m-1个奇数{printf(%d, start 2 * i);}printf(\n);}return 0;
}//代码 2
#include stdio.h
int main()
{int m;while (~scanf(%d, m)) {int start m * (m - 1) 1;//找到对应m^3的起始奇数char buf[10240] { 0 };//sprintf(buf, format, ...) 与printf用法类似格式化字符串但是不用于打印而是放到一个buf数组中sprintf(buf, %d, start);//先将起始奇数转换成为字符串存入buf中for (int i 1; i m; i) {//然后将紧随其后的m-1个奇数数字转换为字符串按照指定格式放入buf中//%s%d, 要求先有一个字符串然后是符号然后是个数字的格式buf对应原先的数据start 2对应紧随其后的奇数sprintf(buf, %s%d, buf, start 2);}printf(%s\n, buf);} return 0;
}【拓展】sprintf 函数
下面是一些使用sprintf的例子
基本的格式化
#include stdio.hint main() {char buffer[50];int a 10;float b 3.14;sprintf(buffer, 整数是 %d, 浮点数是 %f, a, b);printf(%s\n, buffer); // 输出: 整数是 10, 浮点数是 3.140000return 0;
}使用标志符
#include stdio.hint main() {char buffer[50];int a 10;float b 3.14;sprintf(buffer, 整数是 %2d, 浮点数是 %6.2f, a, b);printf(%s\n, buffer); // 输出: 整数是 10, 浮点数是 3.1400return 0;
}在这个例子中%2d表示将整数输出为至少两位的数如果不足两位则在前面补一个空格。%6.2f表示将浮点数输出为至少6位的数其中小数点后有两位如果不足则补0。
这只是sprintf函数的基本用法实际上它还有许多更复杂的用法和标志符可以用来处理各种复杂的字符串格式化需求。 等差数列
【牛客网链接HJ100 等差数列】
【题目信息】 【答案解析】
这道题了解了等差数列求和公式 Snn(a1an)/2 就简单了 根据题目得知 a12 而等差数列第n项也有具体公式 ana1(n-1)d 而公差为3 这时候只需要套入公式计算即可。
#include stdio.h
int main()
{int n, a1 2;while (~scanf(%d, n)) {int an a1 (n - 1) * 3;//等差数列第n项计算printf(%d\n, n * (a1 an) / 2); //等差数列求和打印} return 0;
}这题也可以遍历一遍等差数列依次求和。
#includestdio.h
int main() {int n;while (EOF ! scanf(%d, n)) {int sum 0;for (int i 2; i 3* n2; i3) //等差数列第n项的值为3*(n-1)2{sum i;//计算前n项和}printf(%d\n, sum);}return 0;
}今天的内容就到这里了有什么问题的话欢迎大家在评论区讨论也可以私信博主为你解答如果觉得博主的文章还不错的话 请三连支持一下博主哦