
转义字符
\\ 表示字符'\',\123表示字符'{',\t表示制表符,这些都是一个字符
 

 宏只是替换
替换后NUM的样子是(2+1+1)*2+1/2
 

 常量指针与指针常量
const和* 来区别,如果是const * 这样的顺序就是常量指针,所以说他的本质是指针,如果是* const 那么就是指针常量,本质是常量,所以说第一个和第二个都是常量指针,而第三个是指针常量,所以选择b
只看const,第一个和第二个都是const*a,所以说*a是不可以改变的,第三个是const a 所以是a不可以改变,*a不可以改变就是说值不可以改变,a不可以改变是指向不可以改变
 
第一个第二个不能给*a赋一个新的值第三个是不能给a赋新值
 
A选项,没有考虑内存对齐。
B选项,考察double类型的比较,由于浮点数存在误差,不能直接判断两个数是否相等,通常采用比较两数之差的绝对值是否小于一个很小的数字(具体的可自己设定这样一个数,作为误差)来确定是否相等。
C选项,a为数组首地址是常量不能改变,所以A,B,C都是错的,选择D
 
1、验证尼科彻斯定理,即:任何一个整数 m 的立方都可以写成 m 个连续奇数之和。
 题目来源
#include<stdio.h>
int main(){
    //1 1 = 1
    //2 2 = 4
    //3 3 = 9
    //4 4 = 16
    //5 5 = 25
    //6 6 = 36
    int n = 0;
    //6 - 36
    //n*(n-1) + 1
    //n*(n+1) - 1    
    scanf("%d",&n);
    int i = 0;
    for(i=n*(n-1) + 1;i<=n*(n+1) - 1;i+=2){
        printf("%d",i);
        if(i != (n*(n+1) - 1))
            printf("+");
    }
    return 0;
}
 
2、等差数列 2,5,8,11,14, … 。(从 2 开始的 3 为公差的等差数列),求等差数列前 n 项和
 题目来源
#include<stdio.h>
// 等差数列 2,5,8,11,14。。。。
// (从 2 开始的 3 为公差的等差数列)
// 输出求等差数列前n项和
int main(){
    int arr[1001] = {0};
    int i = 0;
    int n = 0;
    scanf("%d",&n);
    arr[1] = 2;
    int sum = arr[1];
    for(i=2;i<=n;i++){
        arr[i] = arr[i-1] + 3;
        sum+=arr[i];
    }
    printf("%d\n",sum);
    return 0;
}
 
#include <stdio.h>
int main() {
    int arr[1001] = {0};
    arr[1] = 2;
    int i = 0;
    for (i = 2; i <= 1000; i++)
        arr[i] = 3 + arr[i - 1];
    int n = 0;
    scanf("%d", &n);
    int sum = 0;
    int j = 0;
    for (j = 1; (n != 0) && (j <= 1000); j++) {
        sum += arr[j];
        n--;
    }
    printf("%d\n", sum);
    return 0;
}
 
#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;
}
 
等差数列求和公式 Sn=n(a1+an)/2 根据题目得知 a1=2 ,而等差数列第n项也有具体公式 an=a1+(n-1)d ,而公差为3



















