11.23作业 最大公约数 9的个数 乘法表 猜数字游戏 二分查找有序数组

文章介绍了几种编程中的基本算法,如求最大公约数的辗转相除法,检查1~100中含有9的数字数量,生成乘法表格,猜数字游戏以及二分查找有序数组的实现。

##最大公约数

{  //是求最大公约数的经典方法,具体步骤如下:

//1. 将两个数中较大的数除以较小的数,得到商和余数;

//2. 将较小的数和余数再次做除法,得到商和余数;

//3. 重复上述过程,直到余数为0,此时较小的数就是最大公约数。辗转相除法简单易懂,但对于较大的数来说,计算次数较多

//例如,求(319,377):

//∵ 319÷377=0(余319)

//∴(319,377)=(377,319);

//∵ 377÷319=1(余58)

//∴(377,319)=(319,58);

//∵ 319÷58=5(余29)

//∴ (319,58)=(58,29);

//∵ 58÷29=2(余0)

//∴ (58,29)= 29;//

//∴ (319,377)=29。//

#include <stdio.h>

int main()

    int a,b,min,max,res;

    scanf("%d %d",&a,&b);

    if(a>b)

    {

        min=b;

        max=a;

    }

    else

     {  min=a;

        max=b;

     }

     res=1;

    while (res!=0) {    

       

        res=max%min;

        if(res!=0)

        {   max=min;

            min=res;

        }



    }

    printf("最大公约数为 %d",min);

     return 0;

    }

##1~100含有9的数字个数有

#include <stdio.h>

int main()

{   int  i;//个位上%10==9  十位上/10==9

    int  a=0;

printf("含有9的数字有:");



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

     {  

         if(i%10==9||i/10==9)

         {

            printf("%d ",i);

            a++;

         }

       

     }

    printf("含有9的数字个数有:%d",a);

     return 0;

    }

乘法表格

#include <stdio.h>

int main()

{  int m,n;//行和列

  for(m=1;m<=9;m++)

  {

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

      {



          printf("%d * %d= %d ",m,n,(m*n));

          if(n==m)

          {

              printf("\n");

          }

      }

  }

     return 0;

    }

 

猜数字游戏 

随机数的生成

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

  srand((unsigned)time(NULL));

    int n=rand()%100;//利用余数来控制范围

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{  //猜数字游戏

   //随机数的生成

    srand((unsigned)time(NULL));

    int n=rand()%100;//利用余数来控制范围

    int a,b;

    printf("请输入一个数范围在0~99:");

    scanf("%d",&a);

    while(a!=n)

    {



        if(a>n)

        printf("猜大了\n");

        if(a<n)

        printf("猜小了\n");

        printf("请再输入一个数:");

        scanf("%d",&a);

    }

  printf("good!");

  return 0;

   

    }

二分查找有序数组

// int mid =left+(right-left)/2;防止溢出   

#include <stdio.h>




int main()

{  //二分查找有序

int a[10]={1,2,3,4,5,6,7,8,9,10};

int b;

int i=0;

printf("你想找哪个数字:");

scanf("%d",&b);

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

int right=sz-1;

int left=0;



while (right>=left)

{  

     //int mid =(right+left)/2;

     int mid =left+(right-left)/2;防止溢出
    if (a[mid]>b)

{

    right=mid-1;

   

}

else if (a[mid]<b)

{

    left=mid+1;

   

}

else

{

    printf("i find it ,it was num.%d",mid+1);

    break;

}

}



if (left>right) {

printf("sir ,i cant find it");

}



  return 0;

   

    }


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值