学习C语言的第3天

时间:2022-11-02 22:58:46

//dengfenfa

int main()

{

char arr[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};

int i;

int sz = sizeof(arr)/sizeof(arr[0]);

int k = 14;

int left =0;//左下标

int right =sz-1;//右下标

// printf("mid%d\n",mid);

// printf("left%d\n",left);

// printf("right%d\n",right);

while(left<=right)

{

 int mid  =(left + right)/2;

 if(arr[mid] > k)

 {

  right = mid -1;

 }

 else if(arr[mid] < k)

 {

  left = mid+1;

 }

 else

 {

  printf("找到了,下标是%d\n",mid);

  break;

 }

}

if(left>right)

{

 printf("找不到");

}

return 0;

}


int main4()

{

//在数组中找到 a 所对应的下标

char arr[] = {0,1,2,3,4,5,6,7,8,9};

int a = 9;

int i;

int sz = sizeof(arr)/sizeof(arr[0]);//求数组的个数

for(i=0;i<sz;i++)

{

 printf("%d\n",arr[i]);

 if(arr[i] == a)

 {

  printf("找到了,下标是%d\n共找了 %d 次\n",i,i+1);

  break;

 }

}

if(i == sz)

 printf("找不到");

else

 printf("找得到");

return 0;

}




int main3()

{

//1*1 + 2*1 + 3*2*1 + 4*3*2*1 ...+ 10*9*8*7*6*5*4*3*2*1

int ret = 1;

int n;

int i;

int num;

for(n=1;n<=10;n++)

{

 ret = ret*n;

 num += ret;

}

printf("%d\n",num);

return 0;

}




int main2()

{

//n *n-1...*5 *4 *3 *2 *1

int ret = 1;

int n;

int i;

system("cls");

printf("求乘阶n的乘阶\n请输入n ");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

 ret = ret*i;

}

printf("n的乘阶=%d\n",ret);

return 0;

}

int main1()

{

//---------------------------------------------------------------

int n;

int i,j;

scanf("%d",&n);

for(i=0;i<=n;i++)

{

 for(j=0;j<=i;j++)

 {

  if(i==0||j==0)

   continue;

  printf("%d",i);

  printf("*%d=%d  ",j,i*j);

 }

 printf("\n");

}

//---------------------------------------------------------------

return 0;

}

int mai11()

{

int x,y;

int a = 0;

int b = 0;

int i = 0;

int z,zz;

for(i = 0;i<10;i++)//建议采用"前闭后开区间"的写法。

{

 if(5 == i)//不在for循环体内改变循环变量,防止for循环失去控制。

  printf ("hehe\n");

 printf("haha\n");

}

for(;a<10;a++)

 for(;b<10;b++)

  printf("qqq\n");

 

for(x = 0,y =0;x < 2 && y < 5;++x,y++)

 printf("aaa\n");

 

//---------------------------------------------------------  

for(z=0,zz=0;z=0;z++,zz++)//0为假  不循环

{

 z++;

 printf("z\n");

}

//------------------------------------------------------------

//1-10

int l = 1;

//执行再判断

do

{

 printf("%d\t",l);

 //if(l == 9)

 //{

 // l++;

 // printf("%d\t",l);

 //}

 l++;

}

while(/*l<10*/l<=10);

return 0;

}



int maPP()

{

int i;

//初始化  判断 调整

for(i = 1;i<=10;i++)

//  1      2     3

{

 printf("%d ",i);

//   4          1->2->4->3

}

return 0;

}