目次
私の限られた力では、いくつかの場所を十分に明確に説明したり理解したりできないかもしれません。自分でコードを読んでみるか、コメント エリアで間違いを指摘してください。ハイハンを願っています。
複数の選択肢の質問:
質問 1:
1.次のプログラム セグメントの出力は次のとおりです ( )
#include<stdio.h>
int main()
{ char s[] = "\\123456\123456\t"; printf("%d\n", strlen( s )); 0 を返す; }
A: 12 B: 13 C: 16 D: 上記のどれも正しくありません
質問 2:
2. 以下のようなプログラムがある場合、実行後の出力は ( )
#include <stdio.h>
#define N 2
#define MN + 1
#define NUM (M + 1) * M / 2
int main()
{ printf ("%d\n", NUM); 0 を返します; }
A: 4 B: 8 C: 9 D: 6
質問 3:
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:
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:
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 型の比較を調べるものです。浮動小数点数の誤差のため、 2 つの数値が等しいかどうかを直接判断することはできません。通常は、両者の差の絶対値が等しいかどうかを比較するために使用されます。 2 つの数値が小さい数値 (具体的には、エラーとしてそのような値を自分で設定できます) より小さい場合、等しいかどうかを判断します。オプション C、a は配列の最初のアドレスです。定数で変更できないため、A、B、C はすべて間違っています。D を選択します。
プログラミングに関する質問:
問題 1: ニコルチェスの定理
例1
入力:
6出力:
31+33+35+37+39+41
アイデア 1:
この問題は等差数列の理解を調べるもので、問題では許容誤差が 2、入力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: 等差数列
例 2
入力:
275出力:
113575例証します:
2+5+...+821+824=113575
アイデア 1:
等差級数の合計: 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)*3
sum = n*a1 + (n*(n-1)/2)*3;
printf("%d",sum);
return 0;
}