c语言总结

C语言期末总结

c语言的编写具有自由性和严谨性的特点。两者并不矛盾。通过一个学期的学习,解决问题的方法不止一种,同时一种方法的编写又不止一种,它的自由性由此可以体现。同时它的严谨性表现在程序的书写上,包含逻辑书写符号等,必须严谨有序。

第一章

一. 个c语言程序有且只有一个main函数,是程序运行的起点。
二.解决一个基本c问题都是按照“思考问题,编写代码,运行结果”的的顺序进行的。
三.对于一些基本标符的认识和使用,例如“define scanf printf include”等。
四.对于c有一个基本的认识和了解。

第二章

一.常见的有关输入数据的类型以及格式:

格式说明                表示内容     
  %d                   整型 Int       
  %c                   字符 Char
  %ld                  长整型 long int 
  %s                   字符串 char
  %f                   浮点型 Float    
  %lf                  浮点型 Double

二.数据类型、输入输出、运算符
根据表格内所对应的类型输入你所要的数据,如果需要赋值直接加等号即可。例如“输入两个整数,a,b”。整形应该用int,应此我们应该在主函数内定义这样的数据“int a,b;(同种数据类型不同的数据要用逗号隔开,并且在末尾用分号表示完结)”如果a,b的值为确定的我们直接可以让“a= ;b= ;”实现赋值。
如果是需要输入或者多组输入,我们可以使用输入标符“scanf”实现。同样是上个问题,我们可以scanf(“%d %d”,&a,&b);来实现a,b值的输入。
Scanf使用时注意事项:
1.每个数据都要确定其类型;
2.每个数据前必须加地址符占位(字符串除外);
3.如果多个数据用空格隔开;
三.数据的输出问题
1.使用“printf”“scanf”时候都必须加头文件

#include<stdio.h>”

2.printf可以只有一个参数也可以有两个
3.如果是字符类型可以用函数”putchar“实现输出
4.整型变量输入输出 代码实例
int id;//注释1: 整型变量——定义
printf(“请输入学生学号:”);//输出提示信息
scanf(“%d”,&id);//注释1: 整型变量——输入
printf(“您输入的学号为:%d”,id);//注释1: 整型变量——输出
printf(“\n”);//输出换行
5.自增自减运算符
int main()
{
int i=1,j,x;
printf(“%d\n”,i++);//1
printf(“%d\n”,i);//2
i=1;
printf(“%d\n”,++i);//2
j=1;
x=j++;
printf(“%d\n”,x);//1
printf(“%d\n”,j);//2
return 0;
}

第三章

一.“=”和“==”的区别:在c中,“=”表示赋值,“==”才是等号;
**二.**If条件语句,if在c中表示判断语句,一般与循环连用,用来跳出循环或者实现交换。
1.表示判断的两个符号:“&&”表示且,“丨丨”表示或;
2.在循环中一般使用“if”“break”表示跳出循环;
3.else是与最近的if语句匹配,一般用于多选一的if语句;
4.交换的程序写法:t=a;a=b;b=t;
5.If语句也可以进行嵌套;

第四章

一.三种循环结构:
1.for(;;) while() do-while()
2.For循环当中必须有两个分号的存在;
3.写程序时若用到循环一定要有结束条件,否则会变成死循环;
4.Do-while()循环的最后一个while();的分号一定不能够丢;
**二.**break和continue的差别
Break是跳出整个一层循环;continue是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新的一轮的循环;
三.循环是可以进行嵌套的,但是是从最内侧循环向外面循环执行的;
四.常见的嵌套循环:排序使用到的冒泡法:

for(i=0;i<n-1;i++)
{
For(j=0;j<n;j++)
{
   ifa[j]>a[j-1]&&j>0)
{
   t=a[j];
   a[j]=a[j-1];
   a[j-1]=t;
}
}
}

这样便实现了由大到小的排序;
五.循环也可以实现多个数据的输入,一般与数组连用;
例如:

for(i=0;i)n;i++)
{
         Printf(“%d”,a[i]);
}

六.循环的使用比较普遍,可以用来分离参量,排序等等。但是使用的时候要考虑循环的执行,尤其是循环嵌套时容易出错;
七.如果题目中出现多组测试数据:可以使用while()!=EOF来实现;

第五章

一.一维数组
数组常用来存储多个类型相同的数据,数字有数字数组,也有字符数组。
数字数组:
1.数组的定义方式:int a[];
2.数组的输入:

直接存入:int a[]={123…};
循环输入:fori=0;i<n;i++)
        {
            Scanf(“%d”,a[i]);
        }

