目錄
?選擇題:
題一:
題二:
題三:
題四:
題五:
編程題:
題一:尼科徹斯定理
示例1
題二:等差數列
示例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(c)
B: 對于某個double變量 a,可以使用 a == 0.0 來判斷其是否為零
C: 初始化方式 char a[14] = "Hello, world!"; 和char a[14]; a = "Hello, world!";的效果相同
D: 以上說法都不對
A選項,沒有考慮內存對齊。B選項,考察double類型的比較,由于浮點數存在誤差,不能直接判斷兩個數是否相等,通常采用比較兩數之差的絕對值是否小于一個很小的數字(具體的可自己設定這樣一個數,作為誤差)來確定是否相等。C選項,a為數組首地址是常量不能改變,所以A,B,C都是錯的,選擇D
編程題:
題一:尼科徹斯定理
示例1
輸入:
6輸出:
31+33+35+37+39+41
思路一:
????????此題考查對等差數列的認識,能夠分析出題目中以公差為二,輸入m即為項數,和即為等差求和。
#include <stdio.h>
#include <math.h>
//等差數列求和公式
int main()
{int m = 0;scanf("%d",&m);//知和求首項int sum = pow(m,3);int a1 = sum/m -(m-1);//打印每一項for(int i = a1,j = 0;j < m;i+=2,j++){printf("%d",i);if(j < m-1){printf("+");}}return 0;
}
題二:等差數列
示例2
輸入:
275輸出:
113575說明:
2+5+...+821+824=113575
思路一:? ? ???
?????????等差數列求和:Sn=n*a1+n*(n-1)/2*3或者Sn=n*(a1+an)/2? ? an=a1*(n-1)*3
#include <stdio.h>int main()
{int n = 0;int a1 = 2;int sum = 0;scanf("%d",&n);//等差數列求和:Sn=n*a1+n*(n-1)/2*3//Sn=n*(a1+an)/2 an=a1*(n-1)*3sum = n*a1 + (n*(n-1)/2)*3;printf("%d",sum);return 0;
}