您的位置:首页 > 编程语言 > C语言/C++

C语言学习阶段性总结

2019-01-04 15:42 148 查看

大一第一学期c语言学习总结
一. 程序结构与数据类型

  1. 最开始的程序
    自己写出的第一个程序,输出“Hello,Word!”。
  2. 简单的程序构成:
    第一部分:预处理命令数据类型定义或全局变量定义函数声明。
    第二部分:主函数
    注:一个c或c++程序不论包含几个函数,主函数只有一个。
    第三部分:其他函数定义。
    第四部分:程序代码。
  3. 程序风格:
    C与c++中,c++的风格更加具有层次感,读起来更加流畅,在编写时也更加方便。
  4. 数据类型:数据有着许多类型,如:单精度(float)、整型(int)、双精度(double)、字符(char)等。
  5. 数据类型代换:如输入为整型数据,而输出时需要单精度数据,需要在运算式前面加上需要带换成的数据类型,如:
    int a;
    b=(float)a/2;

二. 输入输出
c++中有多种输入输出形式,数值与字符之间也有着不同的输入输出形式,例如:字符输入char/getchar,数据输入cin与input。输出也有着不同的输出形式,如:cout,printf等

  1. 输入:cin输入时需要在之前确定输入的数据类型。
  2. 输出:cout的输出与cin时相通的,printf的输出则需要在输出时的括号里面注明输出的数据类型
    %c character以字符形式输出单个字符
    %s string 输出一个字符串
    %d decimal 以带符号十进制整数输出
    %f float 以小数形式输出浮点数(6位小数)
    %e exponent 以标准指数形式输出(6位小数)
    %g 选用%f,%e中输出宽度较小的一种格式
    %o octal 以八进制无符号整数输出(无前导0)
    %x hex 以十六进制无符号整数输出(无前导0x)
    %u unsigned 以十进制无符号整数输出

三. 分支语句
(1)if与else的分支语句:执行流程为在执行至if是根据其后面的条件,如果满足,则执行if中的语句,若不满足后面的条件。则跳过,看是否满足下一条件,直至输出。
感悟:在编写较为复杂的if语句时,需要时刻保持清醒,在编写之前,需要想好并写出之间的逻辑关系,在if中套写if语句时,需要更加仔细认真,在一开始时没有写程序前构思的习惯,所以一开始经常会出现逻辑错误导致程序无法运行。
(2)swich语句:用于多路选择,相当于一系列的if-else语句,被测试的表达式写在关键字后面的圆括号中,表达式只能是char型或int型,因此所谓swich语句的使用受到限制,基本形式为、
switch (expression)
{
case 变量1 :
可执行语句1;
break;
case 变量2 :
可执行语句2;
break;
……
default :
可执行语句X;
break;
}

四. 循环语句
1.循环语句类型:for循环、while循环、do-while循环,其中最常用的即为for循环,三者的格式也不相同
(1).for循环
结构:for(初始表达式;循环控制表达式;增值表达式)
{
执行语句
}
或for(初始表达式;循环控制表达式;增值表达式)
执行语句;(该模式下只可以执行一条语句)
(2).while循环
结构:初始表达式
while(循环控制表达式)
{
语句序列;
增值表达式;
}
注:1*.while循环的括号中可包含多个语句,用逗号分开。
2*.此形式可与上面的for循环等价。
(3).do-while循环
结构:do
语句;
While(条件表达式)
或do
{
语句1;
语句2;
………
}
while(条件表达式)
注: 1).与前面两个语句同,在满足条件表达的时候跳出循环,并非不满足时跳出循环
2).do-while最少执行一次循环。
2.循环类型
1).计数控制的循环(用数字控制循环的结束)
循环次数受数值的限制,三者都可用,若控制循环的数值不变,无论输入任何值,循环次数不变,但可以由输入的量来控制循环的次数
特点:在已知循环次数的前提下进行的运算,可以通过输入的值来确定循环次数。
2). 条件控制的循环:(以特定条件来限制循环的次数)
循环次数受到条件的限制,与break或continue语句连用,即可做到控制循环内运算是否进行与循环是否进行。
3). 嵌套循环(循环中存在循环)*本小结难点
顾名思义,循环中嵌套循环,在一个发生条件下输出一许多不同或相同的值,可以控制输出内容为可控制边长和内含物的几何图形。
3. 控制语句
现阶段学习的循环控制语句只有break与continue两种。
break语句为跳出循环,无论有几层嵌套循环,都会跳出直接运行循环之外的内容,在与条件控制语句if连用时可以达到满足某条件即可跳出循环的目的。
continue语句为返回此循环的最前方,从循环开头来运行,也可以与条件语句if相连用,来达到某个条件是否进行循环运算的目的。

五. 数组,字符串数组是个难点
㈠定义并初始化字符数组
存放5个字符char a[5]={‘a’,‘b’,‘c’,‘d’,‘e’};
存放1个字符串
char a[5]={‘a’,‘b’,‘c’,‘d’,’\0’};
char a[5]=“abcd”;
二维数组初始化
char a[3][4]={“abc”,“cvx”,“rty”}
㈡输入字符串
①scanf("%s",字符串名称);
scanf("%s%s%s",s1,s2,s3);
输入多个字符串时,以空格分离.
②gets语句
gets(字符串名称);
只能输入一个字符串.
从光标开始到换行符也就是说读入的是一整行.
例如输入Hello World!获取的是Hello World!
㈢输出字符串
① printf("%s",字符串名称);
② 输出项只能是字符串名称,不能是数组元素。
输出字符串不包括字符串结束标识符’\0’。
③ puts语句
puts(字符串名称);
puts语句输出一个字符串和一个换行符。
六. 函数
函数对形参做处理,结果以return语句形式返回。对函数定义时要加函数类型和实参类型,但函数调用时实参不带类型。
七.补充内容,数组排序
㈠交换排序
int i,j,temp,n,a[1000];
for(i=0;i<n–1;i++)
for(j=i+1;j<n;j++)
{
if(a[j]>a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
㈡选择排序(效率较高)
int i,j,k,temp;
for(i=0;i<n-1;i++)
{
k=1;
for(j=i+1;j<n;j++)
{
if(a[j]>a[k])//按数组a的元素值从高到低排序
{
k=j;//记录最大数下标位置
}
}
if(k!=i)//若最大数所在的下标位置不在下标位置i
{
temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
㈢插入排序
int i,l,temp,a[num];
for(i=1;i<num;i++)
{
l= i-1;temp=a[i];
while(l>=0&&a[l]>temp)
{
a[l+1]=a[l];
l–;
}
a[l+1]=temp;
}
}
㈣冒泡排序
int a
,t;
for (int i=1; i<=n; ++i)
cin>>a[i];//输入十个数
for (int j=1; j<=n-1; ++j)//冒泡法排序
for (int i=1; i<=n-j; ++i)//两两相比较
if (a[i]<a[i+1])//比较与交换
{
t=a[i]; a[i]=a[i+1]; a[i+1]=t;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: