C语言假期作业 DAY 02

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: C语言假期作业 DAY 02

题目

一、选择题

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(c)

B: 对于某个double变量 a,可以使用 a == 0.0 来判断其是否为零

C: 初始化方式 char a[14] = "Hello, world!"; 和char a[14]; a = "Hello, world!";的效果相同

D: 以上说法都不对


二、编程题

1、验证尼科彻斯定理

即:任何一个整数 m 的立方都可以写成 m 个连续奇数之和。例如:


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

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


例如:

1^3=1

2^3=3+5

3^3=7+9+11

4^3=13+15+17+19

输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。


数据范围:1≤�≤100 1≤m≤100


进阶:时间复杂度:�(�) O(m) ,空间复杂度:�(1) O(1)


输入描述:

输入一个int整数


输出描述:

输出分解后的string

尼科彻斯定理_牛客题霸_牛客网 (nowcoder.com)【牛客网题号: HJ76 尼科彻斯定理】【难度:简单】


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

2、等差数列

描述

等差数列 2,5,8,11,14。。。。


(从 2 开始的 3 为公差的等差数列)


输出求等差数列前n项和


数据范围: 1≤�≤1000 1≤n≤1000


输入描述:

输入一个正整数n。


输出描述:

输出一个相加后的整数。

等差数列_牛客题霸_牛客网 (nowcoder.com)【牛客网题号: HJ100 等差数列】


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

题解

一、选择题

1、【答案解析】

正确答案: A

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


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


二、编程题

1 、【答案解析】:

这道题的关键在于知道规律后,能够找到第 n 个数据立方的起始奇数,从这个起始奇数开始,组成连续的 n 个奇数项之和的表达式即可。

比如: 3^3 的起始奇数是 7 , 则 {7, 9, 11} 3 个奇数求和表达式 7 + 9 + 11 。

而起始奇数有个规则: m^3 的起始奇数值等于 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

因此当有了需求m的立方,首先计算他的第一个奇数项是总体的第几个 。

等差数列求和公式 Sn = n(a1 + an) / 2 m * (m - 1) / 2

等差数列第n项公式 an = a1 + (n - 1)d 1 + ((m * (m - 1) / 2) + 1 - 1) * 2

最终得到m的立方的表达式起始奇数: m * (m - 1) + 1


int main() 
{
    int n = 0;
    while(~scanf("%d", &n))
    {
        int i = 0;
        int count = 0;
        for(i=1; count<n-1; i+=2)
        {
            printf("%d+",n*(n-1)+i);
            count++;
        }
        printf("%d",n*(n-1)+i);
    }
    return 0;
}


2、【答案解析】

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


#include <stdio.h>
int main() {
    int n=0;
    int num=0;
    int b=2;
    int i=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        num+=b;
        b+=3;
    }
    printf("%d",num);
    return 0;
}


相关文章
|
7月前
|
C语言
[日常]C语言作业详解12_17(题型对应知识点)
[日常]C语言作业详解12_17(题型对应知识点)
72 0
|
7月前
|
算法 程序员 编译器
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
55 0
|
7月前
|
存储 Linux C语言
C语言初阶⑥(操作符详解)编程作业(算数转换)(下)
C语言初阶⑥(操作符详解)编程作业(算数转换)
40 1
|
7月前
|
存储 C语言
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)(下)
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)
43 1
|
7月前
|
存储 C语言 索引
C语言初阶⑥(操作符详解)编程作业(算数转换)(上)
C语言初阶⑥(操作符详解)编程作业(算数转换)
48 0
|
7月前
|
存储 C语言
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)(上)
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)
43 0
|
7月前
|
存储 人工智能 搜索推荐
【C语言进阶】 假期测评①
【C语言进阶】 假期测评①
63 2
|
7月前
|
存储 安全 BI
【C语言进阶】假期测评②
【C语言进阶】假期测评②
71 1
|
7月前
|
存储 测试技术 C语言
【C语言进阶】 假期测评③
【C语言进阶】 假期测评③
77 1
|
7月前
|
存储 C语言
C语言进阶---------作业复习
C语言进阶---------作业复习