转义字符
\\ 表示字符'\',\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