选择排序:如下所示:
#include<stdio.h>
#define N 10
void main()
{
int a[N],i,j,min,t;
printf("输入数");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(j=1;j<N;j++)
{
min=j-1;
for(i=j;i<N;i++)
{
if(a[min]>a[i])
{
min=i;
}
}
if(min!=j-1)
{
t=a[min];
a[min]=a[j-1];
a[j-1]=t;
}
}
printf("输出拍好的数 :");
for(i=0;i<N;i++)
printf("%d\n",a[i]);
}
冒泡排序如下所示:
#include<stdio.h>
#define N 10
void main()
{
int a[N],i,j,t;
printf("输入数");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(j=1;j<N;j++)
{
for(i=0;i<N-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
printf("输出拍好的数 :");
for(i=0;i<N;i++)
printf("%d\n",a[i]);
}
循环结构:
For
#include<stdio.h>
void main()
{
int a[10][10],i,j;
//处理第一列和对角线
for(i=0;i<10;i++)
a[i][0]=a[i][i]=1;
//处理其他列
for(i=0;i<10;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
}
While
#include<stdio.h>
void main()
{
intf1=1,f2=1,f3,s=0,n=3;
s=f1+f2;
printf("%d %d ",f1,f2);
while(n<=10)
{
//f3指当前项,f2指f3的前一项,f1指f3的前两项
f3=f1+f2;
s=s+f3;
printf("%d ",f3);
n++;
f1=f2;
f2=f3;
}
printf("\n前10项之和:%d ",s);
}
do -while
#include<stdio.h>
void main()
{
int i,s=0;
i=0;
do
{
s=s+i;
i++;
}while(i<=100);
printf("%d",s);
}
数组:
一维:
Int a [N] 数组:储存数。
a[5]={a[0],a[1],a[2],a[3],a[4],a[5]}
二维:
Int a[N][M]:N表示行;M表示列:
Int a[4][4]:表示
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
a[3][0] a[3][1] a[3][2] a[3][3]
指针:
是一个门牌的指向:如 a=11;*p=&a
p→a 10;
相当于p=a;
使用指针操作数组:
*p=&a[0];