今天所学代码 打印求出千位里的9的数量

#define    _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
    
    int cut = 0;                                          //定义一个变量  计算累加次数
    for (int i = 1; i < 1000; i++)                           //千循环
    {
        
            if (i%10== 9 || i/10 ==9 || i / 100 == 9 || i % 100/10 == 9)
                    {                                             i的值对10求余得到个数 

                                                                  i的值对10做除数得到 十位

                                                                  i的值对100求余得到百位数 

                                                                   i的值对100求余再除以10得到白位数
                        printf("%d  ", i);
                        cut++;
                    }
        
            
    }
    printf("\n一共有%d个", cut);
    return 0;
}

找下标的两种方法 :

一个是循环    一个是二分查找法    前提条件  必须是排完顺序的数组
 

#define    _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9 ,10 };                  //数组
    int t=0;
    scanf("%d", &t);                                  //输入查找的数字

    int att = sizeof(arr) / sizeof(arr[0]);           //求字符的个数

    int find=0;                                             哨兵
    for (int i = 0; i < att; i++)                 有几个循环数字 就循环多少次
    {
        if (t == arr[i])                      如果输入的数字等于循环体的下标
        {
            printf("找到了下标是%d", i);       那么就打印出来下标  结束循环
            find = 1;
            break;                                                                   
        }
    
    }
    if (find == 0)
    {
        printf("没找到下标");
    }
}

第二种方法是:二分查找法

所有程序比第一种方法 都要快

#define    _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{

    int arr[] = {1,2,3,4,5,6,7,8,9 ,10};                  定义一个数组
    int k=0;                                                            输入一个值
    int sz = sizeof(arr) / sizeof(arr[0]);                        计算数组的个数
    printf("请输入你要查找的数字\n");    
    scanf("%d", &k);                                     输入一个值

    int lef = 0;                                              设置最小值
    int rig =sz - 1;                                            最大值
    int find =0;                                    
    while (lef <= rig)                  如果 最小值 小于等于最大值   那么就继续循环
    {

            int mid = (rig + lef) / 2;       中间值
            if (arr[mid] < k)                                 如果中间值小于输入的数字
            {
                 lef= mid + 1;                        中间值就会往前面进一位
            }
            else if (arr[mid] > k)                            如果中间值大于输入的数字
            {
                rig = mid - 1;                                  中间值就会往后面退一位
            }
            else
            {
                printf("恭喜你找到了,下标是%d", mid);
                find = 1;
                break;
            }
     }
    if (find == 0)
    {
        printf("没找到,不好意思");
    }
}

函数的调用

#define    _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void bianli(int arr[], int sz)                  
{
    for (int i = 0; i < sz; i++)
    {
        arr[i] = -1;
    }
}
void daying(int arr[], int sz)
{
    for (int i = 0; i < sz; i++)
    {
        printf("%d\t", arr[i]);
    }
}
int main()
{

    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };                            定义一个数组
    int sz = sizeof(arr) / sizeof(arr[0]);                               求数组的个数
    daying(arr, sz);                                                          引用函数
    printf("\n");
    bianli(arr, sz);                                                              改变函数
    daying(arr, sz);                                                                  打印函数

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值