3.在以上数组中,a表示数组名,是第一个元素的地址,也就是a[0]的地址;
4.a为地址常量不能用来运算;
二.二维数组
二维数组和一维数组类似主要针对数字及其坐标;输入时可以用循环嵌套实现输入;也可以初始定值;

第六章

一.函数的定义:是具有一定功能的一个程序块,是c语言的基本组成单位;
二.函数不可以嵌套定义,但可以嵌套使用;
三.函数的参数可以是常量,变量,表达式,甚至是函数的调用;
**四.**c语言常用的函数:

<string,h>类型的:
strlen(用来测量字符串的长度);
strcmp(用来比较两个字符串的大小);
strcpy(用来进行函数值得复制)等等        
<math.h>类型的:
pow(咏来表示次方运算);
abs/fabs(表示绝对值预算);
sprt(用来开根号运算)等等;

第七章

一.指针:指针变量的本质是用来放地址的;
二.指针的定义:int *p;
int pint *p 的差别:p* 可以当作变量来用;* 的作用就是去后面地址p里面的数据 p是当作地址来用;
三.*p++(*p)++的区别:*p++ 表示地址变化;
(*p)++ 表示地址p里面的数值变化;
四.指针变量的使用方法:
(1)使指针变量指向某个变量
(2)用间址运算(运算符为*)访问所指变量
五.总结:一维数组元素的引用方式

方式一,数组名[下标], 例如 a[0],a[1];
方式二,指针名[下标],例如 p[0],p[1];
方式三,*(指针名+下标),例如 *p,*(p+0),*(p+1);
方式四,*(数组名+下标),例如 *a,*(a+0),*(a+1);

(在C中,数组名就是第一个元素的地址,因此对数组的引用可以直接用*a表示a[0],用*(a+1)表示a[1],用*(a+2)表示a[2],用*(a+9)表示a[9]);

六. 用指针方式与用字符数组方式操作字符串的区别:
(1)存储方式不同。字符数组由若干个元素组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串首个字符的地址),决不是将字符串放到字符指针变量中。 (2)赋值方式不同。
对字符数组只能对各个元素赋值,不能用以下办法对字符数组赋值。 char str[20];
str=”Good luck!”;
而对字符指针变量,可以采用下面方法赋值:
char *str; str=”Good luck!”;
赋给str的不是字符,而是字符串第一个元素的地址。
(3)输入方式不同。
对字符数组可用如下方式赋值: char str[20];
scanf(“%s”,str);
但对字符指针变量则不建议用此方式,因为会发生指针的异常指向,正确做法为:

char *str,a[20]; 
      str=a;  //使指针有明确的指向 
scanf("%s",str); 

(4)字符指针变量的值是可以改变的,而字符数组名的值是不可以改变的。
例:

#include <stdio.h> 
int main()
 { 
   char *str="Good luck!";
   puts(str);    
   str+=5;  //ok    
 }

第八章

一.结构体:结构体用来处理多个数据的存储和命令的执行。如:多个学生的信息档案,参赛选手的个人信息等;
二.结构体的定义:

struct+结构体名称:
{

};

三.结构体的使用:定义好结构体之后可以在结构体内定义多组数组,表示不同信息:如,参赛选手的个人信息包括:编号丶年龄丶性别丶成绩等;

struct+结构体名称:
 {
        int num;
        int age;
        char sex[10];
        int score;
 };

然后再主函数内使用结构体实现数据的输入即可;

第九章

一.链表:“结构体+指针”,动态链表是指在执行过程中从无到有的建立起一个链表,即一个一个的开辟节点和输入各节点数据,并建立起前后相链的关系。

#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct studet)
struct studet
{
    int num;
    float score;
    struct studet *next;
};
struct studet *creat(void)
{
    struct studet *head,*p1,*p2;
    int n=0;
    p1=p2=(struct studet *)malloc(LEN);
    scanf("%d %f",&p1->num,&p1->score);
    head=NULL;
    while(p1->num!=0)
    {
        n=n+1;
        if(n==1)
            head=p1;
        else
            p2->next=p1;
        p2=p1;
        p1=(struct studet *)malloc(LEN);
        scanf("%d %f",&p1->num,&p1->score);
    }
    p2->next=NULL;
    return head;
}
void print(struct studet *head)
{
    struct studet *p;
    p=head;
    if(head!=NULL)
    do
    {
        printf("%d %.2f\n",p->num,p->score);
        p=p->next;
    }while(p!=NULL);
}
int main()
{
    struct studet *pt;
    pt=creat();
    print(pt);
    return 0;
}

以上是一学期对于C语言学习的总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值