C语言日常刷题 2

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


题目

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

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

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

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

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

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: 都一样

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

6、验证尼科彻斯定理,即:任何一个整数 m 的立方都可以写成 m 个连续奇数之和。例如:

1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19

示例:
输入:6
输出:31+33+35+37+39+41

7、等差数列 2,5,8,11,14, ……(从 2 开始的 3 为公差的等差数列),求等差数列前 n 项和。0 =< n <=1000。

示例:
输入:2 输入:275
输出:7 输出:113575
说明:2+5=7 说明:2+5+…+821+824=113575

答案与解析

1、

正确答案:A
这里考查转义字符,注意:\ 表示字符’‘,\123表示字符’{',\t表示制表符,这些都是一个字符

int main()
{
    char s[] = "\\123456\123456\t";
    \\ '\\' 用于表示一个反斜杠,防止它被解释为一个转义序列符。
    \\ '\ddd' ddd表示1~3个八进制的数字。 如: \130 X
    \\ '\t' 水平制表符
    printf("%d\n", strlen(s));
    return 0;
}

2、

正确答案:B
宏只是替换,替换后NUM的样子是(2+1+1)*2+1/2,计算得8

3、

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

4、

正确答案:B
const在的左边,则指针指向的变量的值不可直接通过指针改变(可以通过其他途径改变);在的右边,则指针的指向不可变。简记为"左定值,右定向",(1)和(2)const都在的左边,(3)中const在的右边,所以应该选择B。

5、

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

6、

解法一:

//m个连续奇数其实就是一个公差为2,共有m项的等差数列
//由等差数列前n项和公式:Sn=(n(a1+an))/2
// 第n项公式:an=a1+(n-1)d
//设m个连续奇数组成的等差数列的首项为i
//那么前m项和为:( m (i+ (i+2(m-1)) ) )/2
//即 m * i + m * (m - 1)
int main()
{
    int m = 0;
    scanf("%d", &m);
    int i = 1;//奇数开头
    int j = 0;
    int count = m * m * m;//设m的立方为count
    while (i > 0)
    {
        if (m * i + m * (m - 1) == count)//整数m的立方与m个连续奇数之和相等
        {
            for (j = 0; j < m; j++)//负责打印
            {
                if (j == m - 1)//最后一个数时不用打印 + 号
                    printf("%d", i);
                else
                {
                    printf("%d+", i);
                }
                i += 2;
            }
            break;
        }
        i += 2;//每次增加2,所得都为奇数
    }
    return 0;
}

解法2:

nt 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原先的数据,和奇数
sprintf(buf, "%s+%d", buf, start+=2);
}
printf("%s\n", buf);
}
return 0;
}

7、

解法1:

int main()
{
    int n = 0;
    int i = 0;
    int j = 2;
    int count = 0;
    scanf("%d", &n);
    if (n >= 1 && n <= 1000)//判段n是否在正确范围
    {
        for (i = 0; i < n; i++)//前n项
        {
            count += j;
            j += 3;//公差为3
        }
    }
    printf("%d", count);
    return 0;
}

解法2:文章来源地址https://www.toymoban.com/news/detail-672366.html

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;
}

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

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

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

相关文章

  • python日常刷题(一)

    前言:本文记录2024年3月11日至2024年3月19日牛客网所做的基础题目(错题本): 🎬个人简介:努力学习ing 📋本专栏:python日常刷题 🎀CSDN主页:愚润求学 我写的: I get it: 1,将数据通过append依次存入列表 2,两数交换( a,b = b,a ) 要输出[1,2,3,4,1]: 注意 input() 以后要转为

    2024年03月24日
    浏览(34)
  • JAVA日常刷题

    ꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ ა 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶ 个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 系列专栏

    2024年02月05日
    浏览(36)
  • 刷题日常计~JS①

    @作者 : SYFStrive @博客首页 : 点击跳转HomePage 📜: 初编程 JavaScript 之每天10题 👉 从质变到量变💪 📌: 个人社区(欢迎大佬们加入) 👉: 社区链接🔗 💃: 学累了可以先看看由jieke给大家带来的舞蹈,欢迎大家观看 🔗: 点击直接阅读文章 ①:👉 JS入门到精通 (🔥待更

    2023年04月08日
    浏览(33)
  • 日常刷题 无代码(长期更新

    1401F 线段树题 我们可以考虑为反转 子树 1579g 可以二分 因为会有负数 所以我会把 开始的位置 为 0-mid 然后dp 459e 边权从小到大加入 没有后效性 直接dp 372b 前缀和 1151e 点=边+连通块 见了两次了 这下记住了 505C 直接dp复杂度不对 我们优化一下 dp[i][j] 表示目前到了i 和d偏移了j的

    2024年02月08日
    浏览(38)
  • 【日常聊聊】自然语言处理的发展

    🍎 个人博客: 个人主页 🏆 个人专栏:   日常聊聊 ⛳️   功不唐捐,玉汝于成 目录 前言 正文 技术进步 应用场景 挑战与前景 伦理和社会影响 实践经验 结语 我的其他博客 自然语言处理(NLP)技术的快速发展正在深刻改变我们与计算机和数字世界交互的方式。通过深度

    2024年01月21日
    浏览(49)
  • Git 日常开发使用命令

    Git 生成密钥 cd ~/.ssh 新增密钥:ssh-keygen -t rsa -C \\\"你的邮箱\\\" 打开文件:cat id_rsa.pub 删除密钥:mkdir key_backupcp id_rsa* key_backup rm id_rsa*  Git 创建分支及删除分支 创建test分支:git branch test 切换到test分支:git checkout test 删除本地分支:git branch -d \\\"本地分支名\\\" 删除远程分支:git p

    2023年04月18日
    浏览(43)
  • 日常开发报错记录

    20230424 python3.7中报错:No module named ‘typing_extensions‘  在网上找到的解决办法:【pytorch】错误:No module named ‘typing_extensions‘ 问题解决_no module named typing_污喵王z的博客-CSDN博客 就是将缺失的文件typing_extensions.py,补充到路径:…envspy3.7Libtyping.py的同目录下,但发现github上

    2023年04月22日
    浏览(50)
  • 梳理日常开发涉及的负载均衡

    负载均衡是当前分布式微服务时代最能提及的词之一,出于对分层、解耦、弱依赖、可配置、可靠性等概念的解读,一对一的模式变得不再可信赖,千变万化的网络环境中,冗余和备份显得格外重要,稍大型的系统就会存在大量微服务、服务器、中间件资源,如何将各个资源

    2024年02月14日
    浏览(37)
  • 日常开发中代码技巧(个人使用)

    String,StringBuffer判断非空 String判断非空 参考:https://blog.csdn.net/Echo_width/article/details/79653704 首先,区分空串和null串 1 空串\\\"\\\"是长度为0的字符串,它有自己的串长度(0)和内容(空),判断一个字符串为空的方法: 2、 null串表示目前没有任何对象与该变量关联,检查一个字符

    2024年02月05日
    浏览(45)
  • A2C算法原理及代码实现

    本文主要参考王树森老师的强化学习课程 A2C算法是策略学习中比较经典的一个算法,是在 Barto 等人1983年提出的。我们知道策略梯度方法用策略梯度更新策略网络参数 θ,从而增大目标函数,即下面的随机梯度: Actor-Critic 方法中用一个神经网络近似动作价值函数 Q π (s,a),这

    2024年02月03日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包