C语言

字符串

1、字符串的三种类型

屏幕截图 2025-01-15 143306

image-20250115143608696

image-20250115143919531

image-20250115144914490

image-20250115145138007

image-20250115150901606

image-20250115151504703

image-20250115152134945

image-20250115152649290

指针

屏幕截图 2025-01-19 100508

image-20250119100633016

image-20250119100707819

这里涉及到强制类型转换,通过学习我们得知,Int *类型是定义了Int类型的指针(指针指向地址),而我们要想赋予这个指针一个int类型的常量,正常来说这他们两个的类型是不一样的,但是还c++允许我们进行强制类型转换,(被赋值的类型) 值可以实现不同类型之间的赋值。

image-20250119101007791

image-20250119101040399

image-20250119101417167

image-20250119101927141

image-20250119212901285

image-20250119213008817

image-20250119213309580

image-20250119213423102

image-20250119213518772

image-20250119213742119

image-20250122170926235

image-20250124153751782

image-20250124154620794

image-20250202144620175

image-20250202145914914

image-20250202150946439

image-20250202155218526

image-20250202162827729

image-20250202162936234

image-20250203112857231

image-20250203112908353

image-20250203112917174

image-20250203113256484

结构

image-20250204154622858

image-20250204154659950

image-20250205111020920

image-20250205111242503

image-20250205111351476

image-20250205111745240

image-20250205111919098

image-20250205152025071

image-20250205152126123

image-20250205152332997

静态变量相当于初始化语句,只在第一次执行时发挥作用。

如果前面的static去掉则三次输出结果均为4

image-20250205153704938

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using namespace std;
char * STRtok(char * p,char * sep){
static char * start;
if(p)
start=p;
for(;*start&&strchr(sep,*start);++start);
if (*start==0)
return NULL;
char * q=start;
for(;*start&&!strchr(sep,*start);++start);
if(*start){
*start=0;
++start;
}
return q;
}
int main(){
char str[]="this is,a_test";
char * p=STRtok(str," ,_");//注意要定义指针p后再赋值。后面使用指针p来进行循环。
while(p!=NULL){
cout<<p<<endl;
p=STRtok(NULL," ,_");//这里注意最后要将p定到上一次分割字符的位置,不然会运行错误。
}
return 0;
}

标识符

image-20250205180618062

image-20250205180758159

image-20250205181132811

image-20250205181229833

简单排序

选择排序

image-20250205182023015

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
using namespace std;
void selectmin(int a[],int size){
for(int i=0;i<size-1;++i){
int min=i;
for(int j=i+1;j<size;++j){//选出最小的i
if(a[j]<a[min])
min=j;
}
int tmp;
tmp=a[i];
a[i]=a[min];
a[min]=tmp;
}
}
int main(){
int num[10]={10,9,8,7,6,5,4,3,2,1};
selectmin(num,10);
for(int i=0;i<10;++i){
printf("%d ",num[i]);
}
}

image-20250205184722545

插入排序

image-20250205184956868

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
using namespace std;
void insertsort(int a[],int size){//套用三次循环。
for(int i=1;i<size;++i){//第一次,这里i是假定的无序序列中的第一个。
for(int j=0;j<i;++j)//j代表数列左边已经排序好的序列号。
if(a[j]<a[i]){//判断a[i]应该放在左边的排序序列的第几位
int tmp=a[i];//保存a[i]
for(int k=i;k>j;--k)
a[k]=a[k-1];//被插入的位置后所有数向后移动一位。
a[j]=tmp;
break;
}
}
}

int main(){
int num[10]={100,2,3,24,45,26,70,18,9,10};
insertsort(num,10);
for(int i=0;i<10;++i){
printf("%d ",num[i]);
}
}

image-20250207113451372

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstring>
using namespace std;
void bubblesort(int a[],int size){
for(int i=size-1;i>0;--i){
for(int j=0;j<i;++j){
if(a[j]>a[j+1]){
int tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}

int main(){
int num[10]={100,2,3,24,45,26,70,18,9,10};
bubblesort(num,10);
for(int i=0;i<10;++i){
printf("%d ",num[i]);
}
}

image-20250207135001346

image-20250207153011851

image-20250207153236109

image-20250209202808863

image-20250209202826946

image-20250209203026968

文件读写

image-20250210155230322

image-20250210155439107

image-20250210160017089

image-20250210160235393

image-20250210160451229

image-20250210160840347

image-20250210161045982

image-20250210161714854

image-20250210161803275

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int a[1000];
int main(){
FILE * fpin=fopen("in.txt","r");
if(fpin==NULL)
return 0;
FILE * fpout=fopen("out.txt","w");
int n=0;
while(fscanf(fpin,"%d ",a+n)!=EOF)
++n;
fclose(fpin);
sort(a,a+n);
for(int i=0;i<n;++i)
fprintf(fpout,"%d ",a[i]);
fclose(fpout);
return 0;
}

image-20250210161843846

image-20250210171850284

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
int main(){
char str[1000];
FILE * fp=fopen("text.txt","r");
while(fgets(str,990,fp))
printf(str);
fclose(fp);
return 0;
}

image-20250210201515661

image-20250210201639150

image-20250210201904003

image-20250210201952516

image-20250210210051016

image-20250211202707574

fgetc的结果总是值为正的整形变量

image-20250211202934743

image-20250211203238001