求[a,b]的闭区间内(a和b为正整数),数字“3”出现的次数

求[a,b]的闭区间内(a和b为正整数),数字“3”出现的次数,例如,在[3,33]中,3,13,23,30,31,32,33中都有数字“3”,共出现7次。编程要求:第一行输入a与b的值,第二行输出结果。
例子:
3 33
7
这个用c语言怎么写

#include <stdio.h>

int main()
{
    int a, b, count = 0;
    scanf("%d %d", &a, &b);
    
    for(int i = a; i <= b; i++) {
        int n = i;
        while(n > 0) {
            if(n % 10 == 3) {
                count++;
            }
            n /= 10;
        }
    }
    
    printf("%d", count);
    return 0;
}


参考GPT和自己的思路:用C语言可以这样写:

#include<stdio.h>

/*函数:countNumbersInRange
 *功能:统计闭区间[a,b]中数字“3”的个数
 *参数:a——区间左端点,b——区间右端点
 *返回值:数字“3”的个数
 */
int countNumbersInRange(int a, int b)
{
    int count = 0; //计数器初始化为0
    int i;
    for(i = a; i <= b; i++)
    {
        int j = i;
        while(j)
        {
            if(j % 10 == 3) //如果个位上是数字“3”
            {
                count++; //计数器加1
                break; //跳出当前的while循环,继续for循环
            }
            j /= 10; //将数字j往右移一位
        }
    }
    return count; //返回数字“3”的个数
}

int main()
{
    int a, b;
    scanf("%d%d", &a, &b); //先输入闭区间左端点a和右端点b
    printf("%d", countNumbersInRange(a, b)); //输出数字“3”的个数
    return 0;
}

代码中的countNumbersInRange函数用于统计闭区间[a,b]中数字“3”的个数。

对于每个整数i(从a遍历到b),用while循环逐个分离数字,检查个位上是不是数字“3”;如果是,计数器加1,并跳出当前的while循环,继续下一个整数i的遍历。

最终,countNumbersInRange函数返回数字“3”的个数,这个结果会被main函数输出。

请注意,在输入闭区间左端点a和右端点b之后,程序会直接调用countNumbersInRange函数并输出结果,因此在程序中并没有使用第二行输入输出数据的语句。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7807596
  • 这篇博客也不错, 你可以看下被严重低估了的3个框架:可能是应用程序的最佳解决方案
  • 除此之外, 这篇博客: C语言简单算法之计算分段函数,A除以B,阶梯电价,出租车计价中的 2.题目二A除以B 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1.实验代码

    #include<stdio.h>
    int main()
    {
      int A,B;
      double C;
      scanf("%d %d", &A, &B);
      C = (double)A / B;
      if (B > 0)
        printf("%d/%d=%.2f",A,B,C);
      if (B < 0)
        printf("%d/(%d)=%.2f",A,B,C);
      if (B == 0)
        printf("%d/%d=Error",A,B);
      return 0;
      
    }
    

    2.设计思路
    (1)第一步 理解题目 ,知道A/B需要输出三种情况 ,B>0,B<0及B=0
    第二步 输出结果需保留两位小数,输入的A,B值均为整数,因此定义两个整数和一个浮点数A,B和C
    第三步 打出基本框架
    第四步 根据要求定义用if分别写出三种不同情况,输出数值C的算法
    第五步 依次输出结果
    (2)流程图

    3.本题遇到的困难及解决方法
    遇到的困难:先定义c的算法,后初始化了,初始化时忘记打&,浮点运用错误。定义c的算法时没打double
    解决的方案:流程及编译问题通过自己的观察解决,定义c的算法时打double请教了同学,开始并不知道需要打




    4.运行结果



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^