ヒント:ここでは、シリーズのすべての記事のカタログを追加できます。カタログは自分で手動で追加する必要があります。
例:パンダの使用に関する最初の章のPython機械学習の概要
ヒント:記事を書いた後、目次を自動的に生成できます。生成方法については、右側のヘルプドキュメントを参照してください。
序文
C言語コースを再学習した学生のために、ここにいくつかの重要なメモを書きたいと思います。そして、いくつかの難しい例(もちろん、私だけのために)、誰もがそれを参照することができます。
1.C言語から始めるのが最も簡単です
1.データ型
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
それぞれが数バイトを占めます。次の関数で確認してください。覚えておくのが最善です。
#include<stdio.h>
void main(){
printf("char= %d\n", sizeof(char));
printf("short=%d\n", sizeof(short));
printf("int=%d\n", sizeof(int));
printf("long=%d\n", sizeof(long));
printf("long long =%d\n", sizeof(long long));
printf("double= %d\n", sizeof(double));
}
2.変数、定数
名前が示すように、変数は変更される値です。定数は、一度定義されると変更できない値です。
- ローカル変数のスコープは、変数のローカルスコープです。
- グローバル変数のスコープはプロジェクト全体です。
- 変数のライフサイクルとは、変数の作成から変数の破棄までの期間を指します
- ローカル変数のライフサイクルは次のとおりです。スコープに入るライフサイクルが始まり、スコープ外のライフサイクルが終わります。
- グローバル変数のライフサイクルは次のとおりです。プログラム全体のライフサイクル。
3.文字列+エスケープ文字
二重引用符によって引き起こされる文字列は、文字列リテラル、または略して文字列と呼ばれます。(注:文字列の終了マークは\ 0のエスケープ文字です。文字列の長さを計算する場合、\ 0は終了マークであり、文字列としてカウントされません)
エスケープ文字
:?連続する疑問符を書き込むときに使用されます。それらが3文字の単語に解析されないようにします。
'文字定数を示すために使用されます'
\ "文字列内の二重引用符
を示すために使用されます。\バックスラッシュを示すために使用され、エスケープシーケンス文字として解釈されないようにします。
\警告文字、ブザー
\ bバックスペース
\ f紙送り
\ n改行
\ rキャリッジリターン
\ t水平タブ
\ v垂直タブ
\ ddd dddは1〜3個の8進数を表します。例:\ 130 X
\ xddddは2つの16進数を意味します。数字。例:\ x30 0
#include <stdio.h>
int main()
{
printf("%d\n", strlen("abcdef"));
printf("%d\n", strlen("c:\test\328\test.c"));
return 0;
}
出力結果は次のとおり
です。614最初の結果は理解しやすいです。ここでは、理解しやすいように2番目の結果を分割します。もっと恥ずかしいのは、最初は理解が間違っていたということですが、最終的には次のようになりました。これ。わかりやすくするために、各文字を#:c#:#\ t#e#s#t#\ 32#8#\ t#e#s#t#。#cで区切ります。合計13個あります。 #。
4.ステートメントを選択してループします
選択文は、if、switch、switchと呼ばれるもので、ifやelseの選択に似た、理解しやすい特別な種類の選択文だと思います。注:ブレークはスイッチを終了でき、デフォルトの句が処理に使用されます。大文字と小文字が一致しない場合は、スイッチの大文字と小文字の前後に書き込むことができます。
ループ文
しばらく
のため
ながら行います
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i = i + 1;
}
return 0;
}
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
}while(i<10);
return 0;
}
ここでも、breakとcontinueの違いは、前者はループから直接ジャンプし、後者はこのループを終了して次のループに入ります。
2.典型的な質問
1.ひし形を印刷する
#include<stdio.h>
//打印菱形
int main()
{
int i, j, N = 5;
//上半部分
for (i = 0; i < N; i++) //N控制上半部分行数
{
for (j = i; j < N - 1; j++) //随行数递增,空格数递减(这里每行前面的空格数分别为4,3,2, 1,0)
printf(" ");
for (j = 0; j < 2 * i + 1; j++) //随行数递增,“*”数递增(这里每行前面的*数分别为1,3,5,7,9)
printf("*");
printf("\n"); //记得换行
}
//下半部分,其实就是上半部分的翻转
for (i = N - 2; i >= 0; i--) //这里i从N-2开始的,不知道为什么的可以换成N-1试试,保证秒懂
{
for (j = i; j < N - 1; j++) //这里的空格数刚好相反,是随行数递增的
printf(" ");
for (j = 0; j < 2 * i + 1; j++) //这里的“*”数则是递减的(想想图形的样子)
printf("*");
printf("\n"); //同样的记得换行
}
return 0;
}
2.0から100000までのすべての「水仙の数」を見つけて出力します。
#include <math.h>
void main(){
int n;
int a[6] = {
0 };
int i;
int sum = 0;
int count = 0;
for (n = 0; n <= 100000; ++n){
//遍历0-100000之间所有数字
for (i = n; i; i /= 10){
a[count] = i % 10; //用数组a[count]将每一位存起来,用count记下数字的位数
++count;
}
for (i = 0; i < count; ++i){
sum += pow(a[i], count); //将数组中所存的数字的每一位进行对应的位数count次方并求和
}
if (n == sum){
printf("%d \n", n);
}
count = sum = 0; //强制将count与sum归0
}
}
3.二分探索
#include <math.h>
void main()
{
int ar[] = {
12, 23, 34, 45, 56, 67, 78, 90, 100, 120, 150, 200, 1234 };
int n = sizeof(ar) / sizeof(ar[0]);
int key;
printf("input key:>");
scanf("%d", &key);
int low = 0;
int high = n - 1;
int mid, index = -1;
while (low <= high)
{
mid = (low + high) / 2;
if (key == ar[mid])
{
index = mid;
break;
}
else if (key < ar[mid])
high = mid - 1;
else
low = mid + 1;
}
if (index == -1)
printf("要查找的%d不存在.....\n", key);
else
printf("要查找的%d在: 第%d个\n", key, index+1);
}
総括する
ここに少し紹介があり、多くの典型的な質問があります、次の関数、配列、ポインタが追加されます、言い方、この言語を学ぶために2回目は、初めてではなく、非常に異なった感じなので、今は無知です、私は物事のために何かを実装する方法を知っていますが、実装方法がごみである場合もありますが、これは書き込みが少なすぎる理由でもあるため、コードに同意する必要があります。