c语言期末复习笔记1

c语言期末复习笔记1,第1张

c语言期末复习笔记1

目录

1.流程图

2.变量与类型

3.格式化输入输出

4.判断

5.循环

6.数组

7.函数

8.后面的指针与结构体(主要有点多)留在下一篇文章再写。


1.流程图

写一个程序,首先要了解它是如何进行的

要素:

 

2.变量与类型

变量,常量,函数的名字:标识符,由下划线,数字,字母组成。

例:ab5c 正确; __a1bc 正确; ¥¥abc 错误。

先讲类型,正如我们所知的int, char, double等都是类型,那先看看它们需要的空间大小

变量属于什么类型,计算机开辟就多大的空间储存。

整形的:int -----4个字节;short-----2个字节;long-----4或8个字节(取决于编译器,通常为4个字节);long long-----8个字节(别想了没有long long long的)。

字符的:char----1个字节(通常考它能存哪些‘ a' ,'xff'类似的,字符在c语言中以ASCII来存储),char 类型的只能用单引号,单引号也只能用于一个字符,多个以上的用双引号----要用数组来存。

例:char a='A'; char a[]="String"。

浮点型的(存小数的):double-----8个字节;float-----4个字节。它两个用%lf,%f,别写成了%d。

补,字节数可以用sizeof()函数来计算(这个不管''),strlen()是用来计算长度的(原理就是依次计数直到''停止,在数组中计算数组长度可以用这两个

例:char a[];  1.sizeof(a)/sizeof(a[0])-1(减一是去掉计算的),2.strlen(a);这两个要引头文件

变量

类型 变量名=常量;(赋值)。

变量又有全局变量与局部变量之分

#include 
    int num1=1;
    int main() 
 {
    int num2=2;
     return 0; 
  }

这之中num1为全局变量,num2为局部变量,

全局变量:定义于所有函数之外,作用于多个函数体。

局部变量:定义于函数体内,只在这个函数里生效,出则失效。

补:1.在函数体里局部优于全局。

      2.static作用下会有不一样的效果,作用于局部变量会让(函数里的)变量的值出函数后不被失效,作用于全局变量会使从这个文件到另一个文件的引用失效(用extend 来引用)。

***无语的是:c语言中的变量要定义于(函数里的)最开头,否则要出错。

3.格式化输入输出

c的预处理:在对源程序进行编译前,先对源程序中编译预处理命令进行处理。例:#开头的行,#include,#define;#include(文件包括),#define(宏替换);注预处理不会帮你计算结果,只是符号的替换,就像

#define muplite(x,y) x*y;//要用来定义常量#define 标识符 常量;
int main()
{
   int x;
    x=muplite(3+2,3-1);//这个程序中3+2*3-1这样来算,如果要实现原本的目的就这样写(x)*(y)
}

#include<文件名>和#include“ 文件名”的区别:< >里面的是系统指定的;“  "里面是你自己搞的。

输入输出:输入就是你用键盘的其他东西将数据输入,输出(打印)就是计算机将结果展现于电脑屏幕。

输入常用的函数:scanf(在有些编译器上用scanf_s),getchar(),gets()(输出字符串)

注,scanf()用的时候输入数据时,怎么写的就怎么输,例如scanf(“%d%d”,&a,&b)输入时每个数据间要空格,&(取地址符)不要忘记(除了输出整个数组,数组名本身就是地址)。getchar()会接收空格。

输出常用的函数:printf();putchar();puts().

相关的字符于 *** 作:我们熟悉的%d,%f等为格式符,不光这个,还有普通字符,转义字符,修饰符

%d,%s,%f,%e等------格式符
printf("china")-----中的china为普通字符
n,t,r,等--------为转义字符
%lf(中的l),%10c(中的10),%-7c(中的-7)------为修饰符(修饰格式的符号)

注:1.修饰符中的‘ - ‘让数据向左对齐(同时也是空余空间向右对齐。

        2。对于%7.2f我们要分开看,首先7是整个位数(不够的则再后补0),.2则是保留多少位。

      3.转义字符

a---响铃   b--退格  f--换页  n--换行  r--回车
t--水平制表(tab)  v--垂直制表(让v后的下降一行)
\--  *--*  "--"  ?--?  --空字符(字符串结束的标志)
ddd---一个字符(1到3位八进制数ASCII码值代表的字符)
xdd--一个字符(1到2位十六进制数ASCII码值代表的字符)

在printf()函数中无法分辨如, * ," ,? 等,要将这些打印出来则要加 在它们前。

4.判断

我们经常会遇到一些题要用到条件的判断,先从关系运算符开始。

1.

>,<,>=,<=的优先级大于==,!=

2.逻辑值中0为假,其他的数为真,逻辑运算符:

&&, ||, !
与   或   非
优先级(运行时哪个先起效):!--->&&---->||

注:1.&&是会运行到不符条件那儿,例x=2,y=2,z=0(++x>1)&&(y++<1)&&(z++<1),如果(z++<1)为假,而&&运算符会把前两个给计算出来。x=3,y=3,z=0.

 3.判断语句(两种写法)

1.

if(判断条件)     if(判断条件)

语句1;            语句1;

else              else if(判断语句)

语句2;            语句2;
                   ·····
                   else//就近原则,与最近的if结合。
                    语句n;

if()语句可以嵌套if()
                    {  
                    if()
                     语句;
                    }


补:还有一个三目 *** 作符:表达式1 ? 表达式2:表达式3

执行:先求解表达式1,为真(非零),求表达式2为假(为0),求表达式3,例(a>b)?a:b;若a>b为真,则结果为a,反之,为b.

2.swtich()语句
 

 switch (表达式)     表达式=常量表达式n    执行语句m               

{ 
  case  常量表达式1 :
           语句1;
           break;                
  case  常量表达式2 :
           语句2;  
           break;                                  ┇                 
  case  常量表达式n :
           语句m;  
           break;//找到结果,break是跳出来(用不用break;看要求)
             ·
             ·
             ·                 
  default  :    //没结果时才轮到它
          语句m+1;
}
5.循环

循环有while(),do  while(),for()循环

while(  可以进行的条件(循环条件)),通常需要++符号来保证进行(否则死循环,光标一直动)

while(i<5)//这里是先判断在执行语句。
{
   语句;
    i++;
}

do while(),和while()差不多但

do
{
   语句;
    i++;
}while(i<5);//这里是先执行语句后判断。while()后的;不要忘记

for((初始值;条件;调整值)

for(i=0;i<=10;i++)//初始值和调整值可以多个用,隔开
  {
     printf("hehen");
   }
//for(;;)循环的初始化,判断值与调整值都可以省去;判断值省去则恒为真(死循环)
(这时break就有用了)

补:break与continue在循环中用法有差异。continue则是跳过本次循环, break是从当前循环体系出去,若是双循环例

1.for(i=0;i<10;i++)        
{
   for(j=0;j<10;j++)
   {
       break;//break则是跳出有j这个循环
   }
  //来到这个循环(break)
}
2.for(i=0;i<10;i++)        
{
   for(j=0;j<10;j++)
   {
      if(i==5)
       { 
         语句1;
       continue;//当i等于5并执行这条语句时,就跳过此次循环(j要循环10次,只是跳过这一次),语句2就不会执行
          语句2;
       }
   }
}
6.数组

1.数组:具有相同数据类型的元素的集合,是一组有序数据的集合,这个集合用一个数组名来表示。

2.格式:类型说明符  数组名[常量表达式]。

扩:1.数组有静态内存分配和动态内存分配,静态就是我们常用的 int array[10]([]里就是我们提前分配的大小,动态这要用malloc()函数(头文件),int* array=(int*)malloc(sizeof(int)*8)等价于int array[8];这个数组空间是全局的,要用free()来释放内存

2.字符串其实就是字符数组。

3.一维,二维数组

一维数组:就像int arr[];char arr[10],在c语言中int 类型的数组只有一个个用循环输出,而字符类的可以用%s来输出。写法:

int arr[3]={1,2,3};
char arr[3]={'a','b','c'};
char arr[3]={"abc"}
char arr[3]="abc"//字符数组会在最后添加‘’,计算大小可不要忘记

二维数组:像int array[行][列];二维数组行可以省略,列不可以

int arr[2][2]={{1,2},{3,4}};
char arr[2][2]={"ad","cb"};//每一行的元素可以不写满;

注:1.数组初始化可以直接赋0;int arr[10]={0};

      2.数组本身就是地址的集合(连续的),数组名就可以看成这一系列地址的首个元素的地址(在sizeof()中为一个数组)。(通常以16进制来打印A=10,B=11,C=12,D=13,E=14,F=15)

     3.数组不可直接赋值给另一数组,arr=brr(错误的),需要一个一个的将元素赋值

    4.冒泡排序:冒泡;选择排序:选择。

7.函数

函数的定义:一个较大的程序可分为若干个程序模块,每一个模块用来实现一个特定的功能。在高级语言中用子程序实现模块的功能。子程序由函数来完成。一个C程序可由一个主函数(main())和若干个其他函数(自己写的)构成。

写法(自己写的):

返回类型(若不返回就用void)  函数名( 类型 变量名,······,类型 变量名)//每个变量用逗号隔开
{
 
   语句;

    return  xx;//如果有返回类型一定要返回
}

补:1.我们还可以去引用函数,像sizeof(),strlen()等,推荐一个网站:http://www.cplusplus.com

2.定义的函数若在主函数后要将其引用于前就像

#include
int add(int x,int y);//可以写在这
int main()
{
   int add(int x,int y);//也可以写在这(要在引用的语句前)
    int i,a=0,b=0;
    语句;
     i=add(a,b)//a,b把值传过去,然后返回的值用i来接收(没有返回值就不用接收,把i=去掉就行了)
    //引用语句
}
int add(int x,int y)
{
   return x+y;
}

3.递归(天才用的)

举个例子:

void add(int n)
{
    if(n=20)//设置条件使得递归不变成死循环
     {
       return 1;
     }
     else
     {
       return add(n-1)+1;//可以理解为循环的逆过程,它是从最里面开始返回值一直向外走。
}
     

4.数组传参给函数,只是将首地址传过去可以这么写

void add(int *array)
void add(int array[])//这两种写法等价
8.后面的指针与结构体(主要有点多)留在下一篇文章再写。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5691582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存