收藏 分销(赏)

C语言学习笔记.doc

上传人:二*** 文档编号:4576855 上传时间:2024-09-30 格式:DOC 页数:45 大小:249KB 下载积分:5 金币
下载 相关 举报
C语言学习笔记.doc_第1页
第1页 / 共45页
本文档共45页,全文阅读请下载到手机保存,查看更方便
资源描述
  1.第一个c程序:  # include "stdio.h"     /*该行是文件包含命令*/  main(){      printf("test");     /*函数调用:printf将内容输出到显示器*/  }  注:c语言区分大小写;   程序中必须含有一个且只有一个名字为main的主函数;   每行程序必须以";"结尾;   /* ... */是注释内容。         2.引申例题:计算任意半径圆的面积和周长。   #include "stdio.h"  main(){      float r,l,area;         /*定义float类型变量*/          scanf("%f",&r);     /*调用获取键盘输入函数*/          l = 2*3.14*r;          area = 3.14*r*r;          printf("\n l=%f,area=%f\n",l,area);  }  注:r,l,area是float类型的变量,程序运行中可改变,float是c语言中的一种数据类型。       3求两个数的和。   #include "stdio.h"  main(){      int i,j,sum;      int Add(int m,int n);       /*声明函数*/      scanf("%d %d",&i,&j);      sum = Add(i,j);             /*调用函数*/      printf("\n sum=%d \n",sum);  }  int Add(int m,int n){       /*函数*/      return m + n;  }  注:scanf("%d %d",&i,&j);中的&是取地址运算符。   通过以上三个例子的总结:   1.一个c语言源程序可以由一个或多个源文件组成,每个源文件可以由一个或多个函数组成,一个源程序无论有多少个源文件或函数,都只能有一个且只能有一个mian函数。   由"#"引入的指令为预处理指令。   4常见语法规范。 标示符:程序中的变量名、函数名、标号等统称为标示符。C语言规定标示符只能由字母、数字和下划线"_"组成,并且第一个字符必须是字母或下划线。 1常见数据类型   Int、short、long、unsigned、float、double、char、enum、void、指针类型、数组类型、struct、union等。   基本数据类型:Int、short、long、unsigned、float、double、char、enum都属于基本类型。特点是其值不可再分。       2常量。   常量定义方式:#define 标示符 常量   常量分为:直接常量和符号常量。   例题:求任意圆的周长和面积,使用常量定义π。     #include "stdio.h"  #define PI 3.1415926  main(){  float r,l,area;  scanf("%f",&r);  l = 2*PI*r;  area = PI*r*r;  printf("\n l=%f area=%f \n",l,area);  }    注:常量值不能被修改;习惯上常量名大写,变量名小写;   整型常量(整型):   1.十进制整常数:0~9数字,无前缀等,也就是整常数。例如:237、-783、65535;   2.八进制正常数:以0为前缀,数值为0~7,八进制通常是无符号数。例如:023;   3.十六进制整常数:前缀为0X或0x,由0~9,a~f或A~F组成(不区分大小写),例 如:0X23A、0XAA、0xFFF0;   4.长整型常量:使用L或小写l作为后缀,例如:123L(十进制123)、012l(八进制10)、0x15L(十六进 制21)。   5.无符号数的后缀表示:整常数的无符号型是用后缀U或u表示,例如:58u。前缀后缀可使用各种类型的 数,如:0xA5Lu表示十六进制无符号长整数A5。   实型常量(浮点型):   1.十进制小数形式:由0~9和小数点组成,例如:0.0、0.34、4.23。   2.指数形式:由十进制构成基数,加阶码标志e或E以及阶码组成,例如:1.2E5(2.1*10^5)。   字符常量:字符常量在内存中是以ASCII码形式存储的,字符常量可以表示所有字符,字符常量包括普通字符常量和转义字符。   1.普通字符常量:使用''单引号括起来的一个字符,例如:'a'、'='、'?'等。   注:字符常量只能用单引号不能用双引号;只能是单个字符,不能是多个字符;字符不能参与数值运算。   2.转义字符:转义字符以'\'开头,具有特定的含义,例如:'\n'是回车换行、't'是制表tab、'\\'转义 反斜线。   字符串常量:字符串常量是指用""括起来的若干个字符组成的序列,例如:"hello"、"sdk sd s@"等。字符串常量的每个字符都占一个字节,设计需要字符串常量最后要存储一个结束符'\0',如果没有结束符,程序输出时就不知道何时停止。字符串中也要涉及到转义字符问题。C语言中没有响应的字符串变量,但是可以用一个字符数值存储一个字符串。   典型题:"A"和'A'在内存中占的字节数?   'A'只占一个字节,"A"占两个字节,因为字符串末尾含一个结束符,占一个字节。       3变量。   变量定义方式:数据类型 变量名1,变量名2,变量名3,...;   变量也分为整型变量实型变量和字符型变量。   变量的使用规范: 1.使用之前必须先定义;   2.变量赋值需要注意的:   可同时定义几个变量int i,j,k;   对多个变量同时赋值时int i=3,j=4,k=8;不可写成int i=j=k=5; C语言学习笔记(四)--运算符与表达式(下)   1逗号运算符和逗号表达式   1.1逗号表达式格式:表达式1,表达式2,表达式3,...,表达式n;   该表达式的功能是:先计算表达式1,再计算表达式2,最后计算表达式n,最后一个表达式的值为此逗号表达式的值。   1.2逗号表达式的优先级:最低。   1.3逗号表达式的值:   例子代码:     #include "stdio.h"  main(){    int a,b,c;    a=1,b=2,c=a+b+3;    printf("%d,%d,%d\n",a,b,c);    c=(a++,a+=b,a-b);                     /*变量c保存逗号表达式的值*/    printf("%d,%d,%d\n",a,b,c);           /*逗号表达式的作用为顺序求值*/  }  输出结果如下:   1,2,6   4,2,2   2关系运算符和关系表达式   2.1C语言中的真值和假值:C语言中没有逻辑型数据,所以C语言规定,用整型常量1来表示真值,所有非0的表达式和常量的逻辑值都为1,用整型常量0表示假值,只有表达式的值为0的常量和表达式的逻辑值为0。   关系表达式例子代码:     #include "stdio.h"  main(){    char x='m',y='n';    int n;    n=x<y;                             /*取关系表达式x<y的值*/    printf("%d\n",n);    n=x==y-1;                          /*取关系表达式x==y-1的值*/    printf("%d\n",n);    n=('y'!='Y')+(5<3)+(y-x==1);       /*取关系表达式x==y-1的值*/    printf("%d\n",n);  }    程序运行结果:   1   1   2   关系表达式参加算术运算:     #include "stdio.h"  main(){    int a,b,c;    a=b=c=10;                             /*变量a,b,c赋初值*/    a=b==c;    printf("a=%d,b=%d,c=%d\n",a,b,c);     /*注意等号与赋值号的区别*/    a=(b+(c++>2));    printf("a=%d,b=%d,c=%d\n",a,b,c);    /*关系表达式的值可以参加运算c++>2成立,值为1和b相加值放到a中存放*/    a=b>c*100;    printf("a=%d,b=%d,c=%d\n",a,b,c);    /*利用关系表达式计算要注意运算的优先级*/  }  程序运行结果:   a=1,b=10,c=10   a=11,b=10,c=11   a=0,b=10,c=11   3逻辑运算符和逻辑表达式   3.1基本逻辑运算符包括:单目运算符!,双目运算符&&、||。  C规定了运算符的优先次序即优先级。 当一个表达式中有多个运算符参加运算时, 将按下表所规定的优先级进行运算。表中优先级从上往下逐渐降低, 同一行优先级相同。 例如: 表达式 10>4&&!(100<99)||3<=5 的值为1 表达式 10>4&&!(100<99)&&3<=5 的值为0 Turbo C运算符的优先次序 ()(小括号) [](数组下标) .(结构成员) ->(指针型结构成员)( 最高) !(逻辑非) .(位取反) -(负号) ++(加1) --(减1) &(变量地址) *(指针所指内容) type(函数说明) sizeof(长度计算) *(乘) /(除) %(取模) +(加) -(减) <<(位左移) >>(位右移) <(小于) <=(小于等于) >(大于) >=(大于等于) ==(等于) !=(不等于) &(位与) ^(位异或) |(位或) &&(逻辑与) ||(逻辑或) ?:(?表达式) = += -=(联合操作) ,(逗号运算符) ( 最低) 逻辑与运算符例子代码:     #include "stdio.h"  #define PI 3.1415926  main(){     int  m,n;     int k;     k=(m=0)&&(m=1);     printf ("%d,%d\n",m,k);     k=(m=1)&&(m=0);     printf ("%d,%d\n",m,k);     k=(m=2)&&(m=1)&&(m=0);                   /*多层逻辑与运算的规则测试*/     printf ("%d,%d\n",m,k);     m=0,k=0;     n=k++&&m++;     printf ("%d,%d,%d\n",k,m,n);     m=0,k=0;     n=m++&&k++;                             /*测试表达式k++&&m++与m++&&k++*/     printf ("%d,%d,%d\n",k,m,n);  }  程序运行结果:   0,0   0,0   0,0   1,0,0   0,1,0   逻辑或运算符例子代码:     #include "stdio.h"  main(){    int  m,n;    int k;    k=(m=0)||(m=1);                        /*逻辑或运算的计算规则*/    printf ("%d,%d\n",m,k);    k=(m=1)||(m=0);    printf ("%d,%d\n",m,k);    k=(m=2)||(m=1)||(m=0);                 /*多层逻辑或运算的规则测试*/    printf ("%d,%d\n",m,k);    m=0,k=0;    n=++m||++k;    printf ("%d,%d,%d\n",k,m,n);    m=0,k=0;    n=++k||++m;    printf ("%d,%d,%d\n",k,m,n);          /*测试表达式++k||++m与++m||++k+*/  }  程序运行结果:   1,1   1,1   2,1   0,1,1   1,0,1   逻辑与和逻辑或混合运算例子代码:     #include "stdio.h"  main(){    int m,k;    k=(m=0)||(m=1)&&(m=2);    /*表达式理解为(m=0)||((m=1 )&&(m=2))*/    printf ("%d,%d\n",m,k);    k=(m=2)||(m=1)&&(m=0);     /*表达式理解为(m=2)||((m=1)&&(m=0))*/    printf ("%d,%d\n",m,k);    k=(m=2)&&(m=1)||(m=0);     /*表达式理解为((m=2)&&(m=1))||(m=0)*/    printf ("%d,%d\n",m,k);    k=(m=0)&&(m=1)||(m=2);     /*表达式理解为((m=0)&&(m=1))||(m=2)*/    printf ("%d,%d\n",m,k);  }  程序运行结果:   2,1   2,1   1,1   2,1   4条件运算符和条件表达式   4.1条件运算符"?:"是C语言中唯一的的三目运算符,优先级高于赋值运算   表达式语法: 表达式1?表达式2:表达式3   其执行顺序是:先求解表达式1,若为1则执行表达式2,否则执行表达式3。   例子代码:     #include "stdio.h"  main(){    char  ch;    scanf("%c" , &ch);     /*  输入一个字符,赋给变量ch  */    ch=(ch>='A'&&ch<='Z')?(ch+'a'-'A'):ch;        /*  当字符为大写字母时,将其变为小写字母*/    printf("\n%c",ch);  }  5sizeof运算符   5.1sizeof是C语言的一种单目运算符,运算对象是变量名、表达式或数据类型标示符。功能是以字节形式给出操作数的存储大小。   5.2语法格式:sizeof(表达式) 或sizeof 表达式 或sizeof(数据类型)   6取地址运算符   6.1取地址运算符的运算对象只能是变量,运算结果为变量的存储地址。   7几种运算混合运用   例子代码:     #include "stdio.h"  main(){    int x,y=1,z;    x=((9+6)%5>=9%5+6%5)?1:0;  /*((9+6)%5>=9%5+6%5)等价于(((9+6)%5)>=(9%5+6%5))其值为0*/    printf(" x=%d\n",x);    y+=z=x+3;                    /* y+=z=x+3等价z=x+3,y=y+z*/    printf(" y=%d\t z=%d\n",y,z);    x=y=z=1;    --x&&++y||z++;               /*混合的逻辑与和逻辑或运算*/    printf(" x=%d\t y=%d\t z=%d\n",x,y,z);  }  程序运行结果:     x=0     y=4  z=3     x=0  y=1 z=2 摘自 letthinking的专栏 C语言学习笔记(五)--顺序程序设计   1语句概述   1.1普通表达式语句:表达式后加分号就是一个表达式语句,语句与表达式不同,是无值的,而表达式是有值的。   1.2流程控制语句:流程控制语句主要用来控制程序执行走向,以实现程序的各种结构方式,它有特定的关键字等,主要分为分支和循环两种。   分支流程控制语句:if、switch。   循环流程控制语句:for、while、do while。   1.3跳转语句:跳转语句的作用主要是让程序从正常执行的走向中跳转到其它部分,常见跳转语句如下   间断语句:break、continue。   转向语句:goto。   Return语句:return。   1.4复合语句:由一些语句组成,放在一个大括号中形成一个整体,句型如下:   {   语句1;   语句2;   ......   语句n;   }   C语言语法规定,复合语句作为一条语句来处理。   例子代码:     #include "stdio.h"  main(){    int a=11,b=21,c=31;    printf("a=%d\tb=%d\tc=%d\n",a,b,c);    { int b=22;                 /*复合语句开始*/      float c=3.3;      printf("a=%d\tb=%d\tc=%f\n",a,b,c);      a=b;    }                         /*复合语句结束*/    printf("a=%d\tb=%d\tc=%d\n",a,b,c);  }  输出结果如下:   a=11 b=21 c=31   a=11 b=22 c=3.300000   a=22 b=21 c=31   上面的代码可以和下面的代码对比运行:     #include "stdio.h"  main(){    int a=11,b=21,c=31;    printf("a=%d\tb=%d\tc=%d\n",a,b,c);    { int a=1;  int b=22;                 /*复合语句开始*/      float c=3.3;      printf("a=%d\tb=%d\tc=%f\n",a,b,c);      a=b;     }                         /*复合语句结束*/    printf("a=%d\tb=%d\tc=%d\n",a,b,c);  }  程序运行结果:   a=11 b=21 c=31   a=1 b=22 c=3.300000   a=11 b=21 c=31   可以看到,在复合语句中声明的变量只在复合语句中起作用。   1.5空语句:空语句一般指只有一个分号占位,一般用在程序设计初期,表示待编写的函数或代码。   1.6各种语句整体介绍:     #include "stdio.h"  main(){    int a=10,b=20,c;                 /* 声明语句*/    if(b>a)                         /*控制语句  */    {;                              /* 复合语句  */     c=a+b; ;                       /* 表达式语句  */     printf("%d",c);                  /*函数调用语句  */      }    else    ;                               /* 空语句*/  }  2库函数的调用与输入输出的关系   2.1标准的库函数是存放在函数库中的,因此使用时必须要告知计算机,说明函数库属于哪个库,此过程为函数的声明,例如:   #include "math.h"  /*标准数学函数的声明*/   Main(){   ...   y=sin(x); /*库函数的调用*/   ...   }   Include是C语言中的特定字,是包含的意思,包含的文件一般为.h,称头文件。   2.2在C语言中提供了一些输入输出的标准库函数,例如printf和scanf,使用时必须将函数库的头文件stdio.h包含进程序中。   3格式化输出   3.1printf函数:它的作用是向终端输出数据。   函数格式:printf("格式控制语句",输出项1,输出项2,......);   例如:printf("%f",j); 输出浮点类型的变量j,%f为控制符。   常见的格式控制符:   %d--十进制整型,%o---八进制无符号整型,%f输出实数,%s--字符串,%c--输出单个字符等。   4字符输出   4.1字符输出可以利用putchar函数,在stdio.h中已经定义。   例子代码:     #include "stdio.h"  main(){    char a,b,c;    a='C';    b='A';    c='T';    putchar(a);    putchar(b);    putchar(c);    putchar('\n');    putchar('\101');    putchar('B');    putchar('c');  }  注:该函数不能输出两个或两个以上的字符数据。   5格式化输入   5.1scanf函数:作用是从键盘获取数据,格式化后再赋值给变量。   调用形式:scanf(格式控制语句,输入项);   /********************************************************************* 6字符输入   6.1getch()和getche()函数:功能都是读入一个字符。   两者的区别是:getch()函数不将读入的字符回显到屏幕上,getche()却显示。   例子代码:     #include<stdio.h>  main()  {    char c,ch;    c=getch();                 /*从键盘上读入一个字符不回显送给字符变量c*/    ch=getche();               /*从键盘上带回显的读入一个字符送给字符变量ch*/    putchar(c);                /*输出该字符*/    putchar(ch);  }  6.2getchar()函数:作用是从终端输入一个字符。getchar函数将空格符、制表符、和换行符都作为有效字符录入。   例子代码:     #include "stdio.h"  main()  { char c1,c2;    c1=getchar();    c2=getchar();    putchar(c1);    putchar(c2);  }  ***********************************************************************/ 7顺序程序设计   例一:计算一元二次方程的根。   代码:     #include "math.h"  main()  {    double a,b,c;                   /*声明系数*/    double x1,x2,p;    printf("pleaseinputa,b,c:");    scanf("%lf%lf%lf",&a,&b,&c);      /*输入系数*/    printf("\n");    p=b*b-4*a*c;                   /*p存放判别式的值*/    x1=(-b+sqrt(p))/(2*a);            /*计算方程的根*/    x2=(-b-sqrt(p))/(2*a);    printf("x1=%f,x2=%f\n",x1,x2);    /*输出结果*/  }  例二:两位整数倒序。   代码:     #include <stdio.h>  main()  {    int m,n;    printf("inputm(10-99):");    scanf("%d",&m);    printf("\n");    n=m%10;    m=n*10+m/10;    printf("m=%d\n",m);  }    C语言学习笔记(六)--分支程序设计 1使用if语句设计选择程序:if语句一般分为两种方式:单条件单分支、和单 条件双分支if语句。   1.1单条件单分支的if语句一般语法:   If(表达式A){   语句B;   }   语句执行流程:首先执行表达式A,如果表达式A的值非0,则执行语句序列B,然后流程继续往下执行。   例子代码:     #include "stdio.h"  main(){  double score;  printf("input the score:");  scanf("%lf",&score);  if(score>=60)/*成绩开始判断*/  printf("\npass!\n");  printf("programming is over!\n");/*和判断语句并列的下一条语句*/  }  1.2单条件双分支的语法格式:   If(表达式A){   语句B;   }else{   语句C;   }   语句执行流程:首先执行表达式A的运算,如果表达式A的值非0,则执行语句B,条件不成立则执行C。   例子代码:     #include "stdio.h"  main()  {  double score;  printf("input the score:");  scanf("%lf",&score);  if(score>=60)/*成绩开始判断*/  printf("\npass!\n");/*及格说明分支*/  else  printf("fail!\n");  printf("programming is over!\n");/*和判断语句并列的下一条语句*/  }  2嵌套的if语句   2.1嵌套常用格式:   第一种:   If(表达式)   {语句}   else if(表达式)   {语句}   第二种:   If(表达式)   {语句}   else if(表达式)   语句   else   语句   例子代码:     #include "stdio.h"  #include "math.h"  void main()  {int a;   scanf("%d", &a);   if(abs(a)<10)    printf("%dis one bit.\n",a);   else if(abs(a)<100)         printf("%dis two bit.\n",a);        else if(abs(a)<1000)         printf("%dis three bit.\n",a);            else if(abs(a)<10000)                 printf("%dis four bit.\n",a);                else if(abs(a)<32767)                     printf("%dis five bit.\n",a);                    else                     printf("thenumberistoolarge\n");  }  3.用switch分支设计选择程序   3.1语法形式:   Switch(表达式){   case 整型常量表达式1:语句;[break;]   case 整型常量表达式1:语句;[break;]   case 整型常量表达式1:语句;[break;]   [default]:语句;   }   注:[]里是可省略的。   3.2语句的执行流程:根据switch表达式的值,确定语句的执行入口,自上而下用表达式的值与case的值比较,相等就执行case后面的语句,如果语句结尾含有break,就中断switch,否则就继续执行下一个case,如果没有与表达式相匹配的值,就执行default后的语句。   switch的表达式可以为任意类型,但运算结果必须是整型或字符型。   例子代码:     #include "stdio.h"  main()  {int score;   printf("score=");   scanf("%d",&score);  switch((int)(score/10))             /*整型量之间的除法,结果仍为整型*/  {    case 10:    case 9:printf("YourgradeisA\n");break;    case 8:printf("YourgradeisB\n");break;    case 7:printf("YourgradeisC\n");break;    case 6:printf("YourgradeisD\n");break;    default:printf("YourgradeisE\n");  }  }  switch语句也可以嵌套,break只能让程序跳出它所在的switch分支。   例如:   switch(n1){   case 1:   switch(n2){   case 11:......;   }   case 2:.....;   }   4.分支程序设计实例   4.1判断年份是否为闰年。     #include "stdio.h"  main(){  int year;  printf("input the year:");  scanf("%d",&year);  if((year%4 == 0) && (year%100 != 0))  printf("该年是闰年\n");  else if(year%400 == 0)  printf("该年是闰年\n");  else  printf("该年是平年\n");  }  4.2计算天数:     #include"stdio.h"  main()  {   int day,month,year,sum,leap;   printf("\nplease input year,month,day\n");   scanf("%d%d%d",&year,&month,&day);   switch(month)                             /*先计算某月以前月份的总天数*/   {    case 1:sum=0;break;    case 2:sum=31;break;    case 3:sum=59;break;     case 4:sum=90;break;    case 5:sum=120;break;    case 6:sum=151;break;    case 7:sum=181;break;    case 8:sum=212;break;    case 9:sum=243;break;    case 10:sum=273;break;    case 11:sum=304;break;    case 12:sum=334;break;    default:printf("data error");break;   }   sum=sum+day;                               /*再加上某天的天数*/   if(year%400==0||(year%4==0&&year%100!=0))   /*判断是不是闰年*/     leap=1;   else     leap=0;   if(leap==1&&month>2)                         /*如果是闰年且月份大于2,总天数应该加一天*/   sum++;   printf("It is the %dth day.",sum);  }      1循环语句   1.1循环语句主要包括三种:while、do-while、for。   2while语句处理循环   2.1while语句基本形式:   While(表达式)   {循环体语句}   2.2执行流程:首先计算while表达式的值,当非零时执行循环体内的语句,执行完之后继续判断while表达式的值,如果非零,继续执行循环体,直到表达式值为零时,跳出循环,执行后续的语句。   例子代码:     <
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服