int i;
int arr[]={1,2,3,4,5,6};
printf("%d\n",sizeof(arr));
printf("%d\n",sizeof(arr)/sizeof(arr[0]));
冒泡排序,一次排好一个数
#include<stdio.h>
#include<stdlib.h>
#define N 10
static void sort1(void)
{
int tmp;
int a[N] = {12,8,45,10,98,67,2,7,68,11};
for(int i = 0;i<(N-1);i++)
{
for(int j = 0; j< N-1-i;j++)
{
if(a[j]> a[j+1])
{
tmp = a[j+1];
a[j+1]= a[j];
a[j]= tmp;
}
}
}
for(int i = 0;i<N;i++)
printf("%d",a[i]);
}
int main(){
sort1();
exit(0);
}
选择排序 同样也是一次一个数,但有些不一样, 每次定位都定位在最小的数组下标后交换。
#include<stdio.h>
#include<stdlib.h>
#define N 10
static void sort2(void){
int i,k,j,tmp;
int a[N] = {12,8,45,10,98,67,3,7,68,11};
for(i = 0;i< sizeof(a)/sizeof(a[0]);i++)
printf("%d ",a[i]);
printf("\n");
for(i =0 ;i<N-1;i++){
k = i;
for(j = i+1;j < N;j++){
if(a[j]<a[k]){
k = j;
}
}
if(i != k){
tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
for(i = 0;i< sizeof(a)/sizeof(a[0]);i++)
printf("%d ",a[i]);
printf("\n");
}
int main(){
sort2();
exit(0);
}
进制转换
static void base_convert(void)
{
int num,base;
printf("please enter the cpnverted num:");
scanf("%d",&num);
printf("please enter the base:");
scanf("%d",&base);
do
{
n[i] = num%base;
num = num/base;
i++;
}while(num ! =0);
for(i--; i>=0;i-- )
{
if(n[i]>=10)
printf("%c",n[i]-10 +'A');
printf("%d",n[i]);
}
printf("\n");
}
删除法求质数 删除i 的整倍数
当 i = 2 时,我们从 j = 2 * 2 = 4 开始,每次增加 i = 2,标记 4、6、8、10、12、14、… 等数为非质数;
当 i = 3 时,我们从 j = 3 * 2 = 6 开始,每次增加 i = 3,标记 6、9、12、15、… 等数为非质数;
当 i = 5 时,我们从 j = 5 * 2 = 10 开始,每次增加 i = 5,标记 10、15、20、… 等数为非质数;
以此类推,直到 i = 1000 结束循环。这样,我们就将所有非质数标记了一遍,剩下的就是质数。
static void primer(void)
{
char primer[1001] = {0};
for(i = 2;i<1001;i++)
{
if(primer[i]==0)
{
for(j = i*2;j<1001;j+=i)
primer[j]=-1;
}
}
for(i=2;i<1001;i++)
if(primer[i]==0)
printf("%d is a pimer \n.",i);
}