1.选择控制结构
何为“选择”,相信大家都知道,就好比抛硬币,要么正要么反,你想把它编成一条程序,需要判断它是正还是反,如果是正,执行正的操作,如果是反,执行烦的操作。这是我个人理解的“选择”。
选择语句
if
if(expression)
statement;
or
if(expression)
{
Statement1;
Statement2;
}
还存在双分支控制的条件语句(if else ),双分支正好符合我们上面举得例子抛硬币。在一个“选择”中包含两部分,成立和不成立,这时双分支就是最适合的条件语句。
多分支控制的条件语句(例如if if if or if else if else),if else if else这就相当于把一个圆切下一块,再切一块,剩下的部分再作为一块,满足那个条件,就用那一块。
switch()
格式
switch()
{
case value1:
statement1;
break;
case value2:
statement2;
break;
……
default:
statement X;
break;
}
2.循环结构
循环结构有三种for、while、do-while。
格式(下面的缩进可能无法展现出来,见谅)
while的格式:
while(循环条件)
循环体;
while(循环条件)
{
循环体;
}
do-while的格式:
do
{
循环体;
}while(循环条件);
注意:for和while语句循环条件之后一般没有分号,有分号表示循环体就是分号前的内容,如果for和while循环条件后加分号就会产生空语句(循环体内什么都不做),而do语句的最后必须用分号(;)作为语句结束。
if的格式:
if(初始化循环变量;循环条件;更新循环变量)
循环体;
if(初始化循环变量;循环条件;更新循环变量)
{
循环体;
}
break语句
break的作用:结束switch语句和循环语句的执行,转到后续语句。
continue语句
作用:在循环体中结束本次循环,直接进入下一次循环。
数组的排序
选择排序,冒泡排序和插入排序
选择排序
for(j=0;j<n-1;j++)
{ l=j;
for(i=1;i<n;i++)
if(a[l]<a[i])
l=I;
if(l!=j) i=a[l],a[l]=a[j],a[j]=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;}
插入排序
for(int i=1;i<sum;i++)
{
l=i-1;temp=a[i];
while(l>=0&&a[l]>temp)
{
a[l+1]=a[l];
l--;
}
a[l+1]=temp;
}
字符串的输入和输出
输入
(1)scanf语句
格式:scanf(“%s”,字符数组名);
(2)gets语句
格式:gets(字符数组名);
scanf与gets的区别
scanf可以输入多个字符串,而gets只能输入一个字符串,但scanf在输入空格时停止,而gets在输入回车时停止。
例如:scanf(“%s”,s1);
gets(s1) ;
输入Let us go时,第一个是输入Let,而第二个输入了Let us go。
输出
(1)printf语句
格式:printf(“%s”,字符数组名);
(2) puts语句
格式:puts(字符串名称);
puts语句输出一个字符串和一个换行符。